[FFmpeg-devel] [PATCH] avcodec/vc2enc: Initial vulkan VC2 encoder
emufan 4568
geoster3d at gmail.com
Sat Oct 26 01:11:19 EEST 2024
Hm this looks like outdated vulkan headers are being used? Will take a look
Στις Σάβ 26 Οκτ 2024 στις 12:44 π.μ., ο/η Michael Niedermayer <
michael at niedermayer.cc> έγραψε:
> On Thu, Oct 24, 2024 at 02:03:27AM +0300, IndecisiveTurtle wrote:
> > Implements a Vulkan based dirac encoder. Supports Haar and Legall
> wavelets and should work with all wavelet depths.
> >
> > Performance wise, encoding a 1080p 1-minute video is performed in about
> 2.5 minutes with the cpu encoder running on my Ryzen 5 4600H, while it
> takes about 30 seconds on my NVIDIA GTX 1650
> >
> > Haar shader has a subgroup optimized variant that applies when
> configured wavelet depth allows it
> >
> > lavapipe seems to be bugged for some reason, after a bunch of debugging
> I'm not quite sure if it's a bug here or in lavapipe. But people probably
> dont want to use this with a software implementation anyway.
> > ---
> > libavcodec/Makefile | 5 +-
> > libavcodec/allcodecs.c | 1 +
> > libavcodec/vc2enc.c | 501 +--------------
> > libavcodec/vc2enc_common.c | 368 +++++++++++
> > libavcodec/vc2enc_common.h | 279 ++++++++
> > libavcodec/vc2enc_vulkan.c | 781 +++++++++++++++++++++++
> > libavcodec/vulkan/dwt_haar.comp | 76 +++
> > libavcodec/vulkan/dwt_haar_subgroup.comp | 94 +++
> > libavcodec/vulkan/dwt_hor_legall.comp | 61 ++
> > libavcodec/vulkan/dwt_legall.comp | 74 +++
> > libavcodec/vulkan/dwt_upload.comp | 45 ++
> > libavcodec/vulkan/dwt_ver_legall.comp | 55 ++
> > libavcodec/vulkan/encode.comp | 256 ++++++++
> > libavcodec/vulkan/slice_sizes.comp | 184 ++++++
> > 14 files changed, 2279 insertions(+), 501 deletions(-)
> > create mode 100644 libavcodec/vc2enc_common.c
> > create mode 100644 libavcodec/vc2enc_common.h
> > create mode 100644 libavcodec/vc2enc_vulkan.c
> > create mode 100644 libavcodec/vulkan/dwt_haar.comp
> > create mode 100644 libavcodec/vulkan/dwt_haar_subgroup.comp
> > create mode 100644 libavcodec/vulkan/dwt_hor_legall.comp
> > create mode 100644 libavcodec/vulkan/dwt_legall.comp
> > create mode 100644 libavcodec/vulkan/dwt_upload.comp
> > create mode 100644 libavcodec/vulkan/dwt_ver_legall.comp
> > create mode 100644 libavcodec/vulkan/encode.comp
> > create mode 100644 libavcodec/vulkan/slice_sizes.comp
>
> breaks build
>
> CC libavcodec/vc2enc.o
> In file included from ./libavutil/vulkan_functions.h:26,
> from ./libavutil/vulkan.h:30,
> from libavcodec/vc2enc_common.h:31,
> from libavcodec/vc2enc.c:32:
> ./libavutil/hwcontext_vulkan.h:44:5: error: unknown type name
> ‘VkVideoCodecOperationFlagBitsKHR’
> 44 | VkVideoCodecOperationFlagBitsKHR video_caps;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from ./libavutil/vulkan.h:30,
> from libavcodec/vc2enc_common.h:31,
> from libavcodec/vc2enc.c:32:
> ./libavutil/vulkan_functions.h:260:5: error: unknown type name
> ‘PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR’
> 260 | PFN_vk##name name;
> | ^~~~~~
> ./libavutil/vulkan_functions.h:85:5: note: in expansion of macro ‘PFN_DEF’
> 85 | MACRO(1, 0, FF_VK_EXT_VIDEO_QUEUE,
> GetPhysicalDeviceVideoCapabilitiesKHR) \
> | ^~~~~
> ./libavutil/vulkan_functions.h:264:5: note: in expansion of macro ‘FN_LIST’
> 264 | FN_LIST(PFN_DEF)
> | ^~~~~~~
> ...
> In file included from libavcodec/vc2enc_common.h:31,
> from libavcodec/vc2enc.c:32:
> ./libavutil/vulkan.h:95:5: error: unknown type name ‘VkPipelineStageFlags2’
> 95 | VkPipelineStageFlags2 stage;
> | ^~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:96:5: error: unknown type name ‘VkAccessFlags2’
> 96 | VkAccessFlags2 access;
> | ^~~~~~~~~~~~~~
> ./libavutil/vulkan.h:137:5: error: unknown type name
> ‘VkSemaphoreSubmitInfo’
> 137 | VkSemaphoreSubmitInfo *sem_wait;
> | ^~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:141:5: error: unknown type name
> ‘VkSemaphoreSubmitInfo’
> 141 | VkSemaphoreSubmitInfo *sem_sig;
> | ^~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:194:5: error: unknown type name
> ‘VkPipelineShaderStageRequiredSubgroupSizeCreateInfo’
> 194 | VkPipelineShaderStageRequiredSubgroupSizeCreateInfo
> subgroup_info;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:197:5: error: unknown type name ‘VkShaderEXT’
> 197 | VkShaderEXT object;
> | ^~~~~~~~~~~
> ./libavutil/vulkan.h:234:5: error: unknown type name
> ‘VkDescriptorBufferBindingInfoEXT’
> 234 | VkDescriptorBufferBindingInfoEXT *desc_bind;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:273:5: error: unknown type name
> ‘VkPhysicalDeviceDescriptorBufferPropertiesEXT’
> 273 | VkPhysicalDeviceDescriptorBufferPropertiesEXT desc_buf_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:274:5: error: unknown type name
> ‘VkPhysicalDeviceSubgroupSizeControlProperties’
> 274 | VkPhysicalDeviceSubgroupSizeControlProperties subgroup_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:275:5: error: unknown type name
> ‘VkPhysicalDeviceCooperativeMatrixPropertiesKHR’
> 275 | VkPhysicalDeviceCooperativeMatrixPropertiesKHR
> coop_matrix_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:276:5: error: unknown type name
> ‘VkPhysicalDeviceOpticalFlowPropertiesNV’
> 276 | VkPhysicalDeviceOpticalFlowPropertiesNV optical_flow_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:277:5: error: unknown type name
> ‘VkQueueFamilyQueryResultStatusPropertiesKHR’
> 277 | VkQueueFamilyQueryResultStatusPropertiesKHR *query_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:278:5: error: unknown type name
> ‘VkQueueFamilyVideoPropertiesKHR’
> 278 | VkQueueFamilyVideoPropertiesKHR *video_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:282:5: error: unknown type name
> ‘VkCooperativeMatrixPropertiesKHR’
> 282 | VkCooperativeMatrixPropertiesKHR *coop_mat_props;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:285:5: error: unknown type name
> ‘VkPhysicalDeviceShaderAtomicFloatFeaturesEXT’
> 285 | VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
> atomic_float_feats;
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./libavutil/vulkan.h:433:33: error: unknown type name
> ‘VkPipelineStageFlagBits2’; did you mean ‘VkPipelineStageFlagBits’?
> 433 | VkPipelineStageFlagBits2 stage,
> | ^~~~~~~~~~~~~~~~~~~~~~~~
> | VkPipelineStageFlagBits
> ./libavutil/vulkan.h:436:30: error: unknown type name
> ‘VkPipelineStageFlagBits2’; did you mean ‘VkPipelineStageFlagBits’?
> 436 | VkPipelineStageFlagBits2 wait_stage,
> | ^~~~~~~~~~~~~~~~~~~~~~~~
> | VkPipelineStageFlagBits
> ./libavutil/vulkan.h:437:30: error: unknown type name
> ‘VkPipelineStageFlagBits2’; did you mean ‘VkPipelineStageFlagBits’?
> 437 | VkPipelineStageFlagBits2
> signal_stage);
> | ^~~~~~~~~~~~~~~~~~~~~~~~
> | VkPipelineStageFlagBits
> ./libavutil/vulkan.h:439:30: error: unknown type name
> ‘VkImageMemoryBarrier2’; did you mean ‘VkImageMemoryBarrier’?
> 439 | VkImageMemoryBarrier2 *bar, uint32_t
> *nb_img_bar);
> | ^~~~~~~~~~~~~~~~~~~~~
> | VkImageMemoryBarrier
> ./libavutil/vulkan.h:453:40: error: unknown type name
> ‘VkImageMemoryBarrier2’; did you mean ‘VkImageMemoryBarrier’?
> 453 | AVFrame *pic, VkImageMemoryBarrier2 *bar,
> int *nb_bar,
> | ^~~~~~~~~~~~~~~~~~~~~
> | VkImageMemoryBarrier
> make: *** [ffbuild/common.mak:81: libavcodec/vc2enc.o] Error 1
>
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> I have never wished to cater to the crowd; for what I know they do not
> approve, and what they approve I do not know. -- Epicurus
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list