intel/fs: ray query fix for global address
With stages dispatching with a mask, we can run into situations where
we don't have the global address in all lanes. The existing code
always assumed we had the addres in at least lane0.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: bb40e999d1 ("intel/nir: use a single intel intrinsic to deal with ray traversal")
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17330>
This commit is contained in:
committed by
Marge Bot
parent
9bd7570e96
commit
9680e0e4a2
@@ -5948,7 +5948,9 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||
emit_rt_lsc_fence(bld, LSC_FENCE_LOCAL, LSC_FLUSH_TYPE_NONE);
|
||||
|
||||
fs_reg srcs[RT_LOGICAL_NUM_SRCS];
|
||||
srcs[RT_LOGICAL_SRC_GLOBALS] = get_nir_src(instr->src[0]);
|
||||
|
||||
fs_reg globals = get_nir_src(instr->src[0]);
|
||||
srcs[RT_LOGICAL_SRC_GLOBALS] = bld.emit_uniformize(globals);
|
||||
srcs[RT_LOGICAL_SRC_BVH_LEVEL] = get_nir_src(instr->src[1]);
|
||||
srcs[RT_LOGICAL_SRC_TRACE_RAY_CONTROL] = get_nir_src(instr->src[2]);
|
||||
srcs[RT_LOGICAL_SRC_SYNCHRONOUS] = brw_imm_ud(synchronous);
|
||||
|
||||
Reference in New Issue
Block a user