[Mesa-dev] [PATCH 2/2] clover: fix getting struct args api size

Serge Martin edb+mesa at sigluy.net
Wed Jun 8 22:47:27 UTC 2016


This fix getting the size of a struct arg. vec3 types still work ok.
Only buit-in args need to have power of two alignment, getTypeAllocSize
reports the correct size.
---
 src/gallium/state_trackers/clover/llvm/invocation.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index 03487d6..9af51539 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -472,7 +472,8 @@ namespace {
          // aligned to the next larger power of two".  We need this
          // alignment for three element vectors, which have
          // non-power-of-2 store size.
-         const unsigned arg_api_size = util_next_power_of_two(arg_store_size);
+         const unsigned arg_api_size = arg_type->isStructTy() ?
+               arg_store_size : util_next_power_of_two(arg_store_size);
 
          llvm::Type *target_type = arg_type->isIntegerTy() ?
                TD.getSmallestLegalIntType(mod->getContext(), arg_store_size * 8)
-- 
2.5.5



More information about the mesa-dev mailing list