[Mesa-dev] [PATCH] anv: bump the texture gather offset limits

Ilia Mirkin imirkin at alum.mit.edu
Sun Nov 27 23:05:27 UTC 2016


Yeah, so looks like the *implementation* tests do something like:

        vec2 32 ssa_4 = intrinsic load_ubo (ssa_3, ssa_1) () ()
        vec4 32 ssa_5 = tg4 ssa_2 (coord), ssa_4 (offset), 3
(gather_component), 0 (texture) 0 (sampler)

Which means that we don't hit the immediate path. I'll hack something
up to promote those to TG4_OFFSET_LOGICAL - seems easy enough.

On Sun, Nov 27, 2016 at 5:53 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Ah OK. But presumably the gather4_po variant is chosen when the
> constant offsets are outside the -8..7 range, since I didn't get any
> failures, and the test suite has checks around impl-defined
> min/maxes... Could be that all those were the non-const variants.
> Looking through the brw_fs code, I indeed don't see anything for
> promoting SHADER_OPCODE_TG4_LOGICAL into
> SHADER_OPCODE_TG4_OFFSET_LOGICAL. But that code is subtle, so perhaps
> it's handled somewhere I didn't notice.
>
>   -ilia
>
> On Sun, Nov 27, 2016 at 5:37 PM, Chris Forbes <chrisf at ijw.co.nz> wrote:
>> The HW limits here are -8/7 when using the gather4 message. [gather4_po
>> allows -32/31, and specified per channel]
>>
>> On Mon, Nov 28, 2016 at 10:49 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>>
>>> This matches what NVIDIA and AMD hardware expose.
>>>
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>>
>>> Not sure what the true HW limit is here. On NVIDIA, the true HW limit
>>> really
>>> is -32/31 though. As an aside, according to vulkan.gpuinfo.org, the Intel
>>> Windows driver also exposes -32/31.
>>>
>>> With the updated limits on SKL, everything still passes:
>>>
>>> ./deqp-vk --deqp-visibility=hidden --deqp-case='*texture_gather*'
>>> Test run totals:
>>>   Passed:        762/1524 (50.0%)
>>>   Failed:        0/1524 (0.0%)
>>>   Not supported: 762/1524 (50.0%)
>>>   Warnings:      0/1524 (0.0%)
>>>
>>>  src/intel/vulkan/anv_device.c | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
>>> index 16aba59..d20dc0f 100644
>>> --- a/src/intel/vulkan/anv_device.c
>>> +++ b/src/intel/vulkan/anv_device.c
>>> @@ -555,8 +555,8 @@ void anv_GetPhysicalDeviceProperties(
>>>        .minStorageBufferOffsetAlignment          = 1,
>>>        .minTexelOffset                           = -8,
>>>        .maxTexelOffset                           = 7,
>>> -      .minTexelGatherOffset                     = -8,
>>> -      .maxTexelGatherOffset                     = 7,
>>> +      .minTexelGatherOffset                     = -32,
>>> +      .maxTexelGatherOffset                     = 31,
>>>        .minInterpolationOffset                   = -0.5,
>>>        .maxInterpolationOffset                   = 0.4375,
>>>        .subPixelInterpolationOffsetBits          = 4,
>>> --
>>> 2.7.3
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>


More information about the mesa-dev mailing list