From 735c467197fb11138dcb8a22ccdbe4e8138a72a2 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Tue, 25 Jun 2024 11:30:38 +0200 Subject: [PATCH] frontends/va: Use is_video_target_buffer_supported for EFC Move the internal logic to driver. Reviewed-by: Thong Thai Part-of: --- src/gallium/frontends/va/postproc.c | 32 ++++++----------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/src/gallium/frontends/va/postproc.c b/src/gallium/frontends/va/postproc.c index ac963906af0..b3c92218c69 100644 --- a/src/gallium/frontends/va/postproc.c +++ b/src/gallium/frontends/va/postproc.c @@ -519,27 +519,6 @@ vlVaApplyDeint(vlVaDriver *drv, vlVaContext *context, return context->deint->video_buffer; } -static bool can_convert_with_efc(vlVaSurface *src, vlVaSurface *dst) -{ - enum pipe_format src_format, dst_format; - - if (src->buffer->interlaced) - return false; - - src_format = src->buffer->buffer_format; - - if (src_format != PIPE_FORMAT_B8G8R8A8_UNORM && - src_format != PIPE_FORMAT_R8G8B8A8_UNORM && - src_format != PIPE_FORMAT_B8G8R8X8_UNORM && - src_format != PIPE_FORMAT_R8G8B8X8_UNORM) - return false; - - dst_format = dst->encoder_format != PIPE_FORMAT_NONE ? - dst->encoder_format : dst->buffer->buffer_format; - - return dst_format == PIPE_FORMAT_NV12; -} - VAStatus vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) { @@ -586,11 +565,12 @@ vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *contex src_region->height == dst_region->height && src_region->x == dst_region->x && src_region->y == dst_region->y && - can_convert_with_efc(src_surface, dst_surface) && - pscreen->get_video_param(pscreen, - PIPE_VIDEO_PROFILE_UNKNOWN, - PIPE_VIDEO_ENTRYPOINT_ENCODE, - PIPE_VIDEO_CAP_EFC_SUPPORTED)) { + pscreen->is_video_target_buffer_supported && + pscreen->is_video_target_buffer_supported(pscreen, + dst_surface->buffer->buffer_format, + src_surface->buffer, + PIPE_VIDEO_PROFILE_UNKNOWN, + PIPE_VIDEO_ENTRYPOINT_ENCODE)) { vlVaSurface *surf = dst_surface;