summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorJunyan He <junyan.he@intel.com>2016-04-18 15:15:10 +0800
committerJunyan He <junyan.he@intel.com>2016-04-18 15:15:10 +0800
commitd25e1a0938141ef1aca9f146d93cddc563b379e4 (patch)
treee87690083aa8e6c5465e1061872140a361ee1e3a /backend
parent57250803b3319d718f688db2a9c9f4689db454d3 (diff)
c
Diffstat (limited to 'backend')
-rw-r--r--backend/src/driver/cl_gen_driver.c11
-rw-r--r--backend/src/driver/cl_gen_driver.h11
-rw-r--r--backend/src/driver/cl_gen_kernel.cpp42
3 files changed, 45 insertions, 19 deletions
diff --git a/backend/src/driver/cl_gen_driver.c b/backend/src/driver/cl_gen_driver.c
index 55aa63b0..6b35e016 100644
--- a/backend/src/driver/cl_gen_driver.c
+++ b/backend/src/driver/cl_gen_driver.c
@@ -32,11 +32,12 @@ _cl_driver clgenDriver = {
.release_program = GenReleaseProgram,
.create_kernel = GenCreateKernel,
.release_kernel = GenReleaseKernel,
- .get_arg_num = GenGetArgNum,
- .get_arg_name = GenGetArgName,
- .get_arg_type_name = GenGetArgTypeName,
- .get_arg_info = GenGetArgInfo,
- .get_workgroup_info = GenGetWorkgroupInfo,
+ .get_kernel_attr = GenGetKernelAttr,
+ .get_kernel_arg_num = GenGetKernelArgNum,
+ .get_kernel_arg_name = GenGetKernelArgName,
+ .get_kernel_arg_type_name = GenGetKernelArgTypeName,
+ .get_kernel_arg_info = GenGetKernelArgInfo,
+ .get_kernel_workgroup_info = GenGetKernelWorkgroupInfo,
.create_buffer = GenCreateBuffer,
.release_mem = GenReleaseMem,
.enqueue_map_buffer = GenEnqueueMapBuffer,
diff --git a/backend/src/driver/cl_gen_driver.h b/backend/src/driver/cl_gen_driver.h
index 7616d7d6..63f4eecf 100644
--- a/backend/src/driver/cl_gen_driver.h
+++ b/backend/src/driver/cl_gen_driver.h
@@ -42,15 +42,16 @@ cl_int GenGetProgramKernelNames(cl_program program, const cl_device_id device, c
cl_int GenReleaseProgram(cl_program program, const cl_device_id device);
cl_int GenCreateKernel(cl_kernel kernel, const cl_device_id device);
cl_int GenReleaseKernel(cl_kernel kernel, const cl_device_id device);
-cl_int GenGetArgNum(cl_kernel kernel, const cl_device_id device, cl_uint* ret_num);
-cl_int GenGetArgName(cl_kernel kernel, const cl_device_id device, cl_uint index,
+cl_int GenGetKernelAttr(cl_kernel kernel, const cl_device_id device, cl_uint size, char* attr, cl_uint* ret_sz);
+cl_int GenGetKernelArgNum(cl_kernel kernel, const cl_device_id device, cl_uint* ret_num);
+cl_int GenGetKernelArgName(cl_kernel kernel, const cl_device_id device, cl_uint index,
char *name, cl_uint name_sz, cl_uint* ret_sz);
-cl_int GenGetArgTypeName(cl_kernel kernel, const cl_device_id device, cl_uint index,
+cl_int GenGetKernelArgTypeName(cl_kernel kernel, const cl_device_id device, cl_uint index,
char *name, cl_uint name_sz, cl_uint* ret_sz);
-cl_int GenGetArgInfo(cl_kernel kernel, const cl_device_id device, cl_uint index, size_t* size,
+cl_int GenGetKernelArgInfo(cl_kernel kernel, const cl_device_id device, cl_uint index, size_t* size,
cl_kernel_arg_type *type, cl_kernel_arg_address_qualifier *qualifier,
cl_kernel_arg_access_qualifier *access, cl_kernel_arg_type_qualifier *type_qualifier);
-cl_int GenGetWorkgroupInfo(cl_kernel kernel, const cl_device_id device, cl_kernel_workgroup_info wgInfo);
+cl_int GenGetKernelWorkgroupInfo(cl_kernel kernel, const cl_device_id device, cl_kernel_workgroup_info wgInfo);
cl_int GenCreateBuffer(cl_mem mem, const cl_device_id device);
cl_int GenReleaseMem(cl_mem mem, const cl_device_id device);
cl_int GenEnqueueMapBuffer(cl_command_queue queue, cl_mem mem, void** ret_addr, cl_bool block,
diff --git a/backend/src/driver/cl_gen_kernel.cpp b/backend/src/driver/cl_gen_kernel.cpp
index c67ab565..e6689794 100644
--- a/backend/src/driver/cl_gen_kernel.cpp
+++ b/backend/src/driver/cl_gen_kernel.cpp
@@ -79,7 +79,7 @@ static size_t genGetKernelMaxWorkGroupSize(cl_kernel kernel, Kernel* ker, const
}
extern "C"
-cl_int GenGetWorkgroupInfo(cl_kernel kernel, const cl_device_id device, cl_kernel_workgroup_info wgInfo)
+cl_int GenGetKernelWorkgroupInfo(cl_kernel kernel, const cl_device_id device, cl_kernel_workgroup_info wgInfo)
{
Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
if (ker == NULL)
@@ -133,7 +133,31 @@ cl_int GenReleaseKernel(cl_kernel kernel, const cl_device_id device)
}
extern "C"
-cl_int GenGetArgNum(cl_kernel kernel, const cl_device_id device, cl_uint* ret_num)
+cl_int GenGetKernelAttr(cl_kernel kernel, const cl_device_id device, cl_uint size, char* attr, cl_uint* ret_sz)
+{
+ Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
+ if (ker == NULL)
+ return CL_INVALID_VALUE;
+
+ const char* attr_str = ker->getFunctionAttributes();
+ cl_uint sz = strlen(attr_str) + 1;
+
+ if (ret_sz)
+ *ret_sz = sz;
+
+ if (!attr)
+ return CL_SUCCESS;
+
+ if (sz <= size) {
+ strcpy(attr, attr_str);
+ return CL_SUCCESS;
+ }
+
+ return CL_INVALID_VALUE;
+}
+
+extern "C"
+cl_int GenGetKernelArgNum(cl_kernel kernel, const cl_device_id device, cl_uint* ret_num)
{
Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
if (ker == NULL)
@@ -146,8 +170,8 @@ cl_int GenGetArgNum(cl_kernel kernel, const cl_device_id device, cl_uint* ret_nu
}
extern "C"
-cl_int GenGetArgName(cl_kernel kernel, const cl_device_id device, cl_uint index,
- char *name, cl_uint name_sz, cl_uint* ret_sz)
+cl_int GenGetKernelArgName(cl_kernel kernel, const cl_device_id device, cl_uint index,
+ char *name, cl_uint name_sz, cl_uint* ret_sz)
{
Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
if (ker == NULL)
@@ -177,8 +201,8 @@ cl_int GenGetArgName(cl_kernel kernel, const cl_device_id device, cl_uint index,
}
extern "C"
-cl_int GenGetArgTypeName(cl_kernel kernel, const cl_device_id device, cl_uint index,
- char *name, cl_uint name_sz, cl_uint* ret_sz)
+cl_int GenGetKernelArgTypeName(cl_kernel kernel, const cl_device_id device, cl_uint index,
+ char *name, cl_uint name_sz, cl_uint* ret_sz)
{
Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
if (ker == NULL)
@@ -208,9 +232,9 @@ cl_int GenGetArgTypeName(cl_kernel kernel, const cl_device_id device, cl_uint in
}
extern "C"
-cl_int GenGetArgInfo(cl_kernel kernel, const cl_device_id device, cl_uint index, size_t* size,
- cl_kernel_arg_type *type, cl_kernel_arg_address_qualifier *qualifier,
- cl_kernel_arg_access_qualifier *access, cl_kernel_arg_type_qualifier *type_qualifier)
+cl_int GenGetKernelArgInfo(cl_kernel kernel, const cl_device_id device, cl_uint index, size_t* size,
+ cl_kernel_arg_type *type, cl_kernel_arg_address_qualifier *qualifier,
+ cl_kernel_arg_access_qualifier *access, cl_kernel_arg_type_qualifier *type_qualifier)
{
Kernel* ker = reinterpret_cast<Kernel*>(getGenKernelPrivate(kernel, device));
if (ker == NULL)