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@jlekstrand.net>
This commit is contained in:
Iago Toral Quiroga
2016-12-02 14:16:07 +01:00
parent a7b510f656
commit 66e7effc85

View File

@@ -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;