intel/compiler: Add swsb_stall debug option

When enabled, on gfx12 plus, we will add the sync nop instruction after
each instruction to make sure that current instruction depends on the
previous instruction explicitly.

This option will help us to get a hint if something is missing or broken
in software scoreboard pass.

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21797>
This commit is contained in:
Sagar Ghuge
2023-03-08 12:31:51 -08:00
committed by Marge Bot
parent cdf63e6dce
commit 9a34b2ab0e
4 changed files with 13 additions and 0 deletions

View File

@@ -527,6 +527,8 @@ Intel driver environment variables
``sync`` ``sync``
after sending each batch, wait on the CPU for that batch to after sending each batch, wait on the CPU for that batch to
finish rendering finish rendering
``swsb-stall``
Insert sync NOP after each instruction. This is only valid for Gfx12+.
``task`` ``task``
dump shader assembly for task shaders dump shader assembly for task shaders
``tcs`` ``tcs``

View File

@@ -30,6 +30,7 @@
#include "brw_eu.h" #include "brw_eu.h"
#include "brw_fs.h" #include "brw_fs.h"
#include "brw_cfg.h" #include "brw_cfg.h"
#include "dev/intel_debug.h"
#include "util/mesa-sha1.h" #include "util/mesa-sha1.h"
#include "util/half_float.h" #include "util/half_float.h"
@@ -2387,6 +2388,14 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width,
brw_inst_set_no_dd_check(p->devinfo, last, inst->no_dd_check); brw_inst_set_no_dd_check(p->devinfo, last, inst->no_dd_check);
} }
} }
/* When enabled, insert sync NOP after every instruction and make sure
* that current instruction depends on the previous instruction.
*/
if (INTEL_DEBUG(DEBUG_SWSB_STALL) && devinfo->ver >= 12) {
brw_set_default_swsb(p, tgl_swsb_regdist(1));
brw_SYNC(p, TGL_SYNC_NOP);
}
} }
brw_set_uip_jip(p, start_offset); brw_set_uip_jip(p, start_offset);

View File

@@ -100,6 +100,7 @@ static const struct debug_control debug_control[] = {
{ "stall", DEBUG_STALL }, { "stall", DEBUG_STALL },
{ "capture-all", DEBUG_CAPTURE_ALL }, { "capture-all", DEBUG_CAPTURE_ALL },
{ "perf-symbol-names", DEBUG_PERF_SYMBOL_NAMES }, { "perf-symbol-names", DEBUG_PERF_SYMBOL_NAMES },
{ "swsb-stall", DEBUG_SWSB_STALL },
{ NULL, 0 } { NULL, 0 }
}; };

View File

@@ -90,6 +90,7 @@ extern uint64_t intel_debug;
#define DEBUG_MESH (1ull << 42) #define DEBUG_MESH (1ull << 42)
#define DEBUG_CAPTURE_ALL (1ull << 43) #define DEBUG_CAPTURE_ALL (1ull << 43)
#define DEBUG_PERF_SYMBOL_NAMES (1ull << 44) #define DEBUG_PERF_SYMBOL_NAMES (1ull << 44)
#define DEBUG_SWSB_STALL (1ull << 45)
#define DEBUG_ANY (~0ull) #define DEBUG_ANY (~0ull)