On 03/28/2012 10:58 AM, Eric Anholt wrote:
All that should be needed is that it exists.  Fixes segfaults on first
_mesa_update_context() with a samplerBuffer-using shader active but
without a particular buffer texture enabled.
---
  src/glsl/builtins/tools/texture_builtins.py |    4 +---
  src/mesa/main/texobj.c                      |    5 +++++
  2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/glsl/builtins/tools/texture_builtins.py 
b/src/glsl/builtins/tools/texture_builtins.py
index 3a4943a..bbbbd0b 100755
--- a/src/glsl/builtins/tools/texture_builtins.py
+++ b/src/glsl/builtins/tools/texture_builtins.py
@@ -73,9 +73,7 @@ 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" and "Buffer" not in sampler_type):
-        print "\n       (declare (in) int lod)",
-    elif (tex_inst == "txs" and "Rect" not in sampler_type):
+    elif ((tex_inst == "txf" or tex_inst == "txs") and "Buffer" not in sampler_type and 
"Rect" not in sampler_type):
          print "\n       (declare (in) int lod)",
      elif tex_inst == "txd":
          grad_type = vec_type("", coord_dim)

You meant to squash this into patch 6, not this one. I'm fine with the change.

diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index d7dee4f..88dc3b1 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -756,6 +756,9 @@ _mesa_get_fallback_texture(struct gl_context *ctx, 
gl_texture_index tex)
           target = GL_TEXTURE_1D;
           break;
        case TEXTURE_BUFFER_INDEX:
+         dims = 0;
+         target = GL_TEXTURE_BUFFER;
+         break;
        case TEXTURE_EXTERNAL_INDEX:
        default:
           /* no-op */
@@ -794,6 +797,8 @@ _mesa_get_fallback_texture(struct gl_context *ctx, 
gl_texture_index tex)
                                      GL_RGBA, texFormat);

           switch (dims) {
+        case 0:
+           break;
           case 1:
              ctx->Driver.TexImage1D(ctx, texImage, GL_RGBA,
                                     width, 0,

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to