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 <erik.faye-lund@collabora.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20583>
(cherry picked from commit 847d198c1f)
This commit is contained in:
Mike Blumenkrantz 2023-01-06 15:19:38 -05:00 committed by Eric Engestrom
parent d8cf98bcb8
commit 453cb59d03
2 changed files with 5 additions and 1 deletions

View file

@ -994,7 +994,7 @@
"description": "lavapipe: add some safety asserts when beginning rendering",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View file

@ -1849,6 +1849,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;
}
@ -1880,6 +1882,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;