summaryrefslogtreecommitdiffstats
path: root/video/out/hwdec/hwdec_vaapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/hwdec/hwdec_vaapi.c')
-rw-r--r--video/out/hwdec/hwdec_vaapi.c74
1 files changed, 4 insertions, 70 deletions
diff --git a/video/out/hwdec/hwdec_vaapi.c b/video/out/hwdec/hwdec_vaapi.c
index 8eaf0df4e6..62c66e5b29 100644
--- a/video/out/hwdec/hwdec_vaapi.c
+++ b/video/out/hwdec/hwdec_vaapi.c
@@ -166,30 +166,15 @@ static int init(struct ra_hwdec *hw)
static void mapper_unmap(struct ra_hwdec_mapper *mapper)
{
struct priv_owner *p_owner = mapper->owner->priv;
- VADisplay *display = p_owner->display;
struct priv *p = mapper->priv;
- VAStatus status;
p_owner->interop_unmap(mapper);
-#if VA_CHECK_VERSION(1, 1, 0)
if (p->surface_acquired) {
for (int n = 0; n < p->desc.num_objects; n++)
close(p->desc.objects[n].fd);
p->surface_acquired = false;
}
-#endif
-
- if (p->buffer_acquired) {
- status = vaReleaseBufferHandle(display, p->current_image.buf);
- CHECK_VA_STATUS(mapper, "vaReleaseBufferHandle()");
- p->buffer_acquired = false;
- }
- if (p->current_image.image_id != VA_INVALID_ID) {
- status = vaDestroyImage(display, p->current_image.image_id);
- CHECK_VA_STATUS(mapper, "vaDestroyImage()");
- p->current_image.image_id = VA_INVALID_ID;
- }
}
static void mapper_uninit(struct ra_hwdec_mapper *mapper)
@@ -215,8 +200,6 @@ static int mapper_init(struct ra_hwdec_mapper *mapper)
struct priv_owner *p_owner = mapper->owner->priv;
struct priv *p = mapper->priv;
- p->current_image.buf = p->current_image.image_id = VA_INVALID_ID;
-
mapper->dst_params = mapper->src_params;
mapper->dst_params.imgfmt = mapper->src_params.hw_subfmt;
mapper->dst_params.hw_subfmt = 0;
@@ -250,10 +233,6 @@ static int mapper_map(struct ra_hwdec_mapper *mapper)
VAStatus status;
VADisplay *display = p_owner->display;
-#if VA_CHECK_VERSION(1, 1, 0)
- if (p->esh_not_implemented)
- goto esh_failed;
-
status = vaExportSurfaceHandle(display, va_surface_id(mapper->src),
VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2,
VA_EXPORT_SURFACE_READ_ONLY |
@@ -261,9 +240,7 @@ static int mapper_map(struct ra_hwdec_mapper *mapper)
&p->desc);
if (!CHECK_VA_STATUS_LEVEL(mapper, "vaExportSurfaceHandle()",
p_owner->probing_formats ? MSGL_V : MSGL_ERR)) {
- if (status == VA_STATUS_ERROR_UNIMPLEMENTED)
- p->esh_not_implemented = true;
- goto esh_failed;
+ goto err;
}
vaSyncSurface(display, va_surface_id(mapper->src));
// No need to error out if sync fails, but good to know if it did.
@@ -271,59 +248,16 @@ static int mapper_map(struct ra_hwdec_mapper *mapper)
p->surface_acquired = true;
if (!p_owner->interop_map(mapper))
- goto esh_failed;
+ goto err;
if (p->desc.fourcc == VA_FOURCC_YV12)
MPSWAP(struct ra_tex*, mapper->tex[1], mapper->tex[2]);
return 0;
-esh_failed:
- if (p->surface_acquired) {
- for (int n = 0; n < p->desc.num_objects; n++)
- close(p->desc.objects[n].fd);
- p->surface_acquired = false;
- }
-#endif // VA_CHECK_VERSION
-
- if (p_owner->interop_map_legacy) {
- VAImage *va_image = &p->current_image;
- status = vaDeriveImage(display, va_surface_id(mapper->src), va_image);
- if (!CHECK_VA_STATUS(mapper, "vaDeriveImage()"))
- goto err;
-
- VABufferInfo buffer_info = {.mem_type = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME};
- status = vaAcquireBufferHandle(display, va_image->buf, &buffer_info);
- if (!CHECK_VA_STATUS(mapper, "vaAcquireBufferHandle()"))
- goto err;
- p->buffer_acquired = true;
-
- int drm_fmts[8] = {
- // 1 bytes per component, 1-4 components
- MKTAG('R', '8', ' ', ' '), // DRM_FORMAT_R8
- MKTAG('G', 'R', '8', '8'), // DRM_FORMAT_GR88
- 0, // untested (DRM_FORMAT_RGB888?)
- 0, // untested (DRM_FORMAT_RGBA8888?)
- // 2 bytes per component, 1-4 components
- MKTAG('R', '1', '6', ' '), // proposed DRM_FORMAT_R16
- MKTAG('G', 'R', '3', '2'), // proposed DRM_FORMAT_GR32
- 0, // N/A
- 0, // N/A
- };
-
- if (!p_owner->interop_map_legacy(mapper, &buffer_info, drm_fmts))
- goto err;
-
- if (va_image->format.fourcc == VA_FOURCC_YV12)
- MPSWAP(struct ra_tex*, mapper->tex[1], mapper->tex[2]);
-
- return 0;
- } else {
- mapper_unmap(mapper);
- goto err;
- }
-
err:
+ mapper_unmap(mapper);
+
if (!p_owner->probing_formats)
MP_FATAL(mapper, "mapping VAAPI EGL image failed\n");
return -1;