[Mesa-dev] [PATCH 06/14] glsl: Add texelFetch(*samplerBuffer) entrypoints to GLSL 1.40.

Eric Anholt eric at anholt.net
Wed Mar 28 10:58:50 PDT 2012


Fix texelFetch(sampler2DRect) and textureSize(samplerBuffer)
generation to not reference a LOD at the same time because it's easier
than not fixing it.
---
 src/glsl/builtins/profiles/140.frag         |    4 ++++
 src/glsl/builtins/profiles/140.vert         |    4 ++++
 src/glsl/builtins/tools/texture_builtins.py |   13 +++++++++----
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/glsl/builtins/profiles/140.frag b/src/glsl/builtins/profiles/140.frag
index da28473..b534827 100644
--- a/src/glsl/builtins/profiles/140.frag
+++ b/src/glsl/builtins/profiles/140.frag
@@ -714,6 +714,10 @@ uvec4 texelFetch(usampler1DArray sampler, ivec2 P, int lod);
 ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod);
 uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod);
 
+ vec4 texelFetch( samplerBuffer sampler, int P);
+ivec4 texelFetch(isamplerBuffer sampler, int P);
+uvec4 texelFetch(usamplerBuffer sampler, int P);
+
 /* texelFetchOffset */
  vec4 texelFetchOffset( sampler1D sampler, int P, int lod, int offset);
 ivec4 texelFetchOffset(isampler1D sampler, int P, int lod, int offset);
diff --git a/src/glsl/builtins/profiles/140.vert b/src/glsl/builtins/profiles/140.vert
index bfef4ed..7aa9240 100644
--- a/src/glsl/builtins/profiles/140.vert
+++ b/src/glsl/builtins/profiles/140.vert
@@ -635,6 +635,10 @@ uvec4 texelFetch(usampler1DArray sampler, ivec2 P, int lod);
 ivec4 texelFetch(isampler2DArray sampler, ivec3 P, int lod);
 uvec4 texelFetch(usampler2DArray sampler, ivec3 P, int lod);
 
+ vec4 texelFetch( samplerBuffer sampler, int P);
+ivec4 texelFetch(isamplerBuffer sampler, int P);
+uvec4 texelFetch(usamplerBuffer sampler, int P);
+
 /* texelFetchOffset */
  vec4 texelFetchOffset( sampler1D sampler, int P, int lod, int offset);
 ivec4 texelFetchOffset(isampler1D sampler, int P, int lod, int offset);
diff --git a/src/glsl/builtins/tools/texture_builtins.py b/src/glsl/builtins/tools/texture_builtins.py
index cd15dc4..3a4943a 100755
--- a/src/glsl/builtins/tools/texture_builtins.py
+++ b/src/glsl/builtins/tools/texture_builtins.py
@@ -25,6 +25,8 @@ def get_sampler_dim(sampler_type):
         sampler_dim = 3
     elif sampler_type == "ExternalOES":
         sampler_dim = 2
+    elif sampler_type == "Buffer":
+        sampler_dim = 1
     else:
         assert False ("coord_dim: invalid sampler_type: " + sampler_type)
     return sampler_dim
@@ -71,7 +73,9 @@ def generate_sigs(g, tex_inst, sampler_type, variant = 0, unused_fields = 0):
         print "\n       (declare (in) " + vec_type("i" if tex_inst == "txf" else "", coord_dim + extra_dim) + " P)",
     if tex_inst == "txl":
         print "\n       (declare (in) float lod)",
-    elif tex_inst == "txf" or (tex_inst == "txs" and "Rect" not in sampler_type):
+    elif (tex_inst == "txf" and "Buffer" not in sampler_type):
+        print "\n       (declare (in) int lod)",
+    elif (tex_inst == "txs" and "Rect" not in sampler_type):
         print "\n       (declare (in) int lod)",
     elif tex_inst == "txd":
         grad_type = vec_type("", coord_dim)
@@ -115,12 +119,12 @@ def generate_sigs(g, tex_inst, sampler_type, variant = 0, unused_fields = 0):
     # Bias/explicit LOD/gradient:
     if tex_inst == "txb":
         print "(var_ref bias)",
-    elif tex_inst == "txs":
-        if "Rect" not in sampler_type:
+    elif tex_inst == "txs" or tex_inst == "txf":
+        if "Rect" not in sampler_type and "Buffer" not in sampler_type:
             print "(var_ref lod)",
         else:
             print "(constant int (0))"
-    elif tex_inst == "txl" or tex_inst == "txf":
+    elif tex_inst == "txl":
         print "(var_ref lod)",
     elif tex_inst == "txd":
         print "((var_ref dPdx) (var_ref dPdy))",
@@ -255,6 +259,7 @@ def generate_texture_functions(fs):
     generate_fiu_sigs("txf", "3D")
     generate_fiu_sigs("txf", "1DArray")
     generate_fiu_sigs("txf", "2DArray")
+    generate_fiu_sigs("txf", "Buffer")
     end_function(fs, "texelFetch")
 
     start_function("texelFetchOffset")
-- 
1.7.9.1



More information about the mesa-dev mailing list