From 604a384e9720242cb67c81fd22a36202169fda71 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Thu, 21 Sep 2023 22:03:24 -0700 Subject: [PATCH] blorp: Use 3DSTATE_URB_ALLOC_* instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use 3DSTATE_URB_ALLOC_* instruction to program URB for multislice device config. In case only one slice is available in the device, SliceN fields will be ignored by HW. Signed-off-by: Sagar Ghuge Reviewed-by: José Roberto de Souza Part-of: --- src/intel/blorp/blorp_genX_exec_brw.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/intel/blorp/blorp_genX_exec_brw.h b/src/intel/blorp/blorp_genX_exec_brw.h index f51ba4a2a15..d94bd5beb48 100644 --- a/src/intel/blorp/blorp_genX_exec_brw.h +++ b/src/intel/blorp/blorp_genX_exec_brw.h @@ -285,12 +285,23 @@ emit_urb_config(struct blorp_batch *batch, blorp_pre_emit_urb_config(batch, &urb_cfg); for (int i = 0; i <= MESA_SHADER_GEOMETRY; i++) { +#if GFX_VER >= 12 + blorp_emit(batch, GENX(3DSTATE_URB_ALLOC_VS), urb) { + urb._3DCommandSubOpcode += i; + urb.VSURBEntryAllocationSize = urb_cfg.size[i] - 1; + urb.VSURBStartingAddressSlice0 = urb_cfg.start[i]; + urb.VSURBStartingAddressSliceN = urb_cfg.start[i]; + urb.VSNumberofURBEntriesSlice0 = urb_cfg.entries[i]; + urb.VSNumberofURBEntriesSliceN = urb_cfg.entries[i]; + } +#else blorp_emit(batch, GENX(3DSTATE_URB_VS), urb) { urb._3DCommandSubOpcode += i; urb.VSURBStartingAddress = urb_cfg.start[i]; urb.VSURBEntryAllocationSize = urb_cfg.size[i] - 1; urb.VSNumberofURBEntries = urb_cfg.entries[i]; } +#endif } if (batch->blorp->config.use_mesh_shading) {