mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
i965/skl: Add a message header for the TXF_MCS instruction in vec4vs
When using SIMD4x2 on Skylake, the sampler instructions need a message header to select the correct mode. This was added for most sample instructions in0ac4c2727but the TXF_MCS instruction is emitted separately and it was missed. This fixes a bunch of Piglit tests which test texelFetch in a geometry shader, for example: spec/arb_texture_multisample/texelfetch/2-gs-sampler2dms Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit5ae6c7bfce)
This commit is contained in:
parent
534f5e8d80
commit
580351d3d3
1 changed files with 18 additions and 2 deletions
|
|
@ -2460,11 +2460,27 @@ vec4_visitor::emit_mcs_fetch(ir_texture *ir, src_reg coordinate, src_reg sampler
|
|||
new(mem_ctx) vec4_instruction(SHADER_OPCODE_TXF_MCS,
|
||||
dst_reg(this, glsl_type::uvec4_type));
|
||||
inst->base_mrf = 2;
|
||||
inst->mlen = 1;
|
||||
inst->src[1] = sampler;
|
||||
|
||||
int param_base;
|
||||
|
||||
if (devinfo->gen >= 9) {
|
||||
/* Gen9+ needs a message header in order to use SIMD4x2 mode */
|
||||
vec4_instruction *header_inst = new(mem_ctx)
|
||||
vec4_instruction(VS_OPCODE_SET_SIMD4X2_HEADER_GEN9,
|
||||
dst_reg(MRF, inst->base_mrf));
|
||||
|
||||
emit(header_inst);
|
||||
|
||||
inst->mlen = 2;
|
||||
inst->header_size = 1;
|
||||
param_base = inst->base_mrf + 1;
|
||||
} else {
|
||||
inst->mlen = 1;
|
||||
param_base = inst->base_mrf;
|
||||
}
|
||||
|
||||
/* parameters are: u, v, r, lod; lod will always be zero due to api restrictions */
|
||||
int param_base = inst->base_mrf;
|
||||
int coord_mask = (1 << ir->coordinate->type->vector_elements) - 1;
|
||||
int zero_mask = 0xf & ~coord_mask;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue