mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 07:40:11 +01:00
glsl: add builtins for geometry shaders.
v2 (Paul Berry <stereotype441@gmail.com>): 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 <ian.d.romanick@intel.com> v3 (Paul Berry <stereotype441@gmail.com>): Be less obscure about setting interpolation field of gl_Primitive variables. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
ae6eba3e32
commit
ff52377183
5 changed files with 28 additions and 4 deletions
|
|
@ -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.
|
||||
|
|
|
|||
5
src/glsl/builtins/ir/EmitVertex.ir
Normal file
5
src/glsl/builtins/ir/EmitVertex.ir
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
((function EmitVertex
|
||||
(signature void
|
||||
(parameters)
|
||||
((emit-vertex)))
|
||||
))
|
||||
5
src/glsl/builtins/ir/EndPrimitive.ir
Normal file
5
src/glsl/builtins/ir/EndPrimitive.ir
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
((function EndPrimitive
|
||||
(signature void
|
||||
(parameters)
|
||||
((end-primitive)))
|
||||
))
|
||||
3
src/glsl/builtins/profiles/150.geom
Normal file
3
src/glsl/builtins/profiles/150.geom
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#version 150
|
||||
void EmitVertex();
|
||||
void EndPrimitive();
|
||||
|
|
@ -125,7 +125,7 @@ def write_profiles():
|
|||
|
||||
def get_profile_list():
|
||||
profile_files = []
|
||||
for extension in ['glsl', 'frag', 'vert']:
|
||||
for extension in ['glsl', 'frag', 'vert', 'geom']:
|
||||
path_glob = path.join(
|
||||
path.join(builtins_dir, 'profiles'), '*.' + extension)
|
||||
profile_files.extend(glob(path_glob))
|
||||
|
|
@ -279,10 +279,12 @@ _mesa_glsl_initialize_functions(struct _mesa_glsl_parse_state *state)
|
|||
check = 'state->target == vertex_shader && '
|
||||
elif profile.endswith('_frag'):
|
||||
check = 'state->target == fragment_shader && '
|
||||
elif profile.endswith('_geom'):
|
||||
check = 'state->target == geometry_shader && '
|
||||
else:
|
||||
check = ''
|
||||
|
||||
version = re.sub(r'_(glsl|vert|frag)$', '', profile)
|
||||
version = re.sub(r'_(glsl|vert|frag|geom)$', '', profile)
|
||||
if version[0].isdigit():
|
||||
is_es = version.endswith('es')
|
||||
if is_es:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue