i965/vec4: Change vec4_visitor::emit_mcs_fetch() method to allow reuse
This patch changes the signature of emit_mcs_fetch() to accept lower level arguments. The purpose is to reuse it in the upcoming NIR->vec4 pass. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
434481f315
commit
72c8d7721f
|
@ -334,7 +334,8 @@ public:
|
||||||
void emit_pack_snorm_4x8(const dst_reg &dst, const src_reg &src0);
|
void emit_pack_snorm_4x8(const dst_reg &dst, const src_reg &src0);
|
||||||
|
|
||||||
uint32_t gather_channel(ir_texture *ir, uint32_t sampler);
|
uint32_t gather_channel(ir_texture *ir, uint32_t sampler);
|
||||||
src_reg emit_mcs_fetch(ir_texture *ir, src_reg coordinate, src_reg sampler);
|
src_reg emit_mcs_fetch(const glsl_type *coordinate_type, src_reg coordinate,
|
||||||
|
src_reg sampler);
|
||||||
void emit_gen6_gather_wa(uint8_t wa, dst_reg dst);
|
void emit_gen6_gather_wa(uint8_t wa, dst_reg dst);
|
||||||
void swizzle_result(ir_texture *ir, src_reg orig_val, uint32_t sampler);
|
void swizzle_result(ir_texture *ir, src_reg orig_val, uint32_t sampler);
|
||||||
|
|
||||||
|
|
|
@ -2469,7 +2469,8 @@ vec4_visitor::visit(ir_call *ir)
|
||||||
}
|
}
|
||||||
|
|
||||||
src_reg
|
src_reg
|
||||||
vec4_visitor::emit_mcs_fetch(ir_texture *ir, src_reg coordinate, src_reg sampler)
|
vec4_visitor::emit_mcs_fetch(const glsl_type *coordinate_type,
|
||||||
|
src_reg coordinate, src_reg sampler)
|
||||||
{
|
{
|
||||||
vec4_instruction *inst =
|
vec4_instruction *inst =
|
||||||
new(mem_ctx) vec4_instruction(SHADER_OPCODE_TXF_MCS,
|
new(mem_ctx) vec4_instruction(SHADER_OPCODE_TXF_MCS,
|
||||||
|
@ -2496,13 +2497,13 @@ vec4_visitor::emit_mcs_fetch(ir_texture *ir, src_reg coordinate, src_reg sampler
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parameters are: u, v, r, lod; lod will always be zero due to api restrictions */
|
/* parameters are: u, v, r, lod; lod will always be zero due to api restrictions */
|
||||||
int coord_mask = (1 << ir->coordinate->type->vector_elements) - 1;
|
int coord_mask = (1 << coordinate_type->vector_elements) - 1;
|
||||||
int zero_mask = 0xf & ~coord_mask;
|
int zero_mask = 0xf & ~coord_mask;
|
||||||
|
|
||||||
emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, coord_mask),
|
emit(MOV(dst_reg(MRF, param_base, coordinate_type, coord_mask),
|
||||||
coordinate));
|
coordinate));
|
||||||
|
|
||||||
emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, zero_mask),
|
emit(MOV(dst_reg(MRF, param_base, coordinate_type, zero_mask),
|
||||||
src_reg(0)));
|
src_reg(0)));
|
||||||
|
|
||||||
emit(inst);
|
emit(inst);
|
||||||
|
@ -2625,7 +2626,7 @@ vec4_visitor::visit(ir_texture *ir)
|
||||||
sample_index_type = ir->lod_info.sample_index->type;
|
sample_index_type = ir->lod_info.sample_index->type;
|
||||||
|
|
||||||
if (devinfo->gen >= 7 && key->tex.compressed_multisample_layout_mask & (1<<sampler))
|
if (devinfo->gen >= 7 && key->tex.compressed_multisample_layout_mask & (1<<sampler))
|
||||||
mcs = emit_mcs_fetch(ir, coordinate, sampler_reg);
|
mcs = emit_mcs_fetch(ir->coordinate->type, coordinate, sampler_reg);
|
||||||
else
|
else
|
||||||
mcs = src_reg(0u);
|
mcs = src_reg(0u);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue