You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	hwcontext_vulkan: add support for VK_EXT_zero_initialize_device_memory
This commit is contained in:
		| @@ -82,6 +82,10 @@ typedef struct VulkanDeviceFeatures { | ||||
|     VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR subgroup_rotate; | ||||
|     VkPhysicalDeviceHostImageCopyFeaturesEXT host_image_copy; | ||||
|  | ||||
| #ifdef VK_EXT_zero_initialize_device_memory | ||||
|     VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT zero_initialize; | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_KHR_shader_expect_assume | ||||
|     VkPhysicalDeviceShaderExpectAssumeFeaturesKHR expect_assume; | ||||
| #endif | ||||
| @@ -225,6 +229,11 @@ static void device_features_init(AVHWDeviceContext *ctx, VulkanDeviceFeatures *f | ||||
|     FF_VK_STRUCT_EXT(s, &feats->device, &feats->host_image_copy, FF_VK_EXT_HOST_IMAGE_COPY, | ||||
|                      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT); | ||||
|  | ||||
| #ifdef VK_EXT_zero_initialize_device_memory | ||||
|     FF_VK_STRUCT_EXT(s, &feats->device, &feats->zero_initialize, FF_VK_EXT_ZERO_INITIALIZE, | ||||
|                      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT); | ||||
| #endif | ||||
|  | ||||
| #ifdef VK_KHR_shader_expect_assume | ||||
|     FF_VK_STRUCT_EXT(s, &feats->device, &feats->expect_assume, FF_VK_EXT_EXPECT_ASSUME, | ||||
|                      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR); | ||||
| @@ -311,6 +320,10 @@ static void device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF | ||||
|     COPY_VAL(subgroup_rotate.shaderSubgroupRotate); | ||||
|     COPY_VAL(host_image_copy.hostImageCopy); | ||||
|  | ||||
| #ifdef VK_EXT_zero_initialize_device_memory | ||||
|     COPY_VAL(zero_initialize.zeroInitializeDeviceMemory); | ||||
| #endif | ||||
|  | ||||
|     COPY_VAL(video_maintenance_1.videoMaintenance1); | ||||
| #ifdef VK_KHR_video_maintenance2 | ||||
|     COPY_VAL(video_maintenance_2.videoMaintenance2); | ||||
| @@ -635,6 +648,9 @@ static const VulkanOptExtension optional_device_exts[] = { | ||||
|     { VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME,               FF_VK_EXT_COOP_MATRIX            }, | ||||
|     { VK_EXT_SHADER_OBJECT_EXTENSION_NAME,                    FF_VK_EXT_SHADER_OBJECT          }, | ||||
|     { VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME,           FF_VK_EXT_SUBGROUP_ROTATE        }, | ||||
| #ifdef VK_EXT_zero_initialize_device_memory | ||||
|     { VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME,    FF_VK_EXT_ZERO_INITIALIZE        }, | ||||
| #endif | ||||
| #ifdef VK_KHR_shader_expect_assume | ||||
|     { VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME,             FF_VK_EXT_EXPECT_ASSUME          }, | ||||
| #endif | ||||
|   | ||||
| @@ -50,6 +50,7 @@ typedef uint64_t FFVulkanExtensions; | ||||
| #define FF_VK_EXT_EXPECT_ASSUME          (1ULL << 16) /* VK_KHR_shader_expect_assume */ | ||||
| #define FF_VK_EXT_SUBGROUP_ROTATE        (1ULL << 17) /* VK_KHR_shader_subgroup_rotate */ | ||||
| #define FF_VK_EXT_HOST_IMAGE_COPY        (1ULL << 18) /* VK_EXT_host_image_copy */ | ||||
| #define FF_VK_EXT_ZERO_INITIALIZE        (1ULL << 19) /* VK_EXT_zero_initialize_device_memory */ | ||||
|  | ||||
| /* Video extensions */ | ||||
| #define FF_VK_EXT_VIDEO_QUEUE            (1ULL << 36) /* VK_KHR_video_queue */ | ||||
|   | ||||
| @@ -60,6 +60,9 @@ static inline uint64_t ff_vk_extensions_to_mask(const char * const *extensions, | ||||
|         { VK_EXT_SHADER_OBJECT_EXTENSION_NAME,             FF_VK_EXT_SHADER_OBJECT          }, | ||||
|         { VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME,    FF_VK_EXT_SUBGROUP_ROTATE        }, | ||||
|         { VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME,           FF_VK_EXT_HOST_IMAGE_COPY        }, | ||||
| #ifdef VK_EXT_zero_initialize_device_memory | ||||
|         { VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME, FF_VK_EXT_ZERO_INITIALIZE    }, | ||||
| #endif | ||||
|         { VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME,       FF_VK_EXT_VIDEO_MAINTENANCE_1    }, | ||||
| #ifdef VK_KHR_video_maintenance2 | ||||
|         { VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME,       FF_VK_EXT_VIDEO_MAINTENANCE_2    }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user