| @@ -79,6 +79,7 @@ typedef struct VulkanDeviceFeatures { · 78 unmodified lines |
| 79 | VkPhysicalDeviceVulkan12Features vulkan_1_2; | 79 | VkPhysicalDeviceVulkan12Features vulkan_1_2; |
| 80 | VkPhysicalDeviceVulkan13Features vulkan_1_3; | 80 | VkPhysicalDeviceVulkan13Features vulkan_1_3; |
| 81 | VkPhysicalDeviceTimelineSemaphoreFeatures timeline_semaphore; | 81 | VkPhysicalDeviceTimelineSemaphoreFeatures timeline_semaphore; |
| | 82 | VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR subgroup_rotate; |
| 82 | | 83 | |
| 83 | #ifdef VK_KHR_shader_expect_assume | 84 | #ifdef VK_KHR_shader_expect_assume |
| 84 | VkPhysicalDeviceShaderExpectAssumeFeaturesKHR expect_assume; | 85 | VkPhysicalDeviceShaderExpectAssumeFeaturesKHR expect_assume; |
| @@ -205,6 +206,8 @@ static void device_features_init(AVHWDeviceContext *ctx, VulkanDeviceFeatures *f · 120 unmodified lines |
| 205 | | 206 | |
| 206 | FF_VK_STRUCT_EXT(s, &feats->device, &feats->timeline_semaphore, FF_VK_EXT_PORTABILITY_SUBSET, | 207 | FF_VK_STRUCT_EXT(s, &feats->device, &feats->timeline_semaphore, FF_VK_EXT_PORTABILITY_SUBSET, |
| 207 | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES); | 208 | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES); |
| | 209 | FF_VK_STRUCT_EXT(s, &feats->device, &feats->subgroup_rotate, FF_VK_EXT_SUBGROUP_ROTATE, |
| | 210 | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES); |
| 208 | | 211 | |
| 209 | #ifdef VK_KHR_shader_expect_assume | 212 | #ifdef VK_KHR_shader_expect_assume |
| 210 | FF_VK_STRUCT_EXT(s, &feats->device, &feats->expect_assume, FF_VK_EXT_EXPECT_ASSUME, | 213 | FF_VK_STRUCT_EXT(s, &feats->device, &feats->expect_assume, FF_VK_EXT_EXPECT_ASSUME, |
| @@ -283,6 +286,7 @@ static void device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF · 72 unmodified lines |
| 283 | COPY_VAL(vulkan_1_3.dynamicRendering); | 286 | COPY_VAL(vulkan_1_3.dynamicRendering); |
| 284 | | 287 | |
| 285 | COPY_VAL(timeline_semaphore.timelineSemaphore); | 288 | COPY_VAL(timeline_semaphore.timelineSemaphore); |
| | 289 | COPY_VAL(subgroup_rotate.shaderSubgroupRotate); |
| 286 | | 290 | |
| 287 | COPY_VAL(video_maintenance_1.videoMaintenance1); | 291 | COPY_VAL(video_maintenance_1.videoMaintenance1); |
| 288 | #ifdef VK_KHR_video_maintenance2 | 292 | #ifdef VK_KHR_video_maintenance2 |
| @@ -588,6 +592,7 @@ static const VulkanOptExtension optional_device_exts[] = { · 299 unmodified lines |
| 588 | { VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME, FF_VK_EXT_COOP_MATRIX }, | 592 | { VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME, FF_VK_EXT_COOP_MATRIX }, |
| 589 | { VK_NV_OPTICAL_FLOW_EXTENSION_NAME, FF_VK_EXT_OPTICAL_FLOW }, | 593 | { VK_NV_OPTICAL_FLOW_EXTENSION_NAME, FF_VK_EXT_OPTICAL_FLOW }, |
| 590 | { VK_EXT_SHADER_OBJECT_EXTENSION_NAME, FF_VK_EXT_SHADER_OBJECT }, | 594 | { VK_EXT_SHADER_OBJECT_EXTENSION_NAME, FF_VK_EXT_SHADER_OBJECT }, |
| | 595 | { VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME, FF_VK_EXT_SUBGROUP_ROTATE }, |
| 591 | #ifdef VK_KHR_shader_expect_assume | 596 | #ifdef VK_KHR_shader_expect_assume |
| 592 | { VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME, FF_VK_EXT_EXPECT_ASSUME }, | 597 | { VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME, FF_VK_EXT_EXPECT_ASSUME }, |
| 593 | #endif | 598 | #endif |