mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 09:18:04 +02:00
brw: fix task/mesh push constant loading
The InlineData passed to the shader is a fixed size unrelated to the
register size. It happens to match pre-Xe2, but by considering it the
same in Xe2, we ended up reading pushed constants from the wrong place
when they didn't fit in the InlineData.
Fixes: 97b17aa0b1 ("brw/nir: rework inline_data_intel to work with compute")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31856>
This commit is contained in:
parent
b7560fa048
commit
13db5fad27
1 changed files with 1 additions and 4 deletions
|
|
@ -49,9 +49,6 @@ static nir_def *
|
|||
brw_nir_lower_load_uniforms_impl(nir_builder *b, nir_instr *instr,
|
||||
void *data)
|
||||
{
|
||||
const struct intel_device_info *devinfo =
|
||||
(const struct intel_device_info *)data;
|
||||
|
||||
assert(instr->type == nir_instr_type_intrinsic);
|
||||
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
|
||||
assert(intrin->intrinsic == nir_intrinsic_load_uniform);
|
||||
|
|
@ -62,7 +59,7 @@ brw_nir_lower_load_uniforms_impl(nir_builder *b, nir_instr *instr,
|
|||
BRW_TASK_MESH_PUSH_CONSTANTS_START_DW * 4 +
|
||||
nir_intrinsic_base(intrin) + nir_src_as_uint(intrin->src[0]);
|
||||
int range = intrin->def.num_components * intrin->def.bit_size / 8;
|
||||
if ((offset + range) <= (int)(REG_SIZE * reg_unit(devinfo))) {
|
||||
if ((offset + range) <= (int)(BRW_TASK_MESH_INLINE_DATA_SIZE_DW * 4)) {
|
||||
return nir_load_inline_data_intel(b,
|
||||
intrin->def.num_components,
|
||||
intrin->def.bit_size,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue