On 19/02/2017 19:46, Mark Thompson wrote:
> +#define CL_FUNC(name, desc, failure) do { \
> + ctx->name = clGetExtensionFunctionAddressForPlatform( \
> + hwctx->platform_id, #name); \
> + if (!ctx->name) { \
> + av_log(hwdev, AV_LOG_VERBOSE, \
> + desc " function not found (%s).\n", #name); \
> + goto failure; \
> + } else { \
> + av_log(hwdev, AV_LOG_VERBOSE, \
> + desc " function found (%s).\n", #name); \
> + } \
> + } while (0)
> +
> +#if HAVE_INTEL_OPENCL_VAAPI
> + {
> + CL_FUNC(clGetMemObjectFdIntel,
> + "Intel OpenCL to DRM mapping", no_vaapi);
> + CL_FUNC(clCreateBufferFromFdINTEL,
> + "Intel DRM to OpenCL buffer mapping", no_vaapi);
> + CL_FUNC(clCreateImageFromFdINTEL,
> + "Intel DRM to OpenCL image mapping", no_vaapi);
> +
> + ctx->vaapi_enabled = 1;
> + if (0) {
> + no_vaapi:
> + av_log(hwdev, AV_LOG_ERROR, "VAAPI to OpenCL mapping "
> + "not usable.\n");
> + ctx->vaapi_enabled = 0;
> + }
> + }
What about
+#define CL_FUNC(name, desc, failure) do {
if (!fail) {
...
if (!ctx->name) {
fail = 1;
}
}
} while (0)
{
int fail = 0;
CL_FUNC(clGetMemObjectFdIntel, "Intel OpenCL to DRM mapping");
...
if (fail) {
} else {
}
}
and we spare a slightly surprising goto?
lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel