i965/fs: Do not set the size for zero-size uniforms
authorMarta Lofstedt <marta.lofstedt@intel.com>
Fri, 28 Aug 2015 08:22:41 +0000 (10:22 +0200)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 28 Aug 2015 16:52:59 +0000 (09:52 -0700)
Zero sized uniforms can exist in the list, but they don't get get any space
allocated in prog_data->params or in the param_size array, so the size
should not be set for them.  This was previously fixed in:

commit: 781dc7c0e1f41502f18e07c0940af949a78d2792.

However,

commit: 259f7291de2387aa3ac5f856b39b7b934a1d8e7d

removed the fix.

Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_nir.cpp

index 430efb3021d717fa65395826186cc757c361afb6..9d14d1f2139df7a9335f235d91552c8c761f9106 100644 (file)
@@ -190,8 +190,8 @@ fs_visitor::nir_setup_uniforms(nir_shader *shader)
             nir_setup_builtin_uniform(var);
          else
             nir_setup_uniform(var);
-
-         param_size[var->data.driver_location] = type_size_scalar(var->type);
+         if(type_size_scalar(var->type) > 0)
+            param_size[var->data.driver_location] = type_size_scalar(var->type);
       }
    } else {
       /* prog_to_nir only creates a single giant uniform variable so we can
@@ -202,7 +202,8 @@ fs_visitor::nir_setup_uniforms(nir_shader *shader)
                &prog->Parameters->ParameterValues[p][i];
          }
       }
-      param_size[0] = prog->Parameters->NumParameters * 4;
+      if(prog->Parameters->NumParameters > 0)
+         param_size[0] = prog->Parameters->NumParameters * 4;
    }
 }