Core Mesa now loads float/integer/boolean uniform data for drivers that
claim to support GLSL 1.30, thanks to Bryan Cain's recent work.  When we
run in "1.30 mode," we need to avoid double conversions.

Once we really support 1.30, we should just delete all this code.

Fixes piglit tests with INTEL_GLSL_VERSION=130 set:
- spec/glsl-1.10/fs-uniform-int-110.shader_test
- spec/glsl-1.30/fs-uniform-int-130.shader_test

Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
---
 src/mesa/drivers/dri/i965/brw_fs.cpp |   36 ++++++++++++++++++---------------
 1 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp 
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index cafb709..e163d30 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -279,23 +279,27 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type 
*type)
 
         assert(param < ARRAY_SIZE(c->prog_data.param));
 
-        switch (type->base_type) {
-        case GLSL_TYPE_FLOAT:
+        if (ctx->Const.GLSLVersion >= 130) {
            c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
-           break;
-        case GLSL_TYPE_UINT:
-           c->prog_data.param_convert[param] = PARAM_CONVERT_F2U;
-           break;
-        case GLSL_TYPE_INT:
-           c->prog_data.param_convert[param] = PARAM_CONVERT_F2I;
-           break;
-        case GLSL_TYPE_BOOL:
-           c->prog_data.param_convert[param] = PARAM_CONVERT_F2B;
-           break;
-        default:
-           assert(!"not reached");
-           c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
-           break;
+        } else {
+           switch (type->base_type) {
+           case GLSL_TYPE_FLOAT:
+              c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
+              break;
+           case GLSL_TYPE_UINT:
+              c->prog_data.param_convert[param] = PARAM_CONVERT_F2U;
+              break;
+           case GLSL_TYPE_INT:
+              c->prog_data.param_convert[param] = PARAM_CONVERT_F2I;
+              break;
+           case GLSL_TYPE_BOOL:
+              c->prog_data.param_convert[param] = PARAM_CONVERT_F2B;
+              break;
+           default:
+              assert(!"not reached");
+              c->prog_data.param_convert[param] = PARAM_NO_CONVERT;
+              break;
+           }
         }
         this->param_index[param] = loc;
         this->param_offset[param] = i;
-- 
1.7.6

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

Reply via email to