[Mesa-dev] [PATCH] anv: Round u_vector element sizes to a power of two
Jason Ekstrand
jason at jlekstrand.net
Wed Jul 12 02:09:32 UTC 2017
This fixes 32-bit builds of the driver.
Fixes: 08413a81b93dc537fb0c34327ad162f07e8c3427
Cc: Mark Janes <mark.a.janes at intel.com>
Cc: mesa-stable at lists.freedesktop.org
---
src/intel/vulkan/anv_batch_chain.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c
index 47fee739..c895848 100644
--- a/src/intel/vulkan/anv_batch_chain.c
+++ b/src/intel/vulkan/anv_batch_chain.c
@@ -672,6 +672,15 @@ anv_cmd_buffer_new_binding_table_block(struct anv_cmd_buffer *cmd_buffer)
return VK_SUCCESS;
}
+static inline uint32_t
+round_up_to_power_of_two(uint32_t value)
+{
+ if (value <= 1)
+ return value;
+
+ return 1 << (32 - __builtin_clz(value - 1));
+}
+
VkResult
anv_cmd_buffer_init_batch_bo_chain(struct anv_cmd_buffer *cmd_buffer)
{
@@ -706,9 +715,11 @@ anv_cmd_buffer_init_batch_bo_chain(struct anv_cmd_buffer *cmd_buffer)
*(struct anv_batch_bo **)u_vector_add(&cmd_buffer->seen_bbos) = batch_bo;
+ /* u_vector requires power-of-two size elements */
+ uint32_t pow2_state_size =
+ round_up_to_power_of_two(sizeof(struct anv_state));
success = u_vector_init(&cmd_buffer->bt_block_states,
- sizeof(struct anv_state),
- 8 * sizeof(struct anv_state));
+ pow2_state_size, 8 * pow2_state_size);
if (!success)
goto fail_seen_bbos;
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list