intel/brw: Add missing cases to flags_written()
These virtual opcodes will write the whole flag set, either directly (via brw_fill_flag()) or indirectly by using LOAD_LIVE_CHANNELS. Issue was found when analysing a hang that would disappear if the lowering of those opcodes was pulled all the way up right before brw_opt_cmod_propagation (which uses the flags_written). Fixes:019770f026("intel/brw: Add SHADER_OPCODE_VOTE_*") Fixes:2bd7592b0b("intel/brw: Add SHADER_OPCODE_BALLOT") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12347 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12479 Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33085>
This commit is contained in:
@@ -743,7 +743,11 @@ fs_inst::flags_written(const intel_device_info *devinfo) const
|
||||
opcode != BRW_OPCODE_IF &&
|
||||
opcode != BRW_OPCODE_WHILE)) {
|
||||
return brw_fs_flag_mask(this, 1);
|
||||
} else if (opcode == FS_OPCODE_LOAD_LIVE_CHANNELS) {
|
||||
} else if (opcode == FS_OPCODE_LOAD_LIVE_CHANNELS ||
|
||||
opcode == SHADER_OPCODE_BALLOT ||
|
||||
opcode == SHADER_OPCODE_VOTE_ANY ||
|
||||
opcode == SHADER_OPCODE_VOTE_ALL ||
|
||||
opcode == SHADER_OPCODE_VOTE_EQUAL) {
|
||||
return brw_fs_flag_mask(this, 32);
|
||||
} else {
|
||||
return brw_fs_flag_mask(dst, size_written);
|
||||
|
||||
Reference in New Issue
Block a user