mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-19 16:40:36 +02:00
intel: uncached L1 to fix memory barrier issue in RT shader
In the RT shader, if there's a executeCallableEXT() in between, even though the called shader does nothing, the instructions before and after the executeCallableEXT() is not properly synced. Patch fixes: - dEQP-VK.ray_tracing_pipeline.memguarantee.inside.rgen - dEQP-VK.ray_tracing_pipeline.memguarantee.inside.chit - dEQP-VK.ray_tracing_pipeline.memguarantee.inside.miss - dEQP-VK.ray_tracing_pipeline.memguarantee.inside.call Thank to Kevin for finding out there is a load/store issue. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31201>
This commit is contained in:
parent
730e83b525
commit
7e48cbb029
1 changed files with 13 additions and 0 deletions
|
|
@ -1546,6 +1546,19 @@ lower_lsc_memory_logical_send(const fs_builder &bld, fs_inst *inst)
|
|||
}
|
||||
assert(inst->sfid);
|
||||
|
||||
/* Disable LSC data port L1 cache scheme for the TGM load/store for RT
|
||||
* shaders. (see HSD 18038444588)
|
||||
*/
|
||||
if (devinfo->ver >= 20 && gl_shader_stage_is_rt(bld.shader->stage) &&
|
||||
inst->sfid == GFX12_SFID_TGM &&
|
||||
!lsc_opcode_is_atomic(op)) {
|
||||
if (lsc_opcode_is_store(op)) {
|
||||
cache_mode = (unsigned) LSC_CACHE(devinfo, STORE, L1UC_L3WB);
|
||||
} else {
|
||||
cache_mode = (unsigned) LSC_CACHE(devinfo, LOAD, L1UC_L3C);
|
||||
}
|
||||
}
|
||||
|
||||
inst->desc = lsc_msg_desc(devinfo, op, binding_type, addr_size, data_size,
|
||||
lsc_opcode_has_cmask(op) ?
|
||||
(1 << components) - 1 : components,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue