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:
@@ -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``
|
||||||
|
@@ -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);
|
||||||
|
@@ -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 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user