Opened 5 months ago

Last modified 5 months ago

#9076 open defect

Using the `--enable-extra-warnings' option breaks vulkan compilation with gcc

Reported by: hongyi-zhao Owned by:
Priority: minor Component: avutil
Version: git-master Keywords: vulkan
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

On Ubuntu 20.10, I try to compile the latest git master version of ffmpeg according to the guidance given by the official website <https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu>.

The configuration are listed as below:

$ ./configure --enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-debug \
--enable-ffplay \
--enable-indev=sndio \
--enable-outdev=sndio \
--enable-fontconfig \
--enable-frei0r \
--enable-openssl \
--enable-gmp \
--enable-libgme \
--enable-gray \
--enable-libaom \
--enable-libfribidi \
--enable-libass \
--enable-libvmaf \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopenjpeg \
--enable-librubberband \
--enable-libsoxr \
--enable-libspeex \
--enable-libsrt \
--enable-libvorbis \
--enable-libopus \
--enable-libtheora \
--enable-libvidstab \
--enable-libvo-amrwbenc \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libxml2 \
--enable-libdav1d \
--enable-libxvid \
--enable-libzvbi \
--enable-libzimg \
--enable-rpath \
--enable-shared \
--enable-avisynth \
--enable-chromaprint \
--enable-gcrypt \
--enable-ladspa \
--enable-libaribb24 \
--enable-libbluray \
--enable-libbs2b \
--enable-libcaca \
--enable-libcelt \
--enable-libcdio \
--enable-libcodec2 \
--enable-libdc1394 \
--enable-libfdk-aac \
--enable-libflite \
--enable-libfontconfig \
--enable-libgsm \
--enable-libiec61883 \
--enable-libjack \
--enable-libklvanc \
--enable-liblensfun \
--enable-libmodplug \
--enable-libopenh264 \
--enable-libopenmpt \
--enable-libpulse \
--enable-librabbitmq \
--enable-librsvg \
--enable-librtmp \
--enable-libshine \
--enable-libsnappy \
--enable-libssh \
--enable-libtesseract \
--enable-libtwolame \
--enable-libv4l2 \
--enable-libxavs2 \
--enable-libdavs2 \
--enable-libxcb \
--enable-libxcb-shm \
--enable-libxcb-xfixes \
--enable-libxcb-shape \
--enable-libzmq \
--enable-lv2 \
--enable-libmysofa \
--enable-openal \
--enable-opencl \
--enable-opengl \
--enable-pocketsphinx \
--enable-vulkan \
--enable-libdrm \
--enable-libmfx \
--enable-pic \
--enable-lto \
--enable-hardcoded-tables \
--enable-memory-poisoning \
--enable-ftrapv \
--enable-linux-perf \
--enable-extra-warnings

With the above configuration, I will meet the following compilation errors:

CC	libavutil/hwcontext_vulkan.o
In file included from libavutil/hwcontext_vulkan.c:40:
libavutil/cuda_check.h: In function ‘ff_cuda_check’:
libavutil/cuda_check.h:43:6: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
   43 |     ((cuda_check_GetErrorName *)cuGetErrorName_fn)(err, &err_name);
      |      ^
libavutil/cuda_check.h:44:6: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
   44 |     ((cuda_check_GetErrorString *)cuGetErrorString_fn)(err, &err_string);
      |      ^
libavutil/hwcontext_vulkan.c: In function ‘av_vkfmt_from_pixfmt’:
libavutil/hwcontext_vulkan.c:214:38: warning: comparison of integer expressions of different signedness: ‘enum AVPixelFormat’ and ‘long unsigned int’ [-Wsign-compare]
  214 |     for (enum AVPixelFormat i = 0; i < FF_ARRAY_ELEMS(vk_pixfmt_map); i++)
      |                                      ^
libavutil/hwcontext_vulkan.c: At top level:
libavutil/hwcontext_vulkan.c:253:34: warning: ISO C restricts enumerator values to range of ‘int’ [-Wpedantic]
  253 |     EXT_NO_FLAG                = 1ULL << 63,
      |                                  ^~~~
libavutil/hwcontext_vulkan.c:261:60: warning: ISO C forbids empty initializer braces [-Wpedantic]
  261 | static const VulkanOptExtension optional_instance_exts[] = {
      |                                                            ^
libavutil/hwcontext_vulkan.c:261:33: error: zero or negative size array ‘optional_instance_exts’
  261 | static const VulkanOptExtension optional_instance_exts[] = {
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vk_dbg_callback’:
libavutil/hwcontext_vulkan.c:333:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘const unsigned int’} [-Wsign-compare]
  333 |     for (int i = 0; i < data->cmdBufLabelCount; i++)
      |                       ^
libavutil/hwcontext_vulkan.c:317:65: warning: unused parameter ‘messageType’ [-Wunused-parameter]
  317 |                                 VkDebugUtilsMessageTypeFlagsEXT messageType,
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘check_extensions’:
libavutil/hwcontext_vulkan.c:397:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  397 |         for (int j = 0; j < sup_ext_count; j++) {
      |                           ^
libavutil/hwcontext_vulkan.c:414:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  414 |         for (int j = 0; j < sup_ext_count; j++) {
      |                           ^
libavutil/hwcontext_vulkan.c:435:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  435 |             for (int j = 0; j < sup_ext_count; j++) {
      |                               ^
libavutil/hwcontext_vulkan.c:462:21: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
  462 |             av_free((void *)extension_names[i]);
      |                     ^
libavutil/hwcontext_vulkan.c: In function ‘create_instance’:
libavutil/hwcontext_vulkan.c:510:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  510 |         for (int i = 0; i < inst_props.enabledExtensionCount; i++)
      |                           ^
libavutil/hwcontext_vulkan.c:511:21: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
  511 |             av_free((void *)inst_props.ppEnabledExtensionNames[i]);
      |                     ^
libavutil/hwcontext_vulkan.c:512:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
  512 |         av_free((void *)inst_props.ppEnabledExtensionNames);
      |                 ^
libavutil/hwcontext_vulkan.c: In function ‘find_device’:
libavutil/hwcontext_vulkan.c:603:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  603 |     for (int i = 0; i < num; i++) {
      |                       ^
libavutil/hwcontext_vulkan.c:616:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  616 |         for (int i = 0; i < num; i++) {
      |                           ^
libavutil/hwcontext_vulkan.c:627:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  627 |         for (int i = 0; i < num; i++) {
      |                           ^
libavutil/hwcontext_vulkan.c:639:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  639 |         for (int i = 0; i < num; i++) {
      |                           ^
libavutil/hwcontext_vulkan.c:651:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  651 |         for (int i = 0; i < num; i++) {
      |                           ^
libavutil/hwcontext_vulkan.c:662:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  662 |         if (select->index < num) {
      |                           ^
libavutil/hwcontext_vulkan.c: In function ‘search_queue_families’:
libavutil/hwcontext_vulkan.c:690:35: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
  690 |     VkDeviceQueueCreateInfo *pc = (VkDeviceQueueCreateInfo *)cd->pQueueCreateInfos;
      |                                   ^
libavutil/hwcontext_vulkan.c:708:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  708 |     for (int i = 0; i < num; i++) {                                            \
      |                       ^
libavutil/hwcontext_vulkan.c:716:5: note: in expansion of macro ‘SEARCH_FLAGS’
  716 |     SEARCH_FLAGS(flags & VK_QUEUE_GRAPHICS_BIT, graph_index)
      |     ^~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:708:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  708 |     for (int i = 0; i < num; i++) {                                            \
      |                       ^
libavutil/hwcontext_vulkan.c:718:5: note: in expansion of macro ‘SEARCH_FLAGS’
  718 |     SEARCH_FLAGS((flags &  VK_QUEUE_COMPUTE_BIT) && (i != graph_index),
      |     ^~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:708:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  708 |     for (int i = 0; i < num; i++) {                                            \
      |                       ^
libavutil/hwcontext_vulkan.c:721:5: note: in expansion of macro ‘SEARCH_FLAGS’
  721 |     SEARCH_FLAGS((flags & VK_QUEUE_TRANSFER_BIT) && (i != graph_index) &&
      |     ^~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:740:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  740 |     for (int i = 0; i < qs[fidx].queueCount; i++)                                        \
      |                       ^
libavutil/hwcontext_vulkan.c:744:5: note: in expansion of macro ‘ADD_QUEUE’
  744 |     ADD_QUEUE(graph_index, 1, comp_index < 0, tx_index < 0 && comp_index < 0)
      |     ^~~~~~~~~
libavutil/hwcontext_vulkan.c:740:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  740 |     for (int i = 0; i < qs[fidx].queueCount; i++)                                        \
      |                       ^
libavutil/hwcontext_vulkan.c:751:9: note: in expansion of macro ‘ADD_QUEUE’
  751 |         ADD_QUEUE(comp_index, 0, 1, tx_index < 0)
      |         ^~~~~~~~~
libavutil/hwcontext_vulkan.c:740:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  740 |     for (int i = 0; i < qs[fidx].queueCount; i++)                                        \
      |                       ^
libavutil/hwcontext_vulkan.c:758:9: note: in expansion of macro ‘ADD_QUEUE’
  758 |         ADD_QUEUE(tx_index, 0, 0, 1)
      |         ^~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘get_buf_exec_ctx’:
libavutil/hwcontext_vulkan.c:868:60: warning: unused parameter ‘hwfc’ [-Wunused-parameter]
  868 | static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
      |                                         ~~~~~~~~~~~~~~~~~~~^~~~
libavutil/hwcontext_vulkan.c: In function ‘unref_exec_ctx_deps’:
libavutil/hwcontext_vulkan.c:873:52: warning: unused parameter ‘hwfc’ [-Wunused-parameter]
  873 | static void unref_exec_ctx_deps(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_device_free’:
libavutil/hwcontext_vulkan.c:1006:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1006 |         av_free((void *)hwctx->enabled_inst_extensions[i]);
      |                 ^
libavutil/hwcontext_vulkan.c:1007:13: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1007 |     av_free((void *)hwctx->enabled_inst_extensions);
      |             ^
libavutil/hwcontext_vulkan.c:1010:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1010 |         av_free((void *)hwctx->enabled_dev_extensions[i]);
      |                 ^
libavutil/hwcontext_vulkan.c:1011:13: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1011 |     av_free((void *)hwctx->enabled_dev_extensions);
      |             ^
libavutil/hwcontext_vulkan.c: In function ‘vulkan_device_create_internal’:
libavutil/hwcontext_vulkan.c:1064:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1064 |         av_free((void *)queue_create_info[0].pQueuePriorities);
      |                 ^
libavutil/hwcontext_vulkan.c:1065:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1065 |         av_free((void *)queue_create_info[1].pQueuePriorities);
      |                 ^
libavutil/hwcontext_vulkan.c:1066:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1066 |         av_free((void *)queue_create_info[2].pQueuePriorities);
      |                 ^
libavutil/hwcontext_vulkan.c:1073:13: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1073 |     av_free((void *)queue_create_info[0].pQueuePriorities);
      |             ^
libavutil/hwcontext_vulkan.c:1074:13: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1074 |     av_free((void *)queue_create_info[1].pQueuePriorities);
      |             ^
libavutil/hwcontext_vulkan.c:1075:13: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1075 |     av_free((void *)queue_create_info[2].pQueuePriorities);
      |             ^
libavutil/hwcontext_vulkan.c:1080:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
 1080 |         for (int i = 0; i < dev_info.enabledExtensionCount; i++)
      |                           ^
libavutil/hwcontext_vulkan.c:1081:21: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1081 |             av_free((void *)dev_info.ppEnabledExtensionNames[i]);
      |                     ^
libavutil/hwcontext_vulkan.c:1082:17: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1082 |         av_free((void *)dev_info.ppEnabledExtensionNames);
      |                 ^
libavutil/hwcontext_vulkan.c:1016:66: warning: unused parameter ‘flags’ [-Wunused-parameter]
 1016 |                                          AVDictionary *opts, int flags)
      |                                                              ~~~~^~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_device_init’:
libavutil/hwcontext_vulkan.c:1107:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
 1107 |         for (int j = 0; j < FF_ARRAY_ELEMS(optional_device_exts); j++) {
      |                           ^
libavutil/hwcontext_vulkan.c:1143:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
 1143 | if (n >= queue_num) {                                                                \
      |       ^~
libavutil/hwcontext_vulkan.c:1149:5: note: in expansion of macro ‘CHECK_QUEUE’
 1149 |     CHECK_QUEUE("graphics", hwctx->queue_family_index)
      |     ^~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1143:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
 1143 | if (n >= queue_num) {                                                                \
      |       ^~
libavutil/hwcontext_vulkan.c:1150:5: note: in expansion of macro ‘CHECK_QUEUE’
 1150 |     CHECK_QUEUE("upload",   hwctx->queue_family_tx_index)
      |     ^~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1143:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
 1143 | if (n >= queue_num) {                                                                \
      |       ^~
libavutil/hwcontext_vulkan.c:1151:5: note: in expansion of macro ‘CHECK_QUEUE’
 1151 |     CHECK_QUEUE("compute",  hwctx->queue_family_comp_index)
      |     ^~~~~~~~~~~
In file included from libavutil/hwcontext_vulkan.c:40:
libavutil/hwcontext_vulkan.c: In function ‘vulkan_device_derive’:
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1239:19: note: in expansion of macro ‘CHECK_CU’
 1239 |         int ret = CHECK_CU(cu->cuDeviceGetUuid((CUuuid *)&dev_select.uuid,
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1239:19: note: in expansion of macro ‘CHECK_CU’
 1239 |         int ret = CHECK_CU(cu->cuDeviceGetUuid((CUuuid *)&dev_select.uuid,
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_frames_get_constraints’:
libavutil/hwcontext_vulkan.c:1257:54: warning: unused parameter ‘hwconfig’ [-Wunused-parameter]
 1257 |                                          const void *hwconfig,
      |                                          ~~~~~~~~~~~~^~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘alloc_mem’:
libavutil/hwcontext_vulkan.c:1319:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
 1319 |     for (int i = 0; i < p->mprops.memoryTypeCount; i++) {
      |                       ^
In file included from libavutil/hwcontext_vulkan.c:40:
libavutil/hwcontext_vulkan.c: In function ‘vulkan_free_internal’:
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1376:17: note: in expansion of macro ‘CHECK_CU’
 1376 |                 CHECK_CU(cu->cuDestroyExternalSemaphore(internal->cu_sem[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1376:17: note: in expansion of macro ‘CHECK_CU’
 1376 |                 CHECK_CU(cu->cuDestroyExternalSemaphore(internal->cu_sem[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1378:17: note: in expansion of macro ‘CHECK_CU’
 1378 |                 CHECK_CU(cu->cuMipmappedArrayDestroy(internal->cu_mma[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1378:17: note: in expansion of macro ‘CHECK_CU’
 1378 |                 CHECK_CU(cu->cuMipmappedArrayDestroy(internal->cu_mma[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1380:17: note: in expansion of macro ‘CHECK_CU’
 1380 |                 CHECK_CU(cu->cuDestroyExternalMemory(internal->ext_mem[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:1380:17: note: in expansion of macro ‘CHECK_CU’
 1380 |                 CHECK_CU(cu->cuDestroyExternalMemory(internal->ext_mem[i]));
      |                 ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘alloc_bind_mem’:
libavutil/hwcontext_vulkan.c:1455:57: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 1455 |                              use_ded_mem ? &ded_alloc : (void *)ded_alloc.pNext,
      |                                                         ^
libavutil/hwcontext_vulkan.c: In function ‘vulkan_pool_alloc’:
libavutil/hwcontext_vulkan.c:1696:57: warning: unused parameter ‘size’ [-Wunused-parameter]
 1696 | static AVBufferRef *vulkan_pool_alloc(void *opaque, int size)
      |                                                     ~~~~^~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_get_formats’:
libavutil/hwcontext_vulkan.c:1830:72: warning: unused parameter ‘dir’ [-Wunused-parameter]
 1830 |                                        enum AVHWFrameTransferDirection dir,
      |                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
libavutil/hwcontext_vulkan.c: In function ‘drm_to_vulkan_fmt’:
libavutil/hwcontext_vulkan.c:2005:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
 2005 |     for (int i = 0; i < FF_ARRAY_ELEMS(vulkan_drm_format_map); i++)
      |                       ^
In file included from libavutil/hwcontext_vulkan.c:40:
libavutil/hwcontext_vulkan.c: In function ‘vulkan_export_to_cuda’:
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2401:19: note: in expansion of macro ‘CHECK_CU’
 2401 |             ret = CHECK_CU(cu->cuImportExternalMemory(&dst_int->ext_mem[i], &ext_desc));
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2401:19: note: in expansion of macro ‘CHECK_CU’
 2401 |             ret = CHECK_CU(cu->cuImportExternalMemory(&dst_int->ext_mem[i], &ext_desc));
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2407:19: note: in expansion of macro ‘CHECK_CU’
 2407 |             ret = CHECK_CU(cu->cuExternalMemoryGetMappedMipmappedArray(&dst_int->cu_mma[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2407:19: note: in expansion of macro ‘CHECK_CU’
 2407 |             ret = CHECK_CU(cu->cuExternalMemoryGetMappedMipmappedArray(&dst_int->cu_mma[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2415:19: note: in expansion of macro ‘CHECK_CU’
 2415 |             ret = CHECK_CU(cu->cuMipmappedArrayGetLevel(&dst_int->cu_array[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2415:19: note: in expansion of macro ‘CHECK_CU’
 2415 |             ret = CHECK_CU(cu->cuMipmappedArrayGetLevel(&dst_int->cu_array[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2431:19: note: in expansion of macro ‘CHECK_CU’
 2431 |             ret = CHECK_CU(cu->cuImportExternalSemaphore(&dst_int->cu_sem[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2431:19: note: in expansion of macro ‘CHECK_CU’
 2431 |             ret = CHECK_CU(cu->cuImportExternalSemaphore(&dst_int->cu_sem[i],
      |                   ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_data_from_cuda’:
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2465:11: note: in expansion of macro ‘CHECK_CU’
 2465 |     ret = CHECK_CU(cu->cuCtxPushCurrent(cuda_dev->cuda_ctx));
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2465:11: note: in expansion of macro ‘CHECK_CU’
 2465 |     ret = CHECK_CU(cu->cuCtxPushCurrent(cuda_dev->cuda_ctx));
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2473:9: note: in expansion of macro ‘CHECK_CU’
 2473 |         CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |         ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2473:9: note: in expansion of macro ‘CHECK_CU’
 2473 |         CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |         ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2479:11: note: in expansion of macro ‘CHECK_CU’
 2479 |     ret = CHECK_CU(cu->cuWaitExternalSemaphoresAsync(dst_int->cu_sem, s_w_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2479:11: note: in expansion of macro ‘CHECK_CU’
 2479 |     ret = CHECK_CU(cu->cuWaitExternalSemaphoresAsync(dst_int->cu_sem, s_w_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2503:15: note: in expansion of macro ‘CHECK_CU’
 2503 |         ret = CHECK_CU(cu->cuMemcpy2DAsync(&cpy, cuda_dev->stream));
      |               ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2503:15: note: in expansion of macro ‘CHECK_CU’
 2503 |         ret = CHECK_CU(cu->cuMemcpy2DAsync(&cpy, cuda_dev->stream));
      |               ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2510:11: note: in expansion of macro ‘CHECK_CU’
 2510 |     ret = CHECK_CU(cu->cuSignalExternalSemaphoresAsync(dst_int->cu_sem, s_s_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2510:11: note: in expansion of macro ‘CHECK_CU’
 2510 |     ret = CHECK_CU(cu->cuSignalExternalSemaphoresAsync(dst_int->cu_sem, s_s_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2517:5: note: in expansion of macro ‘CHECK_CU’
 2517 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2517:5: note: in expansion of macro ‘CHECK_CU’
 2517 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2524:5: note: in expansion of macro ‘CHECK_CU’
 2524 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:2524:5: note: in expansion of macro ‘CHECK_CU’
 2524 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_unmap_to_drm’:
libavutil/hwcontext_vulkan.c:2559:52: warning: unused parameter ‘hwfc’ [-Wunused-parameter]
 2559 | static void vulkan_unmap_to_drm(AVHWFramesContext *hwfc, HWMapDescriptor *hwmap)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_fmt_to_drm’:
libavutil/hwcontext_vulkan.c:2571:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
 2571 |     for (int i = 0; i < FF_ARRAY_ELEMS(vulkan_drm_format_map); i++)
      |                       ^
libavutil/hwcontext_vulkan.c: In function ‘vulkan_map_to_drm’:
libavutil/hwcontext_vulkan.c:2578:54: warning: unused parameter ‘flags’ [-Wunused-parameter]
 2578 |                              const AVFrame *src, int flags)
      |                                                  ~~~~^~~~~
libavutil/hwcontext_vulkan.c: In function ‘create_buf’:
libavutil/hwcontext_vulkan.c:2818:48: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 2818 |                     use_ded_mem ? &ded_alloc : (void *)ded_alloc.pNext,
      |                                                ^
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_data’:
libavutil/hwcontext_vulkan.c:3102:29: warning: cast discards ‘const’ qualifier from pointer target type [-Wcast-qual]
 3102 |         err = av_frame_copy((AVFrame *)(from ? swf : map), from ? map : swf);
      |                             ^
In file included from libavutil/hwcontext_vulkan.c:40:
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_data_to_cuda’:
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3258:11: note: in expansion of macro ‘CHECK_CU’
 3258 |     ret = CHECK_CU(cu->cuCtxPushCurrent(cuda_dev->cuda_ctx));
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3258:11: note: in expansion of macro ‘CHECK_CU’
 3258 |     ret = CHECK_CU(cu->cuCtxPushCurrent(cuda_dev->cuda_ctx));
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3266:9: note: in expansion of macro ‘CHECK_CU’
 3266 |         CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |         ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3266:9: note: in expansion of macro ‘CHECK_CU’
 3266 |         CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |         ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3272:11: note: in expansion of macro ‘CHECK_CU’
 3272 |     ret = CHECK_CU(cu->cuWaitExternalSemaphoresAsync(dst_int->cu_sem, s_w_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3272:11: note: in expansion of macro ‘CHECK_CU’
 3272 |     ret = CHECK_CU(cu->cuWaitExternalSemaphoresAsync(dst_int->cu_sem, s_w_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3296:15: note: in expansion of macro ‘CHECK_CU’
 3296 |         ret = CHECK_CU(cu->cuMemcpy2DAsync(&cpy, cuda_dev->stream));
      |               ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3296:15: note: in expansion of macro ‘CHECK_CU’
 3296 |         ret = CHECK_CU(cu->cuMemcpy2DAsync(&cpy, cuda_dev->stream));
      |               ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3303:11: note: in expansion of macro ‘CHECK_CU’
 3303 |     ret = CHECK_CU(cu->cuSignalExternalSemaphoresAsync(dst_int->cu_sem, s_s_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3303:11: note: in expansion of macro ‘CHECK_CU’
 3303 |     ret = CHECK_CU(cu->cuSignalExternalSemaphoresAsync(dst_int->cu_sem, s_s_par,
      |           ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3310:5: note: in expansion of macro ‘CHECK_CU’
 3310 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3310:5: note: in expansion of macro ‘CHECK_CU’
 3310 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:71: warning: ISO C forbids passing argument 2 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3317:5: note: in expansion of macro ‘CHECK_CU’
 3317 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:39: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                 ~~~~~~^~~~~~~~~~~~~~~~~
libavutil/cuda_check.h:64:93: warning: ISO C forbids passing argument 3 of ‘ff_cuda_check’ between function pointer and ‘void *’ [-Wpedantic]
   64 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
libavutil/hwcontext_vulkan.c:41:21: note: in expansion of macro ‘FF_CUDA_CHECK_DL’
   41 | #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x)
      |                     ^~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c:3317:5: note: in expansion of macro ‘CHECK_CU’
 3317 |     CHECK_CU(cu->cuCtxPopCurrent(&dummy));
      |     ^~~~~~~~
libavutil/cuda_check.h:32:64: note: expected ‘void *’ but argument is of type ‘CUresult (*)(CUresult,  const char **)’ {aka ‘enum cudaError_enum (*)(enum cudaError_enum,  const char **)’}
   32 |                                 void *cuGetErrorName_fn, void *cuGetErrorString_fn,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_frames_derive_to’:
libavutil/hwcontext_vulkan.c:3346:55: warning: unused parameter ‘src_fc’ [-Wunused-parameter]
 3346 |                                    AVHWFramesContext *src_fc, int flags)
      |                                    ~~~~~~~~~~~~~~~~~~~^~~~~~
libavutil/hwcontext_vulkan.c:3346:67: warning: unused parameter ‘flags’ [-Wunused-parameter]
 3346 |                                    AVHWFramesContext *src_fc, int flags)
      |                                                               ~~~~^~~~~
libavutil/hwcontext_vulkan.c: At top level:
libavutil/hwcontext_vulkan.c:3386:1: warning: missing initializer for field ‘frames_derive_from’ of ‘HWContextType’ [-Wmissing-field-initializers]
 3386 | };
      | ^
In file included from libavutil/hwcontext_vulkan.c:24:
libavutil/hwcontext_internal.h:99:24: note: ‘frames_derive_from’ declared here
   99 |     int              (*frames_derive_from)(AVHWFramesContext *dst_ctx,
      |                        ^~~~~~~~~~~~~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_map_from’:
libavutil/hwcontext_vulkan.c:2713:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2713 |         if (p->extensions & EXT_EXTERNAL_DMABUF_MEMORY)
      |            ^
libavutil/hwcontext_vulkan.c:2716:5: note: here
 2716 |     case AV_PIX_FMT_VAAPI:
      |     ^~~~
libavutil/hwcontext_vulkan.c:2717:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2717 |         if (p->extensions & EXT_EXTERNAL_DMABUF_MEMORY)
      |            ^
libavutil/hwcontext_vulkan.c:2721:5: note: here
 2721 |     default:
      |     ^~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_map_to’:
libavutil/hwcontext_vulkan.c:2541:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2541 |         if (p->extensions & EXT_EXTERNAL_DMABUF_MEMORY)
      |            ^
libavutil/hwcontext_vulkan.c:2544:5: note: here
 2544 |     case AV_PIX_FMT_DRM_PRIME:
      |     ^~~~
libavutil/hwcontext_vulkan.c:2545:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2545 |         if (p->extensions & EXT_EXTERNAL_DMABUF_MEMORY)
      |            ^
libavutil/hwcontext_vulkan.c:2548:5: note: here
 2548 |     default:
      |     ^~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_data_from’:
libavutil/hwcontext_vulkan.c:3333:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3333 |         if ((p->extensions & EXT_EXTERNAL_FD_MEMORY) &&
      |            ^
libavutil/hwcontext_vulkan.c:3337:5: note: here
 3337 |     default:
      |     ^~~~~~~
libavutil/hwcontext_vulkan.c: In function ‘vulkan_transfer_data_to’:
libavutil/hwcontext_vulkan.c:3226:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3226 |         if ((p->extensions & EXT_EXTERNAL_FD_MEMORY) &&
      |            ^
libavutil/hwcontext_vulkan.c:3230:5: note: here
 3230 |     default:
      |     ^~~~~~~
make: *** [ffbuild/common.mak:67: libavutil/hwcontext_vulkan.o] Error 1

But if I remove the `--enable-extra-warnings' configuration option, the problem will be fixed. Any hints for this problem will be highly appreciated.

Regards,
HY

Change History (3)

comment:1 by Carl Eugen Hoyos, 5 months ago

Component: ffmpegundetermined
Priority: normalminor

Just curious: Why are you using the option?

comment:2 by Carl Eugen Hoyos, 5 months ago

Component: undeterminedavutil
Reproduced by developer: set
Status: newopen
Summary: Using the `--enable-extra-warnings' option will cause the compilation to fail.Using the `--enable-extra-warnings' option breaks vulkan compilation with gcc

Change of behaviour in a gcc-4 release.

comment:3 by Carl Eugen Hoyos, 5 months ago

Keywords: vulkan added
Note: See TracTickets for help on using tickets.