radv/rra/gfx12: Fix primitive/geometry index validation

Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38462>
This commit is contained in:
Konstantin Seurer 2025-11-15 09:33:22 +01:00 committed by Marge Bot
parent 07afe65beb
commit 685d34a6d3

View file

@ -121,16 +121,16 @@ rra_validate_node_gfx12(struct hash_table_u64 *accel_struct_vas, uint8_t *data,
} else { } else {
uint32_t pair_index = (child_type & 0x3) | ((child_type & 0x8) >> 1); uint32_t pair_index = (child_type & 0x3) | ((child_type & 0x8) >> 1);
if (BITSET_EXTRACT(node, 1024 - 29 * (pair_index + 1) + 17, 12)) { if (BITSET_EXTRACT(child_node, 1024 - 29 * (pair_index + 1) + 17, 12)) {
uint32_t geometry_id = get_geometry_id(node, pair_index * 2 + 0); uint32_t geometry_id = get_geometry_id(child_node, pair_index * 2 + 0);
if (geometry_id >= geometry_count) { if (geometry_id >= geometry_count) {
rra_validation_fail(&child_ctx, "Invalid geometry_id(%u) >= geometry_count(%u)", geometry_id, rra_validation_fail(&child_ctx, "Invalid geometry_id(%u) >= geometry_count(%u)", geometry_id,
geometry_count); geometry_count);
} }
} }
if (BITSET_EXTRACT(node, 1024 - 29 * (pair_index + 1) + 3, 12)) { if (BITSET_EXTRACT(child_node, 1024 - 29 * (pair_index + 1) + 3, 12)) {
uint32_t geometry_id = get_geometry_id(node, pair_index * 2 + 1); uint32_t geometry_id = get_geometry_id(child_node, pair_index * 2 + 1);
if (geometry_id >= geometry_count) { if (geometry_id >= geometry_count) {
rra_validation_fail(&child_ctx, "Invalid geometry_id(%u) >= geometry_count(%u)", geometry_id, rra_validation_fail(&child_ctx, "Invalid geometry_id(%u) >= geometry_count(%u)", geometry_id,
geometry_count); geometry_count);