[Mesa-dev] [PATCH 1/2] clover: assert struct argument is compiled usably
Francisco Jerez
currojerez at riseup.net
Sat Jun 4 02:18:32 UTC 2016
Serge Martin <edb+mesa at sigluy.net> writes:
> From: Vedran Miletić <vedran at miletic.net>
>
> Make sure that a struct argument did not get compiled into a pointer
> type with the byval attribute. If we try to handle the pointer with
> byval, we end up with the pointer size instead of the struct size.
>
Ugh, is that a bug in the code below? How are byval pointers supposed
to be handled here? Exactly as if the argument wasn't a pointer at all
by providing a copy of the pointed-to object as-is in the kernel input
buffer? In that case wouldn't the code below need to pass the correct
size of the pointed-to object as target/api size rather than the size of
the pointer?
> Struct arguments on AMD GPUs will work correctly once Clang gets patched
> with http://reviews.llvm.org/D20168 or an equivalent patch.
>
> Reviewed-by: Serge Martin <edb+mesa at sigluy.net>
>
> Cc: 12.0 <mesa-stable at lists.freedesktop.org>
> ---
> src/gallium/state_trackers/clover/llvm/invocation.cpp | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> index e2cadda..03487d6 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -461,6 +461,10 @@ namespace {
> for (const auto &arg: kernel_func->args()) {
>
> llvm::Type *arg_type = arg.getType();
> + assert(!(arg_type->isPointerTy() && arg.hasByValAttr() &&
> + arg_type->getPointerElementType()->isStructTy()) &&
> + "Unable to handle struct compiled as pointer with byval.");
> +
> const unsigned arg_store_size = TD.getTypeStoreSize(arg_type);
>
> // OpenCL 1.2 specification, Ch. 6.1.5: "A built-in data
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160603/e25a3be4/attachment.sig>
More information about the mesa-dev
mailing list