From f9dd9bc30d3a6f1edce417ab42851f34385dd163 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 17 Sep 2025 15:00:00 -0400 Subject: [PATCH] mesa: don't assert when finding a renderbuffer miplevel fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this can also be caused by winsys and api being out of sync, e.g., if the window resize is lagging behind the framebuffer resize in this case, just use level 0 and assume things will be okay cc: mesa-stable Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/renderbuffer.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index 58fec01fc75..6574be0d60a 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -573,17 +573,17 @@ _mesa_update_renderbuffer_surface(struct gl_context *ctx, rtt_height = 1; } - /* find matching mipmap level size */ - unsigned level; - for (level = 0; level <= resource->last_level; level++) { - if (u_minify(resource->width0, level) == rtt_width && - u_minify(resource->height0, level) == rtt_height && + /* try to find matching mipmap level size, or just use level 0 and assume partial render */ + unsigned level = 0; + for (int test_level = 0; test_level <= resource->last_level; test_level++) { + if (u_minify(resource->width0, test_level) == rtt_width && + u_minify(resource->height0, test_level) == rtt_height && (resource->target != PIPE_TEXTURE_3D || - u_minify(resource->depth0, level) == rtt_depth)) { + u_minify(resource->depth0, test_level) == rtt_depth)) { + level = test_level; break; } } - assert(level <= resource->last_level); /* determine the layer bounds */ unsigned first_layer, last_layer;