This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit e32cb94258f30e13b3e52c24bc4b04dbd0fc0009 Author: Lynne <[email protected]> AuthorDate: Tue Jan 6 17:48:13 2026 +0100 Commit: Lynne <[email protected]> CommitDate: Mon Jan 12 17:28:41 2026 +0100 hwcontext_vulkan: enable long vector extension This enables us to do some neat tricks. --- libavutil/hwcontext_vulkan.c | 16 ++++++++++++++++ libavutil/vulkan.c | 5 +++++ libavutil/vulkan.h | 3 +++ libavutil/vulkan_functions.h | 1 + libavutil/vulkan_loader.h | 3 +++ 5 files changed, 28 insertions(+) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 32d29d2d88..b16b8670c1 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -83,6 +83,10 @@ typedef struct VulkanDeviceFeatures { VkPhysicalDeviceHostImageCopyFeaturesEXT host_image_copy; VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR explicit_mem_layout; +#ifdef VK_EXT_shader_long_vector + VkPhysicalDeviceShaderLongVectorFeaturesEXT long_vector; +#endif + #ifdef VK_EXT_shader_replicated_composites VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT replicated_composites; #endif @@ -231,6 +235,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_shader_long_vector + FF_VK_STRUCT_EXT(s, &feats->device, &feats->long_vector, FF_VK_EXT_LONG_VECTOR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT); +#endif + #ifdef VK_EXT_shader_replicated_composites FF_VK_STRUCT_EXT(s, &feats->device, &feats->replicated_composites, FF_VK_EXT_REPLICATED_COMPOSITES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT); @@ -336,6 +345,10 @@ static void device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF COPY_VAL(subgroup_rotate.shaderSubgroupRotate); COPY_VAL(host_image_copy.hostImageCopy); +#ifdef VK_EXT_shader_long_vector + COPY_VAL(long_vector.longVector); +#endif + #ifdef VK_EXT_shader_replicated_composites COPY_VAL(replicated_composites.shaderReplicatedComposites); #endif @@ -682,6 +695,9 @@ static const VulkanOptExtension optional_device_exts[] = { { 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 }, { VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, FF_VK_EXT_EXPLICIT_MEM_LAYOUT }, +#ifdef VK_EXT_shader_long_vector + { VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME, FF_VK_EXT_LONG_VECTOR }, +#endif #ifdef VK_EXT_shader_replicated_composites { VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME, FF_VK_EXT_REPLICATED_COMPOSITES }, #endif diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index b6abcc8abb..0a60763350 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -172,6 +172,11 @@ int ff_vk_load_props(FFVulkanContext *s) FF_VK_STRUCT_EXT(s, &s->props, &s->host_image_props, FF_VK_EXT_HOST_IMAGE_COPY, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT); +#ifdef VK_EXT_shader_long_vector + FF_VK_STRUCT_EXT(s, &s->props, &s->long_vector_props, FF_VK_EXT_LONG_VECTOR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT); +#endif + s->feats = (VkPhysicalDeviceFeatures2) { .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, }; diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h index c56cd93e18..6a30a68280 100644 --- a/libavutil/vulkan.h +++ b/libavutil/vulkan.h @@ -326,6 +326,9 @@ typedef struct FFVulkanContext { VkPhysicalDeviceCooperativeMatrixPropertiesKHR coop_matrix_props; VkPhysicalDevicePushDescriptorPropertiesKHR push_desc_props; VkPhysicalDeviceOpticalFlowPropertiesNV optical_flow_props; +#ifdef VK_EXT_shader_long_vector + VkPhysicalDeviceShaderLongVectorPropertiesEXT long_vector_props; +#endif VkQueueFamilyQueryResultStatusPropertiesKHR *query_props; VkQueueFamilyVideoPropertiesKHR *video_props; VkQueueFamilyProperties2 *qf_props; diff --git a/libavutil/vulkan_functions.h b/libavutil/vulkan_functions.h index 1b61a66d9a..79fb02e8e5 100644 --- a/libavutil/vulkan_functions.h +++ b/libavutil/vulkan_functions.h @@ -53,6 +53,7 @@ typedef uint64_t FFVulkanExtensions; #define FF_VK_EXT_ZERO_INITIALIZE (1ULL << 19) /* VK_EXT_zero_initialize_device_memory */ #define FF_VK_EXT_EXPLICIT_MEM_LAYOUT (1ULL << 20) /* VK_KHR_workgroup_memory_explicit_layout */ #define FF_VK_EXT_REPLICATED_COMPOSITES (1ULL << 21) /* VK_EXT_shader_replicated_composites */ +#define FF_VK_EXT_LONG_VECTOR (1ULL << 22) /* VK_EXT_shader_long_vector */ /* Video extensions */ #define FF_VK_EXT_VIDEO_QUEUE (1ULL << 36) /* VK_KHR_video_queue */ diff --git a/libavutil/vulkan_loader.h b/libavutil/vulkan_loader.h index 2214d6ff23..c3c43562a5 100644 --- a/libavutil/vulkan_loader.h +++ b/libavutil/vulkan_loader.h @@ -61,6 +61,9 @@ static inline uint64_t ff_vk_extensions_to_mask(const char * const *extensions, { 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 }, { VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, FF_VK_EXT_EXPLICIT_MEM_LAYOUT }, +#ifdef VK_EXT_shader_long_vector + { VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME, FF_VK_EXT_LONG_VECTOR }, +#endif #ifdef VK_EXT_shader_replicated_composites { VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME, FF_VK_EXT_REPLICATED_COMPOSITES }, #endif _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
