Mesa (master): v3d: Enable NaN propagation in the VS and CS as well.

Eric Anholt anholt at kemper.freedesktop.org
Thu May 17 14:12:04 UTC 2018


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

Author: Eric Anholt <eric at anholt.net>
Date:   Tue May  8 13:22:57 2018 -0700

v3d: Enable NaN propagation in the VS and CS as well.

Fixes piglit vs-isnan-*.shader_test at the expense of gl-1.0-spot-light.

---

 src/broadcom/cle/v3d_packet_v33.xml | 4 +++-
 src/broadcom/cle/v3d_packet_v41.xml | 4 +++-
 src/broadcom/cle/v3d_packet_v42.xml | 4 +++-
 src/gallium/drivers/v3d/v3dx_draw.c | 4 +++-
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/broadcom/cle/v3d_packet_v33.xml b/src/broadcom/cle/v3d_packet_v33.xml
index aac9fbfd28..22d43cc802 100644
--- a/src/broadcom/cle/v3d_packet_v33.xml
+++ b/src/broadcom/cle/v3d_packet_v33.xml
@@ -702,15 +702,17 @@
     <field name="Fragment Shader Code Address" size="29" start="99" type="address"/>
     <field name="Fragment Shader 2-way threadable" size="1" start="96" type="bool"/>
     <field name="Fragment Shader 4-way threadable" size="1" start="97" type="bool"/>
-    <field name="Propagate NaNs" size="1" start="98" type="bool"/>
+    <field name="Fragment Shader Propagate NaNs" size="1" start="98" type="bool"/>
     <field name="Fragment Shader Uniforms Address" size="32" start="16b" type="address"/>
     <field name="Vertex Shader Code Address" size="32" start="20b" type="address"/>
     <field name="Vertex Shader 2-way threadable" size="1" start="160" type="bool"/>
     <field name="Vertex Shader 4-way threadable" size="1" start="161" type="bool"/>
+    <field name="Vertex Shader Propagate NaNs" size="1" start="162" type="bool"/>
     <field name="Vertex Shader Uniforms Address" size="32" start="24b" type="address"/>
     <field name="Coordinate Shader Code Address" size="32" start="28b" type="address"/>
     <field name="Coordinate Shader 2-way threadable" size="1" start="224" type="bool"/>
     <field name="Coordinate Shader 4-way threadable" size="1" start="225" type="bool"/>
+    <field name="Coordinate Shader Propagate NaNs" size="1" start="226" type="bool"/>
     <field name="Coordinate Shader Uniforms Address" size="32" start="32b" type="address"/>
   </struct>
 
diff --git a/src/broadcom/cle/v3d_packet_v41.xml b/src/broadcom/cle/v3d_packet_v41.xml
index 5f6d643195..1fb5d5d284 100644
--- a/src/broadcom/cle/v3d_packet_v41.xml
+++ b/src/broadcom/cle/v3d_packet_v41.xml
@@ -781,17 +781,19 @@
     <field name="Fragment Shader Code Address" size="32" start="12b" type="address"/>
     <field name="Fragment Shader 4-way threadable" size="1" start="96" type="bool"/>
     <field name="Fragment Shader start in final thread section" size="1" start="97" type="bool"/>
-    <field name="Propagate NaNs" size="1" start="98" type="bool"/>
+    <field name="Fragment Shader Propagate NaNs" size="1" start="98" type="bool"/>
     <field name="Fragment Shader Uniforms Address" size="32" start="16b" type="address"/>
 
     <field name="Vertex Shader Code Address" size="32" start="20b" type="address"/>
     <field name="Vertex Shader 4-way threadable" size="1" start="160" type="bool"/>
     <field name="Vertex Shader start in final thread section" size="1" start="161" type="bool"/>
+    <field name="Vertex Shader Propagate NaNs" size="1" start="162" type="bool"/>
     <field name="Vertex Shader Uniforms Address" size="32" start="24b" type="address"/>
 
     <field name="Coordinate Shader Code Address" size="32" start="28b" type="address"/>
     <field name="Coordinate Shader 4-way threadable" size="1" start="224" type="bool"/>
     <field name="Coordinate Shader start in final thread section" size="1" start="225" type="bool"/>
+    <field name="Coordinate Shader Propagate NaNs" size="1" start="226" type="bool"/>
     <field name="Coordinate Shader Uniforms Address" size="32" start="32b" type="address"/>
   </struct>
 
diff --git a/src/broadcom/cle/v3d_packet_v42.xml b/src/broadcom/cle/v3d_packet_v42.xml
index f180e5eec5..a562d662ff 100644
--- a/src/broadcom/cle/v3d_packet_v42.xml
+++ b/src/broadcom/cle/v3d_packet_v42.xml
@@ -782,17 +782,19 @@
     <field name="Fragment Shader Code Address" size="32" start="12b" type="address"/>
     <field name="Fragment Shader 4-way threadable" size="1" start="96" type="bool"/>
     <field name="Fragment Shader start in final thread section" size="1" start="97" type="bool"/>
-    <field name="Propagate NaNs" size="1" start="98" type="bool"/>
+    <field name="Fragment Shader Propagate NaNs" size="1" start="98" type="bool"/>
     <field name="Fragment Shader Uniforms Address" size="32" start="16b" type="address"/>
 
     <field name="Vertex Shader Code Address" size="32" start="20b" type="address"/>
     <field name="Vertex Shader 4-way threadable" size="1" start="160" type="bool"/>
     <field name="Vertex Shader start in final thread section" size="1" start="161" type="bool"/>
+    <field name="Vertex Shader Propagate NaNs" size="1" start="162" type="bool"/>
     <field name="Vertex Shader Uniforms Address" size="32" start="24b" type="address"/>
 
     <field name="Coordinate Shader Code Address" size="32" start="28b" type="address"/>
     <field name="Coordinate Shader 4-way threadable" size="1" start="224" type="bool"/>
     <field name="Coordinate Shader start in final thread section" size="1" start="225" type="bool"/>
+    <field name="Coordinate Shader Propagate NaNs" size="1" start="226" type="bool"/>
     <field name="Coordinate Shader Uniforms Address" size="32" start="32b" type="address"/>
   </struct>
 
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c
index 28b35165c7..4d872b30ec 100644
--- a/src/gallium/drivers/v3d/v3dx_draw.c
+++ b/src/gallium/drivers/v3d/v3dx_draw.c
@@ -183,7 +183,9 @@ v3d_emit_gl_shader_state(struct v3d_context *v3d,
                 shader.number_of_varyings_in_fragment_shader =
                         v3d->prog.fs->prog_data.base->num_inputs;
 
-                shader.propagate_nans = true;
+                shader.coordinate_shader_propagate_nans = true;
+                shader.vertex_shader_propagate_nans = true;
+                shader.fragment_shader_propagate_nans = true;
 
                 shader.coordinate_shader_code_address =
                         cl_address(v3d->prog.cs->bo, 0);




More information about the mesa-commit mailing list