From ff523771833cf2cfb6d69d61e86a28c26b8400be Mon Sep 17 00:00:00 2001 From: Bryan Cain Date: Fri, 15 Feb 2013 08:53:20 -0600 Subject: glsl: add builtins for geometry shaders. v2 (Paul Berry ): Account for rework of builtin_variables.cpp. Use INTERP_QUALIFIER_FLAT for gl_PrimitiveID so that it will obey provoking vertex conventions. Convert to GLSL 1.50 style geometry shaders. Reviewed-by: Ian Romanick v3 (Paul Berry ): Be less obscure about setting interpolation field of gl_Primitive variables. Reviewed-by: Kenneth Graunke --- src/glsl/builtin_variables.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/glsl/builtin_variables.cpp') diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp index 1e88b6a73be..6a808c072a2 100644 --- a/src/glsl/builtin_variables.cpp +++ b/src/glsl/builtin_variables.cpp @@ -686,8 +686,11 @@ builtin_variable_generator::generate_gs_special_vars() * the specific case of gl_PrimitiveIDIn. So we don't need to treat * gl_PrimitiveIDIn as an {ARB,EXT}_geometry_shader4-only variable. */ - add_input(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveIDIn"); - add_output(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveID"); + ir_variable *var; + var = add_input(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveIDIn"); + var->interpolation = INTERP_QUALIFIER_FLAT; + var = add_output(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveID"); + var->interpolation = INTERP_QUALIFIER_FLAT; } @@ -702,6 +705,12 @@ builtin_variable_generator::generate_fs_special_vars() if (state->is_version(120, 100)) add_input(VARYING_SLOT_PNTC, vec2_t, "gl_PointCoord"); + if (state->is_version(150, 0)) { + ir_variable *var = + add_input(VARYING_SLOT_PRIMITIVE_ID, int_t, "gl_PrimitiveID"); + var->interpolation = INTERP_QUALIFIER_FLAT; + } + /* gl_FragColor and gl_FragData were deprecated starting in desktop GLSL * 1.30, and were relegated to the compatibility profile in GLSL 4.20. * They were removed from GLSL ES 3.00. -- cgit v1.2.3