i965/fs: Simplify gl_SampleMaskIn handling.

As far as I can tell, there's no point in allocating an extra register
and generating a MOV---we can just use the copy provided as part of our
thread payload directly.  It's already in the right format.

Of course, there are zero Piglit tests for this.  We don't actually ship
the extension (GL_ARB_gpu_shader5) that exposes this functionality
either.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
This commit is contained in:
Kenneth Graunke 2014-05-13 21:21:21 -07:00
parent 5cd7cf58e6
commit c76e6db05f
3 changed files with 3 additions and 12 deletions

View file

@ -1331,16 +1331,6 @@ fs_visitor::emit_sampleid_setup(ir_variable *ir)
return reg;
}
fs_reg *
fs_visitor::emit_samplemaskin_setup(ir_variable *ir)
{
assert(brw->gen >= 7);
this->current_annotation = "compute gl_SampleMaskIn";
fs_reg *reg = new(this->mem_ctx) fs_reg(this, ir->type);
emit(MOV(*reg, fs_reg(retype(brw_vec8_grf(c->sample_mask_in_reg, 0), BRW_REGISTER_TYPE_D))));
return reg;
}
fs_reg
fs_visitor::fix_math_operand(fs_reg src)
{

View file

@ -397,7 +397,6 @@ public:
fs_reg *emit_frontfacing_interpolation(ir_variable *ir);
fs_reg *emit_samplepos_setup(ir_variable *ir);
fs_reg *emit_sampleid_setup(ir_variable *ir);
fs_reg *emit_samplemaskin_setup(ir_variable *ir);
fs_reg *emit_general_interpolation(ir_variable *ir);
void emit_interpolation_setup_gen4();
void emit_interpolation_setup_gen6();

View file

@ -138,7 +138,9 @@ fs_visitor::visit(ir_variable *ir)
} else if (ir->data.location == SYSTEM_VALUE_SAMPLE_ID) {
reg = emit_sampleid_setup(ir);
} else if (ir->data.location == SYSTEM_VALUE_SAMPLE_MASK_IN) {
reg = emit_samplemaskin_setup(ir);
assert(brw->gen >= 7);
reg = new(mem_ctx) fs_reg(retype(brw_vec8_grf(c->sample_mask_in_reg, 0),
BRW_REGISTER_TYPE_D));
}
}