You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-11-23 21:54:53 +02:00
vp9: add Vulkan VP9 hwaccel
This commit is contained in:
@@ -90,6 +90,9 @@ typedef struct VulkanDeviceFeatures {
|
||||
#ifdef VK_KHR_video_maintenance2
|
||||
VkPhysicalDeviceVideoMaintenance2FeaturesKHR video_maintenance_2;
|
||||
#endif
|
||||
#ifdef VK_KHR_video_decode_vp9
|
||||
VkPhysicalDeviceVideoDecodeVP9FeaturesKHR vp9_decode;
|
||||
#endif
|
||||
|
||||
VkPhysicalDeviceShaderObjectFeaturesEXT shader_object;
|
||||
VkPhysicalDeviceCooperativeMatrixFeaturesKHR cooperative_matrix;
|
||||
@@ -230,6 +233,10 @@ static void device_features_init(AVHWDeviceContext *ctx, VulkanDeviceFeatures *f
|
||||
FF_VK_STRUCT_EXT(s, &feats->device, &feats->video_maintenance_2, FF_VK_EXT_VIDEO_MAINTENANCE_2,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR);
|
||||
#endif
|
||||
#ifdef VK_KHR_video_decode_vp9
|
||||
FF_VK_STRUCT_EXT(s, &feats->device, &feats->vp9_decode, FF_VK_EXT_VIDEO_DECODE_VP9,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR);
|
||||
#endif
|
||||
|
||||
FF_VK_STRUCT_EXT(s, &feats->device, &feats->shader_object, FF_VK_EXT_SHADER_OBJECT,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT);
|
||||
@@ -302,6 +309,10 @@ static void device_features_copy_needed(VulkanDeviceFeatures *dst, VulkanDeviceF
|
||||
COPY_VAL(video_maintenance_2.videoMaintenance2);
|
||||
#endif
|
||||
|
||||
#ifdef VK_KHR_video_decode_vp9
|
||||
COPY_VAL(vp9_decode.videoDecodeVP9);
|
||||
#endif
|
||||
|
||||
COPY_VAL(shader_object.shaderObject);
|
||||
|
||||
COPY_VAL(cooperative_matrix.cooperativeMatrix);
|
||||
@@ -647,6 +658,9 @@ static const VulkanOptExtension optional_device_exts[] = {
|
||||
{ VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H264 },
|
||||
{ VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME, FF_VK_EXT_VIDEO_ENCODE_H265 },
|
||||
{ VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H265 },
|
||||
#ifdef VK_KHR_video_decode_vp9
|
||||
{ VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_VP9 },
|
||||
#endif
|
||||
{ VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_AV1 },
|
||||
};
|
||||
|
||||
@@ -1551,6 +1565,10 @@ static int setup_queue_families(AVHWDeviceContext *ctx, VkDeviceCreateInfo *cd)
|
||||
PICK_QF(VK_QUEUE_VIDEO_ENCODE_BIT_KHR, VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR);
|
||||
PICK_QF(VK_QUEUE_VIDEO_DECODE_BIT_KHR, VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR);
|
||||
|
||||
#ifdef VK_KHR_video_decode_vp9
|
||||
PICK_QF(VK_QUEUE_VIDEO_DECODE_BIT_KHR, VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR);
|
||||
#endif
|
||||
|
||||
PICK_QF(VK_QUEUE_VIDEO_DECODE_BIT_KHR, VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR);
|
||||
|
||||
av_free(qf);
|
||||
|
||||
Reference in New Issue
Block a user