On 04/13/2012 04:38 PM, Eric Anholt wrote:
Fixes the new piglit texelFetch() tests on these.  Note that the rest
of the new functions are not tested (same as the non-2DRect versions
of most of them).
---
  src/glsl/builtins/profiles/140.frag         |   68 +++++++++++++++++++++++++++
  src/glsl/builtins/profiles/140.vert         |   68 +++++++++++++++++++++++++++
  src/glsl/builtins/tools/texture_builtins.py |   22 +++++++++
  3 files changed, 158 insertions(+)

diff --git a/src/glsl/builtins/profiles/140.frag 
b/src/glsl/builtins/profiles/140.frag
index ba616a1..36fa822 100644
--- a/src/glsl/builtins/profiles/140.frag
+++ b/src/glsl/builtins/profiles/140.frag
[snip]
@@ -953,6 +1012,15 @@ uvec4 textureProjGradOffset(usampler2D s, vec3 P, vec2 
dx, vec2 dy, ivec2 off);
  ivec4 textureProjGradOffset(isampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 
off);
  uvec4 textureProjGradOffset(usampler2D s, vec4 P, vec2 dx, vec2 dy, ivec2 
off);

+ vec4 textureProjGradOffset( sampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 
off);
+ivec4 textureProjGradOffset(isampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 
off);
+uvec4 textureProjGradOffset(usampler2DRect s, vec3 P, vec2 dx, vec2 dy, ivec2 
off);
+ vec4 textureProjGradOffset( sampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 
off);
+ivec4 textureProjGradOffset(isampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 
off);
+uvec4 textureProjGradOffset(usampler2DRect s, vec4 P, vec2 dx, vec2 dy, ivec2 
off);
+
+float textureProjGradOffset(sampler2DRectShadow s, vec4 P, vec2 dx, vec2 dy, 
vec2 o);

This is supposed to be "ivec2 offset", not a vec2.

Which brings up another issue: GLSL 1.30 -> 4.10 all state that textureProjGradOffset's sampler2D, sampler3D, and sampler2DShadow variants use vec2/vec3 offset rather than ivecs.

That's rubbish for several reasons:
- The offset is an integer number of texels; hardware uses integers too.
- /Every/ other texture function uses ivecs.

GLSL 4.20 corrects all of these to be ivec types. Neither the 4.20 spec nor ARB_shading_language_420pack mention this as a concious change though, so I'm inclined to treat it as a long running typo.

Regardless, texture_builtins.py implements the functions using ivec for all variants, so these functions -are- broken in our current implementation.

[snip]

Assuming you change the 2DRectShadow to ivec2 in both profiles:
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to