This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit bb30126349abe31756ae60470440ed92a9a9dcb0
Author:     Lynne <[email protected]>
AuthorDate: Wed Dec 31 14:50:09 2025 +0100
Commit:     Lynne <[email protected]>
CommitDate: Wed Dec 31 15:00:45 2025 +0100

    hwcontext_vulkan: enable the explicit shader workgroup extension
    
    Its useful as it allows us to alias memory in shaders.
---
 libavutil/hwcontext_vulkan.c | 9 +++++++++
 libavutil/vulkan_functions.h | 1 +
 libavutil/vulkan_loader.h    | 1 +
 3 files changed, 11 insertions(+)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 5661bce472..58a88889f3 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -81,6 +81,7 @@ typedef struct VulkanDeviceFeatures {
     VkPhysicalDeviceTimelineSemaphoreFeatures timeline_semaphore;
     VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR subgroup_rotate;
     VkPhysicalDeviceHostImageCopyFeaturesEXT host_image_copy;
+    VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR 
explicit_mem_layout;
 
 #ifdef VK_EXT_zero_initialize_device_memory
     VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT zero_initialize;
@@ -259,6 +260,8 @@ static void device_features_init(AVHWDeviceContext *ctx, 
VulkanDeviceFeatures *f
                      
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT);
     FF_VK_STRUCT_EXT(s, &feats->device, &feats->atomic_float, 
FF_VK_EXT_ATOMIC_FLOAT,
                      
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT);
+    FF_VK_STRUCT_EXT(s, &feats->device, &feats->explicit_mem_layout, 
FF_VK_EXT_EXPLICIT_MEM_LAYOUT,
+                     
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR);
 
 #ifdef VK_KHR_shader_relaxed_extended_instruction
     FF_VK_STRUCT_EXT(s, &feats->device, &feats->relaxed_extended_instruction, 
FF_VK_EXT_RELAXED_EXTENDED_INSTR,
@@ -346,6 +349,11 @@ static void 
device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF
     COPY_VAL(atomic_float.shaderBufferFloat32Atomics);
     COPY_VAL(atomic_float.shaderBufferFloat32AtomicAdd);
 
+    COPY_VAL(explicit_mem_layout.workgroupMemoryExplicitLayout);
+    
COPY_VAL(explicit_mem_layout.workgroupMemoryExplicitLayoutScalarBlockLayout);
+    COPY_VAL(explicit_mem_layout.workgroupMemoryExplicitLayout8BitAccess);
+    COPY_VAL(explicit_mem_layout.workgroupMemoryExplicitLayout16BitAccess);
+
 #ifdef VK_KHR_shader_relaxed_extended_instruction
     COPY_VAL(relaxed_extended_instruction.shaderRelaxedExtendedInstruction);
 #endif
@@ -655,6 +663,7 @@ static const VulkanOptExtension optional_device_exts[] = {
     { 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        },
+    { VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, 
FF_VK_EXT_EXPLICIT_MEM_LAYOUT    },
 #ifdef VK_EXT_zero_initialize_device_memory
     { VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME,    
FF_VK_EXT_ZERO_INITIALIZE        },
 #endif
diff --git a/libavutil/vulkan_functions.h b/libavutil/vulkan_functions.h
index d2e3c77bb8..ebd547c842 100644
--- a/libavutil/vulkan_functions.h
+++ b/libavutil/vulkan_functions.h
@@ -51,6 +51,7 @@ typedef uint64_t FFVulkanExtensions;
 #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 */
+#define FF_VK_EXT_EXPLICIT_MEM_LAYOUT    (1ULL << 20) /* 
VK_KHR_workgroup_memory_explicit_layout */
 
 /* 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 dc558f9d64..a66115ac01 100644
--- a/libavutil/vulkan_loader.h
+++ b/libavutil/vulkan_loader.h
@@ -60,6 +60,7 @@ 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        },
+        { VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, 
FF_VK_EXT_EXPLICIT_MEM_LAYOUT },
 #ifdef VK_EXT_zero_initialize_device_memory
         { VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME, 
FF_VK_EXT_ZERO_INITIALIZE    },
 #endif

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to