frontends/va: Use is_video_target_buffer_supported for EFC
Move the internal logic to driver. Reviewed-by: Thong Thai <thong.thai@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29932>
This commit is contained in:
@@ -519,27 +519,6 @@ vlVaApplyDeint(vlVaDriver *drv, vlVaContext *context,
|
|||||||
return context->deint->video_buffer;
|
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
|
VAStatus
|
||||||
vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf)
|
vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf)
|
||||||
{
|
{
|
||||||
@@ -586,11 +565,12 @@ vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *contex
|
|||||||
src_region->height == dst_region->height &&
|
src_region->height == dst_region->height &&
|
||||||
src_region->x == dst_region->x &&
|
src_region->x == dst_region->x &&
|
||||||
src_region->y == dst_region->y &&
|
src_region->y == dst_region->y &&
|
||||||
can_convert_with_efc(src_surface, dst_surface) &&
|
pscreen->is_video_target_buffer_supported &&
|
||||||
pscreen->get_video_param(pscreen,
|
pscreen->is_video_target_buffer_supported(pscreen,
|
||||||
PIPE_VIDEO_PROFILE_UNKNOWN,
|
dst_surface->buffer->buffer_format,
|
||||||
PIPE_VIDEO_ENTRYPOINT_ENCODE,
|
src_surface->buffer,
|
||||||
PIPE_VIDEO_CAP_EFC_SUPPORTED)) {
|
PIPE_VIDEO_PROFILE_UNKNOWN,
|
||||||
|
PIPE_VIDEO_ENTRYPOINT_ENCODE)) {
|
||||||
|
|
||||||
vlVaSurface *surf = dst_surface;
|
vlVaSurface *surf = dst_surface;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user