...by copying support for gl_InstanceIDARB, but without "#extension" check, because EXT_draw_instanced spec does not say anything about it (as opposed to ARB_draw_instanced / gl_InstanceIDARB) and NVIDIA driver already allow it --- I'm not sure this is correct.
With this patch applied (+ merged floating branch) I can run OilRush on nv50 (run == watch the game crash in a few seconds ;) src/glsl/ir_variable.cpp | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diff --git a/src/glsl/ir_variable.cpp b/src/glsl/ir_variable.cpp index 18a3e0f..bd776ee 100644 --- a/src/glsl/ir_variable.cpp +++ b/src/glsl/ir_variable.cpp @@ -34,6 +34,10 @@ static void generate_ARB_draw_instanced_variables(exec_list *, struct _mesa_glsl_parse_state *, bool, _mesa_glsl_parser_targets); +static void +generate_EXT_draw_instanced_variables(exec_list *, + struct _mesa_glsl_parse_state *, + bool, _mesa_glsl_parser_targets); static ir_variable * add_variable(const char *name, enum ir_variable_mode mode, int slot, @@ -335,6 +339,8 @@ initialize_vs_variables(exec_list *instructions, if (state->ARB_draw_instanced_enable) generate_ARB_draw_instanced_variables(instructions, state, false, vertex_shader); + generate_EXT_draw_instanced_variables(instructions, state, false, + vertex_shader); } @@ -454,6 +460,25 @@ generate_ARB_draw_instanced_variables(exec_list *instructions, } } +static void +generate_EXT_draw_instanced_variables(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + bool warn, + _mesa_glsl_parser_targets target) +{ + /* gl_InstanceID is only available in the vertex shader. + */ + if (target == vertex_shader) { + ir_variable *const inst = + add_variable("gl_InstanceID", ir_var_system_value, + SYSTEM_VALUE_INSTANCE_ID, + glsl_type::int_type, instructions, state->symbols); + + if (warn) + inst->warn_extension = "GL_EXT_draw_instanced"; + } +} + static void generate_ARB_shader_stencil_export_variables(exec_list *instructions, -- 1.7.2.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev