[Mesa-dev] [Mesa-stable] [PATCH] st/omx/enc: fix blit setup for YUV LoadImage

Leo Liu leo.liu at amd.com
Mon Apr 30 16:52:49 UTC 2018



On 04/30/2018 12:47 PM, Juan A. Suarez Romero wrote:
> On Fri, 2018-04-27 at 08:32 -0400, Leo Liu wrote:
>> 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 at lists.freedesktop.org>
>> ---
>>   src/gallium/state_trackers/omx/vid_enc_common.c | 8 ++++----
>
> Hello!
>
>
> For 18.0 stable branch, we do not have
> src/gallium/state_trackers/omx/vid_enc_common.c file. So I've applied the patch
> in src/gallium/state_trackers/omx_bellagio/vid_enc.c, which seems to be the
> right place here.
Right. Thanks.

Regards,
Leo


>
> Feel free to take a look at the cherry-picked patch:
>
> https://github.com/Igalia/release-mesa/commit/1a23971b49f77960afb2c686d20fced476
> 185602
>
>
> 	J.A.
>
>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/omx/vid_enc_common.c b/src/gallium/state_trackers/omx/vid_enc_common.c
>> index 874dd3a..2aa739d 100644
>> --- a/src/gallium/state_trackers/omx/vid_enc_common.c
>> +++ b/src/gallium/state_trackers/omx/vid_enc_common.c
>> @@ -353,7 +353,7 @@ OMX_ERRORTYPE enc_LoadImage_common(vid_enc_PrivateType * priv, OMX_VIDEO_PORTDEF
>>         blit.src.resource = inp->resource;
>>         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.width = def->nFrameWidth;
>>         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.filter = PIPE_TEX_FILTER_NEAREST;
>>   
>> -      blit.mask = PIPE_MASK_G;
>> +      blit.mask = PIPE_MASK_R;
>>         priv->s_pipe->blit(priv->s_pipe, &blit);
>>   
>> -      blit.src.box.x = 1;
>> -      blit.mask = PIPE_MASK_R;
>> +      blit.src.box.x = 0;
>> +      blit.mask = PIPE_MASK_G;
>>         priv->s_pipe->blit(priv->s_pipe, &blit);
>>         priv->s_pipe->flush(priv->s_pipe, NULL, 0);
>>   



More information about the mesa-dev mailing list