mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 19:40:10 +01:00
i965/vec4: Change vec4_visitor::swizzle_result() method to allow reuse
This patch changes the signature of swizzle_result() 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
57182332b8
commit
c15eea2afa
2 changed files with 15 additions and 8 deletions
|
|
@ -337,7 +337,9 @@ public:
|
|||
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 swizzle_result(ir_texture *ir, src_reg orig_val, uint32_t sampler);
|
||||
void swizzle_result(ir_texture_opcode op, dst_reg dest,
|
||||
src_reg orig_val, uint32_t sampler,
|
||||
const glsl_type *dest_type);
|
||||
|
||||
void emit_ndc_computation();
|
||||
void emit_psiz_and_flags(dst_reg reg);
|
||||
|
|
|
|||
|
|
@ -2815,7 +2815,11 @@ vec4_visitor::visit(ir_texture *ir)
|
|||
emit_gen6_gather_wa(key->tex.gen6_gather_wa[sampler], inst->dst);
|
||||
}
|
||||
|
||||
swizzle_result(ir, src_reg(inst->dst), sampler);
|
||||
this->result = src_reg(this, ir->type);
|
||||
dst_reg dest = dst_reg(this->result);
|
||||
|
||||
swizzle_result(ir->op, dest, src_reg(inst->dst),
|
||||
sampler, ir->type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2869,22 +2873,23 @@ vec4_visitor::gather_channel(unsigned gather_component, uint32_t sampler)
|
|||
}
|
||||
|
||||
void
|
||||
vec4_visitor::swizzle_result(ir_texture *ir, src_reg orig_val, uint32_t sampler)
|
||||
vec4_visitor::swizzle_result(ir_texture_opcode op, dst_reg dest,
|
||||
src_reg orig_val, uint32_t sampler,
|
||||
const glsl_type *dest_type)
|
||||
{
|
||||
int s = key->tex.swizzles[sampler];
|
||||
|
||||
this->result = src_reg(this, ir->type);
|
||||
dst_reg swizzled_result(this->result);
|
||||
dst_reg swizzled_result = dest;
|
||||
|
||||
if (ir->op == ir_query_levels) {
|
||||
if (op == ir_query_levels) {
|
||||
/* # levels is in .w */
|
||||
orig_val.swizzle = BRW_SWIZZLE4(SWIZZLE_W, SWIZZLE_W, SWIZZLE_W, SWIZZLE_W);
|
||||
emit(MOV(swizzled_result, orig_val));
|
||||
return;
|
||||
}
|
||||
|
||||
if (ir->op == ir_txs || ir->type == glsl_type::float_type
|
||||
|| s == SWIZZLE_NOOP || ir->op == ir_tg4) {
|
||||
if (op == ir_txs || dest_type == glsl_type::float_type
|
||||
|| s == SWIZZLE_NOOP || op == ir_tg4) {
|
||||
emit(MOV(swizzled_result, orig_val));
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue