nvk: Align UBO/SSBO addresses down rather than up

This should never happen as the client should always give us aligned
addresses.  However, in the off chance that it does, aligning down is
probably safer than aligning up as it won't cause the top end of the
range increase and potentially fault.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33610>
This commit is contained in:
Faith Ekstrand 2025-02-18 16:58:59 -06:00 committed by Marge Bot
parent 2183bc73a6
commit 5762586c6d

View file

@ -175,7 +175,7 @@ ubo_desc(struct nvk_physical_device *pdev,
assert(addr_range.addr % min_cbuf_alignment == 0);
assert(addr_range.range <= NVK_MAX_CBUF_SIZE);
addr_range.addr = align64(addr_range.addr, min_cbuf_alignment);
addr_range.addr = ROUND_DOWN_TO(addr_range.addr, min_cbuf_alignment);
addr_range.range = align(addr_range.range, min_cbuf_alignment);
if (nvk_use_bindless_cbuf(&pdev->info)) {
@ -227,7 +227,7 @@ ssbo_desc(struct nvk_addr_range addr_range)
assert(addr_range.addr % NVK_MIN_SSBO_ALIGNMENT == 0);
assert(addr_range.range <= UINT32_MAX);
addr_range.addr = align64(addr_range.addr, NVK_MIN_SSBO_ALIGNMENT);
addr_range.addr = ROUND_DOWN_TO(addr_range.addr, NVK_MIN_SSBO_ALIGNMENT);
addr_range.range = align(addr_range.range, NVK_SSBO_BOUNDS_CHECK_ALIGNMENT);
return (union nvk_buffer_descriptor) { .addr = {