[Mesa-dev] [PATCH 2/9] ff_fragment_shader: Use binding to set the sampler unit

Ian Romanick idr at freedesktop.org
Fri Oct 9 18:52:54 PDT 2015


From: Ian Romanick <ian.d.romanick at intel.com>

This is the way layout(binding=xxx) works from GLSL.  The old method
just happened to work (and significantly predated support for
layout(binding=xxx)), but future changes will break this.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Cc: "10.6 11.0" <mesa-stable at lists.freedesktop.org>
---
 src/mesa/main/ff_fragment_shader.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp
index e4e2a18..f5a4fa5 100644
--- a/src/mesa/main/ff_fragment_shader.cpp
+++ b/src/mesa/main/ff_fragment_shader.cpp
@@ -981,7 +981,8 @@ static void load_texture( texenv_fragment_program *p, GLuint unit )
     * NOTE: The cast to int is important.  Without it, the constant will have
     * type uint, and things later on may get confused.
     */
-   sampler->constant_value = new(p->mem_ctx) ir_constant(int(unit));
+   sampler->data.explicit_binding = true;
+   sampler->data.binding = unit;
 
    deref = new(p->mem_ctx) ir_dereference_variable(sampler);
    tex->set_sampler(deref, glsl_type::vec4_type);
-- 
2.1.0



More information about the mesa-dev mailing list