radeonsi: force level zero on image instructions in non-fragment shaders (v2)
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 12 May 2016 17:44:44 +0000 (12:44 -0500)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Tue, 17 May 2016 20:28:40 +0000 (15:28 -0500)
commit941756f09271cd41b8a8bb9373caa58629306bd5
tree6c79f6afe9a2d9837e863baa47a7f315696a22bd
parent988fd6c922b1547ff0961b6fdf5736709b4d9cd9
radeonsi: force level zero on image instructions in non-fragment shaders (v2)

Section 8.9 (Texture Functions) of the OpenGL Shading Language 4.5
specification:

   However, automatic level of detail is computed only for fragment shaders.
   Other shaders operate as though the base level of detail were computed as
   zero.

and Section 8.9.3 (Texture Gather Functions):

   When performing a texture gather operation, the minification and
   magnification filters are ignored, and the rules for LINEAR filtering in
   the OpenGL Specification are applied to the base level of the texture
   image to identify the four texels i_0 j_1, i_1 j_1, i_1 j_0, and i_0 j_0.

Of course, explicit LOD or derivative variants work in all shader types.

This fixes several GL4x-CTS.texture_gather.* tests.

v2: TG4 is always level zero (thanks, Ilia)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_shader.c