i965/fs: Rework compression control selection.
The next commit uses an add(16) with a UW destination with a stride of 2, which needs compression control since it's writing two registers. The old code would have failed to set compression control correctly. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
4ec09c7747
commit
0a9e3a0160
|
@ -1601,10 +1601,13 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||
break;
|
||||
case 16:
|
||||
case 32:
|
||||
if (type_sz(inst->dst.type) < sizeof(float))
|
||||
brw_set_default_compression_control(p, BRW_COMPRESSION_NONE);
|
||||
else
|
||||
/* If the instruction writes to more than one register, it needs to
|
||||
* be a "compressed" instruction on Gen <= 5.
|
||||
*/
|
||||
if (inst->exec_size * inst->dst.stride * type_sz(inst->dst.type) > 32)
|
||||
brw_set_default_compression_control(p, BRW_COMPRESSION_COMPRESSED);
|
||||
else
|
||||
brw_set_default_compression_control(p, BRW_COMPRESSION_NONE);
|
||||
break;
|
||||
default:
|
||||
unreachable("Invalid instruction width");
|
||||
|
|
Loading…
Reference in New Issue