Module: Mesa
Branch: master
Commit: 781dc7c0e1f41502f18e07c0940af949a78d2792
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=781dc7c0e1f41502f18e07c0940af949a78d2792

Author: Francisco Jerez <[email protected]>
Date:   Thu Jul 30 14:45:57 2015 +0300

i965/fs: Fix regression with SIMD8 VS since 
b5f1a48e234d47b24df38cb562cffb8941d43795.

With num_direct_uniforms == 0 there's no space allocated in the
param_size array for the one block of direct uniforms -- On the FS
stage this would be a harmless no-op because it would simply re-set
one of the param_size entries allocated for the sampler units to zero,
but on the VS stage it has been reported to cause memory corruption
followed by a crash -- Surprising how a full piglit run on Gen8 didn't
catch it.

Reported-and-reviewed-by: "Lofstedt, Marta" <[email protected]>

---

 src/mesa/drivers/dri/i965/brw_fs_nir.cpp |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp 
b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index 722e4e7..9cb7b0d 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -182,7 +182,8 @@ fs_visitor::nir_setup_uniforms(nir_shader *shader)
    /* We split the uniform register file in half.  The first half is
     * entirely direct uniforms.  The second half is indirect.
     */
-   param_size[0] = num_direct_uniforms;
+   if (num_direct_uniforms > 0)
+      param_size[0] = num_direct_uniforms;
    if (shader->num_uniforms > num_direct_uniforms)
       param_size[num_direct_uniforms] = shader->num_uniforms - 
num_direct_uniforms;
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to