render/vulkan: check that requested size is smaller than max

Fail with a clearer error when the requested size is too large.
Without this, we allocate a buffer with a size smaller than what
was requested.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3975
This commit is contained in:
Simon Ser 2023-01-19 17:10:13 +01:00 committed by Alexander Orzechowski
parent 1ba322e9ff
commit 377668aaf6
1 changed files with 7 additions and 0 deletions

View File

@ -234,6 +234,13 @@ struct wlr_vk_buffer_span vulkan_get_stage_span(struct wlr_vk_renderer *r,
};
}
if (size > max_stage_size) {
wlr_log(WLR_ERROR, "cannot vulkan stage buffer: "
"requested size (%zu bytes) exceeds maximum (%zu bytes)",
(size_t)size, (size_t)max_stage_size);
goto error_alloc;
}
// we didn't find a free buffer - create one
// size = clamp(max(size * 2, prev_size * 2), min_size, max_size)
VkDeviceSize bsize = size * 2;