i965/vec4: do not split scratch read/write opcodes
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 28 Jun 2016 09:54:07 +0000 (11:54 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 3 Jan 2017 10:26:51 +0000 (11:26 +0100)
64-bit scratch read/writes require to shuffle data around so we need
to have access to the full 64-bit data. We will do the right thing
for these when we emit the messages.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_vec4.cpp

index f198fad851441e36ce072b1c6cc938faabfc3e29..29bf7863d6971e2df13089c6c5d0cd4168bc4fde 100644 (file)
@@ -2035,6 +2035,15 @@ static unsigned
 get_lowered_simd_width(const struct gen_device_info *devinfo,
                        const vec4_instruction *inst)
 {
+   /* Do not split some instructions that require special handling */
+   switch (inst->opcode) {
+   case SHADER_OPCODE_GEN4_SCRATCH_READ:
+   case SHADER_OPCODE_GEN4_SCRATCH_WRITE:
+      return inst->exec_size;
+   default:
+      break;
+   }
+
    unsigned lowered_width = MIN2(16, inst->exec_size);
 
    /* We need to split some cases of double-precision instructions that write