summaryrefslogtreecommitdiff
path: root/libavutil/hwcontext_opencl.c
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2020-05-20 20:58:03 +0100
committerLynne <dev@lynne.ee>2020-05-23 19:07:26 +0100
commit2e08b39444ab27477e6ea2a184ae7fe1b9786594 (patch)
tree085ed11f850d45108a492b80e5b5cb5c5b5708d3 /libavutil/hwcontext_opencl.c
parent9576e49b40f335de091e9f77c71e4bc2f638d224 (diff)
downloadffmpeg-2e08b39444ab27477e6ea2a184ae7fe1b9786594.tar.gz
hwcontext: add av_hwdevice_ctx_create_derived_opts
This allows for users who derive devices to set options for the new device context they derive. The main use case of this is to allow users to enable extensions (such as surface drawing extensions) in Vulkan while deriving from the device their frames are on. That way, users don't need to write any initialization code themselves, since the Vulkan spec invalidates mixing instances, physical devices and active devices. Apart from Vulkan, other hwcontexts ignore the opts argument since they don't support options at all (or in VAAPI and OpenCL's case, options are currently only used for device selection, which device_derive overrides).
Diffstat (limited to 'libavutil/hwcontext_opencl.c')
-rw-r--r--libavutil/hwcontext_opencl.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libavutil/hwcontext_opencl.c b/libavutil/hwcontext_opencl.c
index 41fdfe96f1..cd8638abbb 100644
--- a/libavutil/hwcontext_opencl.c
+++ b/libavutil/hwcontext_opencl.c
@@ -1194,7 +1194,7 @@ static int opencl_filter_drm_arm_device(AVHWDeviceContext *hwdev,
#endif
static int opencl_device_derive(AVHWDeviceContext *hwdev,
- AVHWDeviceContext *src_ctx,
+ AVHWDeviceContext *src_ctx, AVDictionary *opts,
int flags)
{
int err;
@@ -1207,16 +1207,16 @@ static int opencl_device_derive(AVHWDeviceContext *hwdev,
// Surface mapping works via DRM PRIME fds with no special
// initialisation required in advance. This just finds the
// Beignet ICD by name.
- AVDictionary *opts = NULL;
+ AVDictionary *selector_opts = NULL;
- err = av_dict_set(&opts, "platform_vendor", "Intel", 0);
+ err = av_dict_set(&selector_opts, "platform_vendor", "Intel", 0);
if (err >= 0)
- err = av_dict_set(&opts, "platform_version", "beignet", 0);
+ err = av_dict_set(&selector_opts, "platform_version", "beignet", 0);
if (err >= 0) {
OpenCLDeviceSelector selector = {
.platform_index = -1,
.device_index = 0,
- .context = opts,
+ .context = selector_opts,
.enumerate_platforms = &opencl_enumerate_platforms,
.filter_platform = &opencl_filter_platform,
.enumerate_devices = &opencl_enumerate_devices,
@@ -1224,7 +1224,7 @@ static int opencl_device_derive(AVHWDeviceContext *hwdev,
};
err = opencl_device_create_internal(hwdev, &selector, NULL);
}
- av_dict_free(&opts);
+ av_dict_free(&selector_opts);
}
break;
#endif