mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
ac/nir/tess: Fix per-patch output VRAM mapping.
VARYING_SLOT_PATCH0 is greater than 64 so it is wrong to use it
with BITFIELD64_BIT. Check for VARYING_SLOT_TESS_LEVEL_* properly
when mapping output locations in VRAM.
Fixes: 2cf7f282df
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11253
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29696>
This commit is contained in:
parent
0f0ebd8512
commit
0355364743
2 changed files with 5 additions and 13 deletions
|
|
@ -42,15 +42,3 @@ dEQP-GLES31.functional.texture.specification.texstorage3d.format.depth32f_stenci
|
|||
multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.multiply,Fail
|
||||
multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.overlay,Fail
|
||||
multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.screen,Fail
|
||||
|
||||
# Regression from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29436
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/11253
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit.isolines,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit.quads,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit.triangles,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query.isolines,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query.quads,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query.triangles,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin.isolines,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin.quads,Fail
|
||||
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin.triangles,Fail
|
||||
|
|
|
|||
|
|
@ -456,14 +456,18 @@ hs_output_vram_map_io_location(nir_shader *shader,
|
|||
*/
|
||||
if (!per_vertex) {
|
||||
const uint64_t tf_mask = tcs_vram_tf_out_mask(shader, st);
|
||||
if (BITFIELD64_BIT(loc) & TESS_LVL_MASK)
|
||||
if (loc == VARYING_SLOT_TESS_LEVEL_INNER || loc == VARYING_SLOT_TESS_LEVEL_OUTER) {
|
||||
assert(tf_mask & BITFIELD64_BIT(loc));
|
||||
return util_bitcount64(tf_mask & BITFIELD64_MASK(loc));
|
||||
}
|
||||
|
||||
const uint32_t patch_out_mask = tcs_vram_per_patch_out_mask(shader, st);
|
||||
assert(patch_out_mask & BITFIELD_BIT(loc - VARYING_SLOT_PATCH0));
|
||||
return util_bitcount64(tf_mask) +
|
||||
util_bitcount(patch_out_mask & BITFIELD_MASK(loc - VARYING_SLOT_PATCH0));
|
||||
} else {
|
||||
const uint64_t per_vertex_mask = tcs_vram_per_vtx_out_mask(shader, st);
|
||||
assert(per_vertex_mask & BITFIELD64_BIT(loc));
|
||||
return util_bitcount64(per_vertex_mask & BITFIELD64_MASK(loc));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue