turnip: fix renderpass gmem configs when there are too many attachments
Since a value of at least "align" is used for nblocks, we might end up with nblocks greater than the number of GMEM blocks remaining. Check for this case and bail out, sysmem rendering will be used for such cases. Fixes some of these tests: dEQP-VK.pipeline.render_to_image.core.*.huge.* Signed-off-by: Jonathan Marek <jonathan@marek.ca> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5499>
This commit is contained in:

committed by
Marge Bot

parent
b6b98e9510
commit
0a84d22bf2
@@ -6,8 +6,6 @@ dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw
|
||||
dEQP-VK.compute.indirect_dispatch.upload_buffer.multiple_groups
|
||||
dEQP-VK.glsl.linkage.varying.struct.int
|
||||
dEQP-VK.image.texel_view_compatible.graphic.extended.2d_image.texture_read.astc_10x6_unorm_block.r32g32b32a32_uint
|
||||
dEQP-VK.pipeline.render_to_image.core.2d_array.huge.height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint
|
||||
dEQP-VK.pipeline.render_to_image.core.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint
|
||||
dEQP-VK.renderpass2.dedicated_allocation.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear_draw
|
||||
dEQP-VK.renderpass2.suballocation.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear_draw_stencil_read_only
|
||||
dEQP-VK.renderpass.dedicated_allocation.formats.d24_unorm_s8_uint.input.dont_care.dont_care.draw
|
||||
|
@@ -339,6 +339,11 @@ create_render_pass_common(struct tu_render_pass *pass,
|
||||
uint32_t align = MAX2(1, att->cpp >> block_align_shift);
|
||||
uint32_t nblocks = MAX2((gmem_blocks * att->cpp / cpp_total) & ~(align - 1), align);
|
||||
|
||||
if (nblocks > gmem_blocks) {
|
||||
pixels = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
gmem_blocks -= nblocks;
|
||||
cpp_total -= att->cpp;
|
||||
offset += nblocks * gmem_align;
|
||||
|
Reference in New Issue
Block a user