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>
This commit is contained in:
Mike Blumenkrantz
2023-01-06 15:19:38 -05:00
committed by Marge Bot
parent b20df1abeb
commit 847d198c1f
@@ -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;