Mesa (master): spirv: Builtin Layer is an input for fragment shaders

Iago Toral Quiroga itoral at kemper.freedesktop.org
Sat Dec 3 20:02:47 UTC 2016


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Dec  2 14:16:07 2016 +0100

spirv: Builtin Layer is an input for fragment shaders

This change makes it so we emit a load_input intrinsic when Layer
is read in a fragment shader.

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/compiler/spirv/vtn_variables.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 917aa9d..a38d359 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -819,7 +819,12 @@ vtn_get_builtin_location(struct vtn_builder *b,
       break;
    case SpvBuiltInLayer:
       *location = VARYING_SLOT_LAYER;
-      *mode = nir_var_shader_out;
+      if (b->shader->stage == MESA_SHADER_FRAGMENT)
+         *mode = nir_var_shader_in;
+      else if (b->shader->stage == MESA_SHADER_GEOMETRY)
+         *mode = nir_var_shader_out;
+      else
+         unreachable("invalid stage for SpvBuiltInLayer");
       break;
    case SpvBuiltInViewportIndex:
       *location = VARYING_SLOT_VIEWPORT;




More information about the mesa-commit mailing list