nvk: Don't use a descriptor cbuf if it's too large

This fixes a test on vkd3d-proton commit 836446ce25
VKD3D_TEST_FILTER=test_typed_buffers_many_objects_dxil build/tests/d3d12

Fixes: f1c909edd5 ("nvk/nir: Add cbuf analysis to nvi_nir_lower_descriptors()")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28844>
This commit is contained in:
M Henning
2024-04-21 15:17:41 -04:00
committed by Marge Bot
parent f6301a7727
commit 6b22fff658
@@ -625,6 +625,9 @@ load_descriptor(nir_builder *b, unsigned num_components, unsigned bit_size,
nir_iadd_imm(b, nir_imul_imm(b, index, binding_layout->stride),
binding_layout->offset + offset_B);
uint64_t max_desc_ubo_offset = binding_layout->offset +
binding_layout->array_size * binding_layout->stride;
unsigned desc_align_mul = (1 << (ffs(binding_layout->stride) - 1));
desc_align_mul = MIN2(desc_align_mul, 16);
unsigned desc_align_offset = binding_layout->offset + offset_B;
@@ -637,7 +640,7 @@ load_descriptor(nir_builder *b, unsigned num_components, unsigned bit_size,
int cbuf_idx = get_mapped_cbuf_idx(&cbuf_key, ctx);
nir_def *desc;
if (cbuf_idx >= 0) {
if (cbuf_idx >= 0 && max_desc_ubo_offset <= NVK_MAX_CBUF_SIZE) {
desc = nir_load_ubo(b, num_components, bit_size,
nir_imm_int(b, cbuf_idx),
desc_ubo_offset,