diff options
-rw-r--r-- | src/intel/vulkan/anv_nir_compute_push_layout.c | 2 | ||||
-rw-r--r-- | src/intel/vulkan/anv_private.h | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/intel/vulkan/anv_nir_compute_push_layout.c b/src/intel/vulkan/anv_nir_compute_push_layout.c index 1dbfb08a100..e96ce98bde2 100644 --- a/src/intel/vulkan/anv_nir_compute_push_layout.c +++ b/src/intel/vulkan/anv_nir_compute_push_layout.c @@ -74,7 +74,7 @@ anv_nir_compute_push_layout(const struct anv_physical_device *pdevice, * push_end (no push constants is indicated by push_start = UINT_MAX). */ push_start = MIN2(push_start, push_end); - push_start &= ~31u; + push_start = align_down_u32(push_start, 32); if (has_push_intrinsic) { nir_foreach_function(function, nir) { diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index cdfbcb87535..8138137abf7 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -232,10 +232,17 @@ align_down_npot_u32(uint32_t v, uint32_t a) } static inline uint32_t +align_down_u32(uint32_t v, uint32_t a) +{ + assert(a != 0 && a == (a & -a)); + return v & ~(a - 1); +} + +static inline uint32_t align_u32(uint32_t v, uint32_t a) { assert(a != 0 && a == (a & -a)); - return (v + a - 1) & ~(a - 1); + return align_down_u32(v + a - 1, a); } static inline uint64_t |