mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
anv: Handle VK_WHOLE_SIZE properly for buffer views
The old calculation, which used view->offset, encorporated buffer->offset
into the size calculation where it doesn't belong. This meant that, if
buffer->offset > buffer->size, you would always get a negative size. This
fixes 170 dEQP-VK.renderpass.attachment.* Vulkan CTS tests on Haswell.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 593731ea3c)
[Emil Velikov: s|bpb / 8|bs|g]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Conflicts:
src/intel/vulkan/anv_image.c
This commit is contained in:
parent
7441632753
commit
b1b601fc7c
1 changed files with 4 additions and 3 deletions
|
|
@ -628,18 +628,19 @@ void anv_buffer_view_init(struct anv_buffer_view *view,
|
|||
view->format = anv_get_isl_format(&device->info, pCreateInfo->format,
|
||||
VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
VK_IMAGE_TILING_LINEAR);
|
||||
const uint32_t format_bs = isl_format_get_layout(view->format)->bs;
|
||||
view->bo = buffer->bo;
|
||||
view->offset = buffer->offset + pCreateInfo->offset;
|
||||
view->range = pCreateInfo->range == VK_WHOLE_SIZE ?
|
||||
buffer->size - view->offset : pCreateInfo->range;
|
||||
buffer->size - pCreateInfo->offset : pCreateInfo->range;
|
||||
view->range = align_down_npot_u32(view->range, format_bs);
|
||||
|
||||
if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
|
||||
view->surface_state = alloc_surface_state(device, cmd_buffer);
|
||||
|
||||
anv_fill_buffer_surface_state(device, view->surface_state,
|
||||
view->format,
|
||||
view->offset, view->range,
|
||||
isl_format_get_layout(view->format)->bs);
|
||||
view->offset, view->range, format_bs);
|
||||
} else {
|
||||
view->surface_state = (struct anv_state){ 0 };
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue