Mesa (master): anv: use helper function to get the buffer size
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Mar 25 22:35:21 UTC 2021
Module: Mesa
Branch: master
Commit: 042d24971e89d316a2b8223f2641134b591bb899
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=042d24971e89d316a2b8223f2641134b591bb899
Author: Iván Briano <ivan.briano at intel.com>
Date: Thu Mar 18 16:53:08 2021 -0700
anv: use helper function to get the buffer size
This ensures we get a properly aligned size for the buffer so we don't
trip over HW limits for push constants.
Closes #3703
Fixes dEQP-VK.robustness.image_robustness.push.* on HSW
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9699>
---
src/intel/vulkan/anv_cmd_buffer.c | 3 ++-
src/intel/vulkan/anv_descriptor_set.c | 8 ++++----
src/intel/vulkan/anv_private.h | 4 ++++
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c
index bfb5b26bb03..3286c94bfe6 100644
--- a/src/intel/vulkan/anv_cmd_buffer.c
+++ b/src/intel/vulkan/anv_cmd_buffer.c
@@ -1269,7 +1269,8 @@ anv_cmd_buffer_push_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
*/
struct anv_state desc_mem =
anv_state_stream_alloc(&cmd_buffer->dynamic_state_stream,
- layout->descriptor_buffer_size, 32);
+ anv_descriptor_set_layout_descriptor_buffer_size(layout, 0),
+ ANV_UBO_ALIGNMENT);
if (set->desc_mem.alloc_size) {
/* TODO: Do we really need to copy all the time? */
memcpy(desc_mem.map, set->desc_mem.map,
diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c
index e0f872c9497..4c96d29db29 100644
--- a/src/intel/vulkan/anv_descriptor_set.c
+++ b/src/intel/vulkan/anv_descriptor_set.c
@@ -607,9 +607,9 @@ set_layout_buffer_view_count(const struct anv_descriptor_set_layout *set_layout,
return set_layout->buffer_view_count - shrink;
}
-static uint32_t
-set_layout_descriptor_buffer_size(const struct anv_descriptor_set_layout *set_layout,
- uint32_t var_desc_count)
+uint32_t
+anv_descriptor_set_layout_descriptor_buffer_size(const struct anv_descriptor_set_layout *set_layout,
+ uint32_t var_desc_count)
{
const struct anv_descriptor_set_binding_layout *dynamic_binding =
set_layout_dynamic_binding(set_layout);
@@ -1070,7 +1070,7 @@ anv_descriptor_set_create(struct anv_device *device,
return result;
uint32_t descriptor_buffer_size =
- set_layout_descriptor_buffer_size(layout, var_desc_count);
+ anv_descriptor_set_layout_descriptor_buffer_size(layout, var_desc_count);
if (descriptor_buffer_size) {
uint64_t pool_vma_offset =
util_vma_heap_alloc(&pool->bo_heap, descriptor_buffer_size,
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 8b7f570777f..f71e86c54fc 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -2059,6 +2059,10 @@ size_t
anv_descriptor_set_layout_size(const struct anv_descriptor_set_layout *layout,
uint32_t var_desc_count);
+uint32_t
+anv_descriptor_set_layout_descriptor_buffer_size(const struct anv_descriptor_set_layout *set_layout,
+ uint32_t var_desc_count);
+
void
anv_descriptor_set_write_image_view(struct anv_device *device,
struct anv_descriptor_set *set,
More information about the mesa-commit
mailing list