[Nouveau] ddx/nv50: use drawable.bitsPerPixel to decide format

Christoph Bumiller e0425955 at student.tuwien.ac.at
Wed Dec 30 09:37:29 PST 2009


On 12/29/2009 06:06 PM, Marcin Slusarz wrote:
> On Mon, Dec 28, 2009 at 06:55:23PM +0100, Maarten Maathuis wrote:
>> On Mon, Dec 28, 2009 at 6:37 PM, Marcin Slusarz
>> <marcin.slusarz at gmail.com> wrote:
>>>
>>> ---
>>>  src/nv50_exa.c |  155 ++++++++++++++++++++++++++++++++++++--------------------
>>>  1 files changed, 100 insertions(+), 55 deletions(-)
>>>
>>> diff --git a/src/nv50_exa.c b/src/nv50_exa.c
>>> index 1f5a4ac..54968e8 100644
>>> --- a/src/nv50_exa.c
>>> +++ b/src/nv50_exa.c
>>> @@ -79,15 +79,16 @@ NV50EXA2DSurfaceFormat(PixmapPtr ppix, uint32_t *fmt)
>>>
>>>        switch (ppix->drawable.depth) {
>>>        case 8 : *fmt = NV50_2D_SRC_FORMAT_R8_UNORM; break;
>>> -       case 15: *fmt = NV50_2D_SRC_FORMAT_X1R5G5B5_UNORM; break;
>>> -       case 16: *fmt = NV50_2D_SRC_FORMAT_R5G6B5_UNORM; break;
>>> +       case 15:
>>> +       case 16:
>>> +               *fmt = NV50_2D_SRC_FORMAT_R5G6B5_UNORM;
>>> +               break;
>>
>> depth 15 is R5G5B5, why this change?
> 
> it's the only value which passes rendercheck tests
> (rendercheck -t blend -o Src -f x1r5g5b5,r5g5b5)
> 
This is as far as I can tell because x1r5g5b5 (XRender direct format as
queries by rendercheck) has depth set to 16, and therefore uses case 16
here.
If you use the same for depth 15, the rendercheck test check succeeds,
but doing this is wrong.
If you check bitsPerPixel instead, this will be 15 for both x1r5g5b5
and r5g5b5, and all looks fine then.

See the attached patch. I'm not sure if I should have changed the xv
stuff also.
>>>        case 24: *fmt = NV50_2D_SRC_FORMAT_X8R8G8B8_UNORM; break;
>>>        case 30: *fmt = NV50_2D_SRC_FORMAT_A2B10G10R10_UNORM; break;
>>>        case 32: *fmt = NV50_2D_SRC_FORMAT_A8R8G8B8_UNORM; break;
>>>        default:
>>>                 NOUVEAU_FALLBACK("Unknown surface format for bpp=%d\n",
>>>                                  ppix->drawable.depth);
>>> -                return FALSE;
>>
>> Why did you remove this?
> 
> because it's unreachable, NOUVEAU_FALLBACK returns FALSE
>  
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-nv50-check-drawable.bitsPerPixel-instead-of-depth-to.patch
Url: http://lists.freedesktop.org/archives/nouveau/attachments/20091230/73085fd7/attachment.ksh 


More information about the Nouveau mailing list