From: Dave Airlie Date: Fri, 24 Apr 2015 00:47:03 +0000 (+1000) Subject: glsl/ir: allow ir_call to handle subroutine calling X-Git-Tag: upstream/17.1.0~17487 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=884df9ef834d6b77226d0dfd778c5317365a2394;p=platform%2Fupstream%2Fmesa.git glsl/ir: allow ir_call to handle subroutine calling This adds a ir_variable which contains the subroutine uniform and an array rvalue for the deref of that uniform, these are stored in the ir_call and lowered later. Reviewed-by: Chris Forbes Signed-off-by: Dave Airlie --- diff --git a/src/glsl/ir.h b/src/glsl/ir.h index da86742..ede8caa 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -1712,7 +1712,18 @@ public: ir_call(ir_function_signature *callee, ir_dereference_variable *return_deref, exec_list *actual_parameters) - : ir_instruction(ir_type_call), return_deref(return_deref), callee(callee) + : ir_instruction(ir_type_call), return_deref(return_deref), callee(callee), sub_var(NULL), array_idx(NULL) + { + assert(callee->return_type != NULL); + actual_parameters->move_nodes_to(& this->actual_parameters); + this->use_builtin = callee->is_builtin(); + } + + ir_call(ir_function_signature *callee, + ir_dereference_variable *return_deref, + exec_list *actual_parameters, + ir_variable *var, ir_rvalue *array_idx) + : ir_instruction(ir_type_call), return_deref(return_deref), callee(callee), sub_var(var), array_idx(array_idx) { assert(callee->return_type != NULL); actual_parameters->move_nodes_to(& this->actual_parameters); @@ -1760,6 +1771,14 @@ public: /** Should this call only bind to a built-in function? */ bool use_builtin; + + /* + * ARB_shader_subroutine support - + * the subroutine uniform variable and array index + * rvalue to be used in the lowering pass later. + */ + ir_variable *sub_var; + ir_rvalue *array_idx; };