我想编写一个采用float3数据类型并返回bool4数据类型的内核。我查看了规范,bool n 未列在内置向量数据类型下,如float n ,而是列在保留数据类型,所以我尝试使用它:
( __global const float3 *vectors , __global bool4 *booleans)
但它返回错误Unknown type name 'bool4'
。那么什么是预留数据类型以及如何使用它们?
答案 0 :(得分:0)
保留数据类型cannot be used by applications as user-defined type names。
float3
是保留的,floatn
也是float4
,n不是2的幂。所以我建议使用bool4
而不是关于最后一个组件
booln
,以及所有n的char4
。您仍然可以使用union {
char raw;
struct st {
unsigned int i : 1; // bit field to use only one bit
} c[4];
} my_bool4;
。
如果内存中的大小非常重要,您可以使用以下内容:
my_bool4.c[i]
然后使用my_bool4.raw
为[0,3]中的所有i或my_bool4
和位掩码访问每个组件。
这样,对于char4
,Detected problems with app native libraries(please consult log for detail):
libtango_client_api.so: unauthorized access to "libbinder.so"
libtango_client_api.so: unauthorized access to "libcutils.so"
libtango_client_api.so: unauthorized access to "libutils.so"
libtango_client_api.so: unauthorized access to "libgui.so"
libtango_client_api.so: unauthorized access to "libandroid_runtime.so"
libtango_client_api.so: unauthorized access to "libui.so"
只有1个字节长而不是4个字节长(好吧,它取决于编译器,但你要求 1个字节)