ffmpeg | branch: master | Lynne <d...@lynne.ee> | Fri Mar 14 12:53:47 2025 
+0100| [67eb01b458371b0cd885e99a8943cb95c01bf4f5] | committer: Lynne

hwcontext_vulkan: enable VK_KHR_video_maintenance2

Enables some fixes for the video specifications, and a new feature.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=67eb01b458371b0cd885e99a8943cb95c01bf4f5
---

 libavutil/hwcontext_vulkan.c | 13 +++++++++++++
 libavutil/vulkan_functions.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index f7df5503f8..fe2c3a38a2 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -81,6 +81,9 @@ typedef struct VulkanDeviceFeatures {
     VkPhysicalDeviceTimelineSemaphoreFeatures timeline_semaphore;
 
     VkPhysicalDeviceVideoMaintenance1FeaturesKHR video_maintenance_1;
+#ifdef VK_KHR_video_maintenance2
+    VkPhysicalDeviceVideoMaintenance2FeaturesKHR video_maintenance_2;
+#endif
 
     VkPhysicalDeviceShaderObjectFeaturesEXT shader_object;
     VkPhysicalDeviceCooperativeMatrixFeaturesKHR cooperative_matrix;
@@ -208,6 +211,10 @@ static void device_features_init(AVHWDeviceContext *ctx, 
VulkanDeviceFeatures *f
 
     OPT_CHAIN(&feats->video_maintenance_1, FF_VK_EXT_VIDEO_MAINTENANCE_1,
               
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR);
+#ifdef VK_KHR_video_maintenance2
+    OPT_CHAIN(&feats->video_maintenance_2, FF_VK_EXT_VIDEO_MAINTENANCE_2,
+              
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR);
+#endif
 
     OPT_CHAIN(&feats->shader_object, FF_VK_EXT_SHADER_OBJECT,
               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT);
@@ -276,6 +283,9 @@ static void 
device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF
     COPY_VAL(timeline_semaphore.timelineSemaphore);
 
     COPY_VAL(video_maintenance_1.videoMaintenance1);
+#ifdef VK_KHR_video_maintenance2
+    COPY_VAL(video_maintenance_2.videoMaintenance2);
+#endif
 
     COPY_VAL(shader_object.shaderObject);
 
@@ -605,6 +615,9 @@ static const VulkanOptExtension optional_device_exts[] = {
     { VK_NV_OPTICAL_FLOW_EXTENSION_NAME,                      
FF_VK_EXT_OPTICAL_FLOW           },
     { VK_EXT_SHADER_OBJECT_EXTENSION_NAME,                    
FF_VK_EXT_SHADER_OBJECT          },
     { 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    },
+#endif
 
     /* Imports/exports */
     { VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,               
FF_VK_EXT_EXTERNAL_FD_MEMORY     },
diff --git a/libavutil/vulkan_functions.h b/libavutil/vulkan_functions.h
index 07c4546a3c..f5ea9b7bce 100644
--- a/libavutil/vulkan_functions.h
+++ b/libavutil/vulkan_functions.h
@@ -50,6 +50,7 @@ typedef uint64_t FFVulkanExtensions;
 /* Video extensions */
 #define FF_VK_EXT_VIDEO_QUEUE            (1ULL << 36) /* VK_KHR_video_queue */
 #define FF_VK_EXT_VIDEO_MAINTENANCE_1    (1ULL << 37) /* 
VK_KHR_video_maintenance1 */
+#define FF_VK_EXT_VIDEO_MAINTENANCE_2    (1ULL << 38) /* 
VK_KHR_video_maintenance2 */
 
 #define FF_VK_EXT_VIDEO_DECODE_QUEUE     (1ULL << 40) /* 
VK_KHR_video_decode_queue */
 #define FF_VK_EXT_VIDEO_DECODE_H264      (1ULL << 41) /* 
VK_KHR_video_decode_h264 */

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to