i965/vec4: Redefine make_reg_for_system_value() to allow reuse in NIR->vec4 pass
The new virtual method is more flexible, it has a signature: dst_reg *make_reg_for_system_value(int location, const glsl_type *type); v2 (Jason Ekstrand): Use the new version in unit tests so make check passes again Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
195156e571
commit
01c5617c8e
|
@ -410,6 +410,9 @@ public:
|
|||
virtual void nir_emit_jump(nir_jump_instr *instr);
|
||||
virtual void nir_emit_texture(nir_tex_instr *instr);
|
||||
|
||||
virtual dst_reg *make_reg_for_system_value(int location,
|
||||
const glsl_type *type) = 0;
|
||||
|
||||
src_reg *nir_inputs;
|
||||
unsigned *nir_uniform_driver_location;
|
||||
|
||||
|
@ -419,7 +422,6 @@ protected:
|
|||
bool interleaved);
|
||||
void setup_payload_interference(struct ra_graph *g, int first_payload_node,
|
||||
int reg_node_count);
|
||||
virtual dst_reg *make_reg_for_system_value(ir_variable *ir) = 0;
|
||||
virtual void assign_binding_table_offsets();
|
||||
virtual void setup_payload() = 0;
|
||||
virtual void emit_prolog() = 0;
|
||||
|
|
|
@ -51,11 +51,12 @@ vec4_gs_visitor::vec4_gs_visitor(const struct brw_compiler *compiler,
|
|||
|
||||
|
||||
dst_reg *
|
||||
vec4_gs_visitor::make_reg_for_system_value(ir_variable *ir)
|
||||
vec4_gs_visitor::make_reg_for_system_value(int location,
|
||||
const glsl_type *type)
|
||||
{
|
||||
dst_reg *reg = new(mem_ctx) dst_reg(this, ir->type);
|
||||
dst_reg *reg = new(mem_ctx) dst_reg(this, type);
|
||||
|
||||
switch (ir->data.location) {
|
||||
switch (location) {
|
||||
case SYSTEM_VALUE_INVOCATION_ID:
|
||||
this->current_annotation = "initialize gl_InvocationID";
|
||||
emit(GS_OPCODE_GET_INSTANCE_ID, *reg);
|
||||
|
|
|
@ -76,7 +76,8 @@ public:
|
|||
int shader_time_index);
|
||||
|
||||
protected:
|
||||
virtual dst_reg *make_reg_for_system_value(ir_variable *ir);
|
||||
virtual dst_reg *make_reg_for_system_value(int location,
|
||||
const glsl_type *type);
|
||||
virtual void setup_payload();
|
||||
virtual void emit_prolog();
|
||||
virtual void emit_program_code();
|
||||
|
|
|
@ -1094,7 +1094,7 @@ vec4_visitor::visit(ir_variable *ir)
|
|||
break;
|
||||
|
||||
case ir_var_system_value:
|
||||
reg = make_reg_for_system_value(ir);
|
||||
reg = make_reg_for_system_value(ir->data.location, ir->type);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -143,7 +143,8 @@ vec4_vs_visitor::emit_prolog()
|
|||
|
||||
|
||||
dst_reg *
|
||||
vec4_vs_visitor::make_reg_for_system_value(ir_variable *ir)
|
||||
vec4_vs_visitor::make_reg_for_system_value(int location,
|
||||
const glsl_type *type)
|
||||
{
|
||||
/* VertexID is stored by the VF as the last vertex element, but
|
||||
* we don't represent it with a flag in inputs_read, so we call
|
||||
|
@ -151,7 +152,7 @@ vec4_vs_visitor::make_reg_for_system_value(ir_variable *ir)
|
|||
*/
|
||||
dst_reg *reg = new(mem_ctx) dst_reg(ATTR, VERT_ATTRIB_MAX);
|
||||
|
||||
switch (ir->data.location) {
|
||||
switch (location) {
|
||||
case SYSTEM_VALUE_BASE_VERTEX:
|
||||
reg->writemask = WRITEMASK_X;
|
||||
vs_prog_data->uses_vertexid = true;
|
||||
|
|
|
@ -95,7 +95,8 @@ public:
|
|||
bool use_legacy_snorm_formula);
|
||||
|
||||
protected:
|
||||
virtual dst_reg *make_reg_for_system_value(ir_variable *ir);
|
||||
virtual dst_reg *make_reg_for_system_value(int location,
|
||||
const glsl_type *type);
|
||||
virtual void setup_payload();
|
||||
virtual void emit_prolog();
|
||||
virtual void emit_program_code();
|
||||
|
|
|
@ -53,7 +53,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual dst_reg *make_reg_for_system_value(ir_variable *ir)
|
||||
virtual dst_reg *make_reg_for_system_value(int location,
|
||||
const glsl_type *type)
|
||||
{
|
||||
unreachable("Not reached");
|
||||
}
|
||||
|
|
|
@ -56,7 +56,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual dst_reg *make_reg_for_system_value(ir_variable *ir)
|
||||
virtual dst_reg *make_reg_for_system_value(int location,
|
||||
const glsl_type *type)
|
||||
{
|
||||
unreachable("Not reached");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue