summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965
diff options
context:
space:
mode:
authorSamuel Iglesias Gonsalvez <[email protected]>2015-12-04 10:23:15 +0100
committerSamuel Iglesias Gonsálvez <[email protected]>2016-03-17 08:23:25 +0100
commitb91b9e4b005858bad07eec1f92438a22468ac1ae (patch)
tree1dd296d2714a11ae15109dea82898ee23349ff06 /src/mesa/drivers/dri/i965
parent30fc3fa24d90c1ceda33ba95832e17c67584e2bc (diff)
i965/vec4/gen6: fix exec_size for instructions with destination width of 4
Signed-off-by: Samuel Iglesias Gonsalvez <[email protected]> Reviewed-by: Topi Pohjolainen <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_generator.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
index 871b49ad9ab..7063426b48a 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
@@ -1434,6 +1434,7 @@ generate_code(struct brw_codegen *p,
assert(inst->mlen <= BRW_MAX_MSG_LENGTH);
unsigned pre_emit_nr_insn = p->nr_insn;
+ bool fix_exec_size = false;
if (dst.width == BRW_WIDTH_4) {
/* This happens in attribute fixups for "dual instanced" geometry
@@ -1458,6 +1459,8 @@ generate_code(struct brw_codegen *p,
if (src[i].file == BRW_GENERAL_REGISTER_FILE)
src[i] = stride(src[i], 4, 4, 1);
}
+ brw_set_default_exec_size(p, BRW_EXECUTE_4);
+ fix_exec_size = true;
}
switch (inst->opcode) {
@@ -1946,6 +1949,9 @@ generate_code(struct brw_codegen *p,
unreachable("Unsupported opcode");
}
+ if (fix_exec_size)
+ brw_set_default_exec_size(p, BRW_EXECUTE_8);
+
if (inst->opcode == VEC4_OPCODE_PACK_BYTES) {
/* Handled dependency hints in the generator. */