From 847d198c1fffe018f4c3557db239168100400319 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 6 Jan 2023 15:19:38 -0500 Subject: [PATCH] lavapipe: add some safety asserts when beginning rendering if the render area exceeds the attachment size, this is not only illegal, it will crash later cc: mesa-stable Reviewed-by: Erik Faye-Lund Reviewed-by: Brian Paul Reviewed-by: Roland Scheidegger Part-of: --- src/gallium/frontends/lavapipe/lvp_execute.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index 10d57c54c48..c2a5bc1770d 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -1850,6 +1850,8 @@ static void handle_begin_rendering(struct vk_cmd_queue_entry *cmd, state->color_att[i].imgv = create_multisample_surface(state, imgv, state->forced_sample_count, att_needs_replicate(state, imgv, state->color_att[i].load_op)); state->framebuffer.cbufs[i] = state->color_att[i].imgv->surface; + assert(state->render_area.offset.x + state->render_area.extent.width <= state->framebuffer.cbufs[i]->texture->width0); + assert(state->render_area.offset.y + state->render_area.extent.height <= state->framebuffer.cbufs[i]->texture->height0); } else { state->framebuffer.cbufs[i] = NULL; } @@ -1881,6 +1883,8 @@ static void handle_begin_rendering(struct vk_cmd_queue_entry *cmd, att_needs_replicate(state, imgv, load_op)); } state->framebuffer.zsbuf = state->ds_imgv->surface; + assert(state->render_area.offset.x + state->render_area.extent.width <= state->framebuffer.zsbuf->texture->width0); + assert(state->render_area.offset.y + state->render_area.extent.height <= state->framebuffer.zsbuf->texture->height0); } else { state->ds_imgv = NULL; state->framebuffer.zsbuf = NULL;