[Mesa-dev] [PATCH 15/53] st/nine: Add ATI1 and ATI2 support

Axel Davy axel.davy at ens.fr
Thu Jan 8 11:24:57 PST 2015



On 07/01/2015 23:18, Axel Davy wrote :
> On 07/01/2015 18:42, Ilia Mirkin wrote :
>> On Wed, Jan 7, 2015 at 11:36 AM, Axel Davy <axel.davy at ens.fr> wrote:
>>> Adds ATI1 and ATI2 support to nine.
>>>
>>> They map to PIPE_FORMAT_RGTC1_UNORM and PIPE_FORMAT_RGTC2_UNORM,
>>> but need special handling.
>>>
>>> Reviewed-by: David Heidelberg <david at ixit.cz>
>>> Signed-off-by: Axel Davy <axel.davy at ens.fr>
>>> Signed-off-by: Xavier Bouchoux <xavierb at gmail.com>
>>>
>>> Cc: "10.4" <mesa-stable at lists.freedesktop.org>
>>> ---
>>>   src/gallium/state_trackers/nine/adapter9.c       |  3 +++
>>>   src/gallium/state_trackers/nine/basetexture9.c   |  9 ++++++---
>>>   src/gallium/state_trackers/nine/cubetexture9.c   |  4 ++++
>>>   src/gallium/state_trackers/nine/nine_pipe.h      |  2 ++
>>>   src/gallium/state_trackers/nine/surface9.c       | 19 
>>> +++++++++++++++----
>>>   src/gallium/state_trackers/nine/volumetexture9.c |  4 ++++
>>>   6 files changed, 34 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/gallium/state_trackers/nine/adapter9.c 
>>> b/src/gallium/state_trackers/nine/adapter9.c
>>> index 871a9a3..481f863 100644
>>> --- a/src/gallium/state_trackers/nine/adapter9.c
>>> +++ b/src/gallium/state_trackers/nine/adapter9.c
>>> @@ -302,6 +302,9 @@ NineAdapter9_CheckDeviceFormat( struct 
>>> NineAdapter9 *This,
>>>           return D3DERR_NOTAVAILABLE;
>>>       }
>>>
>>> +    /* we support ATI1 and ATI2 hack only for 2D textures */
>>> +    if (RType != D3DRTYPE_TEXTURE && (CheckFormat == D3DFMT_ATI1 || 
>>> CheckFormat == D3DFMT_ATI2))
>>> +        return D3DERR_NOTAVAILABLE;
>>>       /* if (Usage & D3DUSAGE_NONSECURE) { don't know the 
>>> implications of this } */
>>>       /* if (Usage & D3DUSAGE_SOFTWAREPROCESSING) { we can always 
>>> support this } */
>>>
>>> diff --git a/src/gallium/state_trackers/nine/basetexture9.c 
>>> b/src/gallium/state_trackers/nine/basetexture9.c
>>> index ffccafd..ea9af94 100644
>>> --- a/src/gallium/state_trackers/nine/basetexture9.c
>>> +++ b/src/gallium/state_trackers/nine/basetexture9.c
>>> @@ -486,9 +486,12 @@ NineBaseTexture9_UpdateSamplerView( struct 
>>> NineBaseTexture9 *This,
>>>           swizzle[1] = PIPE_SWIZZLE_ZERO;
>>>           swizzle[2] = PIPE_SWIZZLE_ZERO;
>>>           swizzle[3] = PIPE_SWIZZLE_ONE;
>>> -    } else if (resource->format != PIPE_FORMAT_A8_UNORM) {
>>> -        /* A8 is the only exception that should have 0.0 as default 
>>> values
>>> -         * for RGB. It is already what gallium does. All the other 
>>> ones
>>> +    } else if (resource->format != PIPE_FORMAT_A8_UNORM &&
>>> +               resource->format != PIPE_FORMAT_RGTC1_UNORM) {
>>> +        /* exceptions:
>>> +         * A8 should have 0.0 as default values for RGB.
>>> +         * ATI1/RGTC1 should be r 0 0 1 (tested on windows).
>> But RGTC2 is rg11??
> I'll double check
Yes, ATI1 is r001 and ATI2 rg11

Axel


More information about the mesa-dev mailing list