From 12d1886b87d3a25f3928ef808b4e37b3d45664d1 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 7 Nov 2024 14:03:32 -0800 Subject: [PATCH] brw/lower: Don't "fix" regioning of broadcast The next two commits modify the destination regioning in a way that, which still correct, trigger assertion failures if we try to fix the regioning here. Broadcast gets lowered in brw_eu_emit. For the purposes of region restrictions, let's assume that the final code emission will do the right thing. Doing a bunch of shuffling here is only going to make a mess of things. No shader-db or fossil-db changes on any Intel platform. Reviewed-by: Kenneth Graunke Part-of: --- src/intel/compiler/brw_fs_lower_regioning.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/intel/compiler/brw_fs_lower_regioning.cpp b/src/intel/compiler/brw_fs_lower_regioning.cpp index e0a10e17cde..e6e6a8b28c2 100644 --- a/src/intel/compiler/brw_fs_lower_regioning.cpp +++ b/src/intel/compiler/brw_fs_lower_regioning.cpp @@ -767,6 +767,15 @@ namespace { const intel_device_info *devinfo = v->devinfo; bool progress = false; + /* BROADCAST is special. It's destination region is a bit of a lie, and + * it gets lower in brw_eu_emit. For the purposes of region + * restrictions, let's assume that the final code emission will do the + * right thing. Doing a bunch of shuffling here is only going to make a + * mess of things. + */ + if (inst->opcode == SHADER_OPCODE_BROADCAST) + return false; + if (has_invalid_dst_modifiers(devinfo, inst)) progress |= lower_dst_modifiers(v, block, inst);