[Mesa-dev] [PATCH 1/2] radeonsi: implement ARB_texture_gather and Gather functions from GLSL 4.00

Marek Olšák maraeo at gmail.com
Fri Jun 6 15:42:33 PDT 2014


All offsets are six-bit signed integers on SI packed into one dword.
They are set in the same way no matter what the instruction is.

All SAMPLE and GATHER4 instructions, i.e. those which take
floating-point coordinates, support offsets. Only the IMAGE_LOAD
instructions (texelFetch) don't support it, but since the coordinates
are always integer, we can just add the offset with UADD, so the range
is pretty much unlimited there.

Marek

On Sat, Jun 7, 2014 at 12:16 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Fri, Jun 6, 2014 at 5:58 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
>> index 4b96f20..a3e1846 100644
>> --- a/src/gallium/drivers/radeonsi/si_pipe.c
>> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
>> @@ -294,11 +297,12 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
>>
>>         case PIPE_CAP_MIN_TEXTURE_GATHER_OFFSET:
>>         case PIPE_CAP_MIN_TEXEL_OFFSET:
>> -               return -8;
>> +               return -32;
>>
>>         case PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET:
>>         case PIPE_CAP_MAX_TEXEL_OFFSET:
>> -               return 7;
>> +               return 31;
>
> Is it actually the case that you can handle texelFetchOffset with a
> -32..+31 range? On nvc0, it can still only do -8..+7 for texelFetch
> even though it can do -32..+31 for textureGather, which is why I'm
> asking.
>
>   -ilia


More information about the mesa-dev mailing list