st/omx/enc: fix blit setup for YUV LoadImage
The blit here involves scaling since it's copying from I8 format to R8G8 format. Half of source will be filtered out with PIPE_TEX_FILTER_NEAREST instruction, it looks that GPU always uses the second half as source. Currently we use "1" as the start point of x for R, then causing 1 source pixel of U component shift to right. So "-1" should be the start point for U component. Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -353,7 +353,7 @@ OMX_ERRORTYPE enc_LoadImage_common(vid_enc_PrivateType * priv, OMX_VIDEO_PORTDEF
|
|||||||
blit.src.resource = inp->resource;
|
blit.src.resource = inp->resource;
|
||||||
blit.src.format = inp->resource->format;
|
blit.src.format = inp->resource->format;
|
||||||
|
|
||||||
blit.src.box.x = 0;
|
blit.src.box.x = -1;
|
||||||
blit.src.box.y = def->nFrameHeight;
|
blit.src.box.y = def->nFrameHeight;
|
||||||
blit.src.box.width = def->nFrameWidth;
|
blit.src.box.width = def->nFrameWidth;
|
||||||
blit.src.box.height = def->nFrameHeight / 2 ;
|
blit.src.box.height = def->nFrameHeight / 2 ;
|
||||||
@@ -367,11 +367,11 @@ OMX_ERRORTYPE enc_LoadImage_common(vid_enc_PrivateType * priv, OMX_VIDEO_PORTDEF
|
|||||||
blit.dst.box.depth = 1;
|
blit.dst.box.depth = 1;
|
||||||
blit.filter = PIPE_TEX_FILTER_NEAREST;
|
blit.filter = PIPE_TEX_FILTER_NEAREST;
|
||||||
|
|
||||||
blit.mask = PIPE_MASK_G;
|
blit.mask = PIPE_MASK_R;
|
||||||
priv->s_pipe->blit(priv->s_pipe, &blit);
|
priv->s_pipe->blit(priv->s_pipe, &blit);
|
||||||
|
|
||||||
blit.src.box.x = 1;
|
blit.src.box.x = 0;
|
||||||
blit.mask = PIPE_MASK_R;
|
blit.mask = PIPE_MASK_G;
|
||||||
priv->s_pipe->blit(priv->s_pipe, &blit);
|
priv->s_pipe->blit(priv->s_pipe, &blit);
|
||||||
priv->s_pipe->flush(priv->s_pipe, NULL, 0);
|
priv->s_pipe->flush(priv->s_pipe, NULL, 0);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user