Francisco Jerez <curroje...@riseup.net> writes:

> Serge Martin <edb+m...@sigluy.net> writes:
>
>> 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);
>>  
> Hm...  Isn't this still going to be broken if you pass a struct argument
> to a kernel function and the alignment of any of the struct members
> doesn't match the target-specific data layout?  Not sure we can fix this
> sensibly without requiring the target's data layout to match the CL API
> exactly.  Any suggestions Tom?
>

Unless someone has a better plan, I suggest we roll back to v1.1 of this
patch and call it a back-end data layout bug if the expected alignment
or size of a kernel argument type doesn't match the requirements set by
the CL spec.

>>           llvm::Type *target_type = arg_type->isIntegerTy() ?
>>                 TD.getSmallestLegalIntType(mod->getContext(), arg_store_size 
>> * 8)
>> -- 
>> 2.5.5

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to