[Mesa-dev] [PATCH] st/vdpau: avoid sending buffers with 10bit channels to X
Nayan Deshmukh
nayan26deshmukh at gmail.com
Wed Jan 18 17:23:16 UTC 2017
On Wed, Jan 18, 2017 at 9:21 PM, Michel Dänzer <michel at daenzer.net> wrote:
> On 19/01/17 12:27 AM, Nayan Deshmukh wrote:
>> PresentPixmap only works if the pixmap depth matches the window
>> depth, otherwise it returns a BadMatch protocol error.
>>
>> Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com>
>> ---
>> src/gallium/state_trackers/vdpau/output.c | 6 ++++++
>> src/gallium/state_trackers/vdpau/presentation.c | 6 +++---
>> src/gallium/state_trackers/vdpau/vdpau_private.h | 1 +
>> 3 files changed, 10 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
>> index 98a8011..4466483 100644
>> --- a/src/gallium/state_trackers/vdpau/output.c
>> +++ b/src/gallium/state_trackers/vdpau/output.c
>> @@ -75,6 +75,12 @@ vlVdpOutputSurfaceCreate(VdpDevice device,
>>
>> memset(&res_tmpl, 0, sizeof(res_tmpl));
>>
>> + if (rgba_format == VDP_RGBA_FORMAT_B10G10R10A2 ||
>> + rgba_format == VDP_RGBA_FORMAT_R10G10B10A2)
>> + vlsurface->send_to_X = false;
>> + else
>> + vlsurface->send_to_X = true;
>
> This isn't sufficient: The window depth could be != 24 (in particular 16
> or 15, or 30). Even if the depths match, the result won't look correctly
In case the depth is not 24 then vl_winsys_dri3.c will return null and
it will follow the older code path.
> if the VDPAU RGB component order doesn't match the X11 one. So
> technically this actually needs to check the window's visual instead of
> just the depth (though in practice I think all X11 visuals use the same
> RGB component order).
>
What is the order that they use?
If they practically use the same order it will be easier to encode it instead
of checking it every time.
Regards,
Nayan
>
> --
> Earthling Michel Dänzer | http://www.amd.com
> Libre software enthusiast | Mesa and X developer
More information about the mesa-dev
mailing list