glsl: Support gl_TessLevelInner/Outer[] as TES input variables.

Upcoming reworks in i965 are going to make it easy to handle this
like any other input.  Having it as a system value will just require
additional code for no benefit.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
Kenneth Graunke
2016-12-06 01:50:03 -08:00
parent 5c580e64cc
commit a46bd79ee1
2 changed files with 17 additions and 4 deletions

View File

@@ -1075,10 +1075,17 @@ builtin_variable_generator::generate_tes_special_vars()
add_system_value(SYSTEM_VALUE_PRIMITIVE_ID, int_t, "gl_PrimitiveID");
add_system_value(SYSTEM_VALUE_VERTICES_IN, int_t, "gl_PatchVerticesIn");
add_system_value(SYSTEM_VALUE_TESS_COORD, vec3_t, "gl_TessCoord");
add_system_value(SYSTEM_VALUE_TESS_LEVEL_OUTER, array(float_t, 4),
"gl_TessLevelOuter");
add_system_value(SYSTEM_VALUE_TESS_LEVEL_INNER, array(float_t, 2),
"gl_TessLevelInner");
if (this->state->ctx->Const.GLSLTessLevelsAsInputs) {
add_input(VARYING_SLOT_TESS_LEVEL_OUTER, array(float_t, 4),
"gl_TessLevelOuter")->data.patch = 1;
add_input(VARYING_SLOT_TESS_LEVEL_INNER, array(float_t, 2),
"gl_TessLevelInner")->data.patch = 1;
} else {
add_system_value(SYSTEM_VALUE_TESS_LEVEL_OUTER, array(float_t, 4),
"gl_TessLevelOuter");
add_system_value(SYSTEM_VALUE_TESS_LEVEL_INNER, array(float_t, 2),
"gl_TessLevelInner");
}
if (state->ARB_shader_viewport_layer_array_enable) {
var = add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
var->data.interpolation = INTERP_MODE_FLAT;