[FFmpeg-devel] [FFmpeg-cvslog] lavu/opencl: replace va_ext.h with standard name

Mark Thompson sw at jkqxz.net
Sat Mar 23 14:27:39 EET 2019


On 22/03/2019 01:40, Ruiling Song wrote:
> ffmpeg | branch: master | Ruiling Song <ruiling.song at intel.com> | Fri Nov 23 13:39:12 2018 +0800| [61cb505d18b8a335bd118d88c05b9daf40eb5f9b] | committer: Ruiling Song
> 
> lavu/opencl: replace va_ext.h with standard name
> 
> Khronos OpenCL header (https://github.com/KhronosGroup/OpenCL-Headers)
> uses cl_va_api_media_sharing_intel.h. And Intel's official OpenCL driver
> for Intel GPU (https://github.com/intel/compute-runtime) was compiled
> against Khronos OpenCL header. So it's better to align with Khronos.
> 
> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
> 
>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=61cb505d18b8a335bd118d88c05b9daf40eb5f9b
> ---
> 
>  configure                    | 2 +-
>  libavutil/hwcontext_opencl.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/configure b/configure
> index a817479559..331393f8d5 100755
> --- a/configure
> +++ b/configure
> @@ -6472,7 +6472,7 @@ fi
>  
>  if enabled_all opencl vaapi ; then
>      enabled opencl_drm_beignet && enable opencl_vaapi_beignet
> -    check_type "CL/cl.h CL/va_ext.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" &&
> +    check_type "CL/cl.h CL/cl_va_api_media_sharing_intel.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" &&
>          enable opencl_vaapi_intel_media
>  fi
>  
> diff --git a/libavutil/hwcontext_opencl.c b/libavutil/hwcontext_opencl.c
> index d3df6221c4..b116c5b708 100644
> --- a/libavutil/hwcontext_opencl.c
> +++ b/libavutil/hwcontext_opencl.c
> @@ -50,7 +50,7 @@
>  #include <mfx/mfxstructures.h>
>  #endif
>  #include <va/va.h>
> -#include <CL/va_ext.h>
> +#include <CL/cl_va_api_media_sharing_intel.h>
>  #include "hwcontext_vaapi.h"
>  #endif
>  

This broke the build when both are available.

$ make
CC      libavutil/hwcontext_opencl.o
src/libavutil/hwcontext_opencl.c: In function ‘opencl_device_derive’:
src/libavutil/hwcontext_opencl.c:1236:5: error: duplicate case value
     case AV_HWDEVICE_TYPE_VAAPI:
     ^~~~
src/libavutil/hwcontext_opencl.c:1205:5: note: previously used here
     case AV_HWDEVICE_TYPE_VAAPI:
     ^~~~
src/libavutil/hwcontext_opencl.c: In function ‘opencl_map_to’:
src/libavutil/hwcontext_opencl.c:2831:5: error: duplicate case value
     case AV_PIX_FMT_VAAPI:
     ^~~~
src/libavutil/hwcontext_opencl.c:2825:5: note: previously used here
     case AV_PIX_FMT_VAAPI:
     ^~~~
src/libavutil/hwcontext_opencl.c: In function ‘opencl_frames_derive_to’:
src/libavutil/hwcontext_opencl.c:2873:5: error: duplicate case value
     case AV_HWDEVICE_TYPE_VAAPI:
     ^~~~
src/libavutil/hwcontext_opencl.c:2866:5: note: previously used here
     case AV_HWDEVICE_TYPE_VAAPI:
     ^~~~
make: *** [ffbuild/common.mak:60: libavutil/hwcontext_opencl.o] Error 1
make: Target 'all' not remade because of errors.

$ cat config.h | grep HAVE_OPENCL
#define HAVE_OPENCL_D3D11 0
#define HAVE_OPENCL_DRM_ARM 0
#define HAVE_OPENCL_DRM_BEIGNET 1
#define HAVE_OPENCL_DXVA2 0
#define HAVE_OPENCL_VAAPI_BEIGNET 1
#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 1


I think in general the Beignet mapping is more useful if present since it has far fewer constraints, so perhaps disable this one if Beignet is there?

Alternatively, some sort of runtime detection.  Not sure how that should fit in, though.

- Mark


More information about the ffmpeg-devel mailing list