aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorEduardo Lima Mitev <[email protected]>2015-06-18 11:31:54 +0200
committerJason Ekstrand <[email protected]>2015-08-03 09:40:50 -0700
commit72c8d7721feb966cf8530a3ee2642f0b842dc0f8 (patch)
tree0fe548eb311bfd7004eda2084879cac8732c9d07 /src/mesa/drivers
parent434481f3155040217c3e5a8da98dab4248435f0e (diff)
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 <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4.h3
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp11
2 files changed, 8 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index aea21c5897d..ace0bf4437b 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -334,7 +334,8 @@ public:
void emit_pack_snorm_4x8(const dst_reg &dst, const src_reg &src0);
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 swizzle_result(ir_texture *ir, src_reg orig_val, uint32_t sampler);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 737c9fa6d27..3f157beff09 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2469,7 +2469,8 @@ vec4_visitor::visit(ir_call *ir)
}
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 =
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 */
- 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;
- emit(MOV(dst_reg(MRF, param_base, ir->coordinate->type, coord_mask),
+ emit(MOV(dst_reg(MRF, param_base, coordinate_type, coord_mask),
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)));
emit(inst);
@@ -2625,7 +2626,7 @@ vec4_visitor::visit(ir_texture *ir)
sample_index_type = ir->lod_info.sample_index->type;
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
mcs = src_reg(0u);
break;