Returns information about the arguments of a kernel.
cl_int clGetKernelArgInfo(cl_kernel kernel,
cl_uint arg_indx,
cl_kernel_arg_info param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
kernel
-
Specifies the kernel object being queried.
arg_indx
-
The argument index. Arguments to the kernel are referred by indices that go from 0 for the leftmost argument to
n
- 1, wheren
is the total number of arguments declared by a kernel. param_name
-
Specifies the argument information to query. The list of supported
param_name
types and the information returned inparam_value
byclGetKernelArgInfo
is described in the table below. param_value
-
A pointer to memory where the appropriate result being queried is returned. If
param_value
is NULL, it is ignored. param_value_size
-
Used to specify the size in bytes of memory pointed to by
param_value
. This size must be > size of return type as described in the table below.cl_kernel_arg_info Return Type Info. returned in param_value
CL_KERNEL_ARG_ADDRESS_QUALIFIER
cl_kernel_arg_- address_qualifier
Returns the address qualifier specified for the argument given by
arg_indx
. This can be one of the following values:CL_KERNEL_ARG_ADDRESS_GLOBAL CL_KERNEL_ARG_ADDRESS_LOCAL CL_KERNEL_ARG_ADDRESS_CONSTANT CL_KERNEL_ARG_ADDRESS_PRIVATE
If no address qualifier is specified, the default address qualifier which is
CL_KERNEL_ARG_ADDRESS_PRIVATE
is returned.CL_KERNEL_ARG_ACCESS_QUALIFIER
cl_kernel_arg_- access_qualifier
Returns the access qualifier specified for the argument given by
arg_indx
. This can be one of the following values:CL_KERNEL_ARG_ACCESS_READ_ONLY CL_KERNEL_ARG_ACCESS_WRITE_ONLY CL_KERNEL_ARG_ACCESS_READ_WRITE CL_KERNEL_ARG_ACCESS_NONE
If argument is not an image type and is not declared with the
pipe
qualifier,CL_KERNEL_ARG_ACCESS_NONE
is returned. If argument is an image type, the access qualifier specified or the default access qualifier is returned.CL_KERNEL_ARG_TYPE_NAME
char[]
Returns the type name specified for the argument given by
arg_indx
. The type name returned will be the argument type name as it was declared with any whitespace removed. If argument type name is an unsigned scalar type (i.e. unsigned char, unsigned short, unsigned int, unsigned long), uchar, ushort, uint and ulong will be returned. The argument type name returned does not include any type qualifiers.CL_KERNEL_ARG_TYPE_QUALIFIER
cl_kernel_arg- type_qualifier
Returns the type qualifier specified for the argument given by
arg_indx
. The returned value can be:CL_KERNEL_ARG_TYPE_CONST
,CL_KERNEL_ARG_TYPE_RESTRICT
,CL_KERNEL_ARG_TYPE_VOLATILE
, a combination of the above enums,CL_KERNEL_ARG_TYPE_PIPE
orCL_KERNEL_ARG_TYPE_NONE
.NoteCL_KERNEL_ARG_TYPE_VOLATILE
is returned if the argument is a pointer and the pointer is declared with the volatile qualifier. For example, a kernel argument declared asglobal int volatile *x
returnsCL_KERNEL_ARG_TYPE_VOLATILE
but a kernel argument declared asglobal int * volatile x
does not. Similarly,CL_KERNEL_ARG_TYPE_CONST
is returned if the argument is a pointer and the referenced type is declared with the restrict or const qualifier. For example, a kernel argument declared asglobal int const *x
returnsCL_KERNEL_ARG_TYPE_CONST
but a kernel argument declared asglobal int * const x
does not.If the argument is declared with the constant address space qualifier, the
CL_KERNEL_ARG_TYPE_CONST
type qualifier will be set.CL_KERNEL_ARG_TYPE_RESTRICT
will be returned if the pointer type is marked restrict. For example,global int * restrict x
returnsCL_KERNEL_ARG_TYPE_RESTRICT
.CL_KERNEL_ARG_NAME
char[]
Returns the name specified for the argument given by
arg_indx
. param_value_size_ret
-
Returns the actual size in bytes of data copied to
param_value
. Ifparam_value_size_ret
is NULL, it is ignored.
Kernel argument information is only available if the program object associated with kernel
was created with clCreateProgramWithSource
and the program executable is built with the -cl-kernel-arg-info option specified in options
argument to clBuildProgram
or clCompileProgram
.
Returns CL_SUCCESS
if the function is executed successfully.
Otherwise, it returns one of the following errors:
-
CL_INVALID_ARG_INDEX
ifarg_indx
is not a valid argument index. -
CL_INVALID_VALUE
ifparam_name
is not valid, or if size in bytes specified byparam_value_size
is < size of return type as described in the table above andparam_value
is not NULL -
CL_KERNEL_ARG_INFO_NOT_AVAILABLE
if the argument information is not available for kernel. -
CL_INVALID_KERNEL
ifkernel
is not a valid kernel object.