[Beignet] [PATCH] Add the test case for clGetProgramInfo API
junyan.he at inbox.com
junyan.he at inbox.com
Tue Jun 25 20:34:20 PDT 2013
From: Junyan He <junyan.he at linux.intel.com>
Signed-off-by: Junyan He <junyan.he at linux.intel.com>
---
utests/compiler_shader_toy.cpp | 2 +-
utests/get_cl_info.cpp | 50 ++++++++++++++++++++++++++++++++++++++--
utests/utest_helper.cpp | 6 ++---
utests/utest_helper.hpp | 7 +++---
4 files changed, 56 insertions(+), 9 deletions(-)
diff --git a/utests/compiler_shader_toy.cpp b/utests/compiler_shader_toy.cpp
index 6c34003..ead9120 100644
--- a/utests/compiler_shader_toy.cpp
+++ b/utests/compiler_shader_toy.cpp
@@ -45,7 +45,7 @@ static void run_kernel(int w, int h, const char *name)
snprintf(kernel_file, sizeof(kernel_file), "%s.cl", name);
snprintf(dst_img, sizeof(dst_img), "%s.bmp", name);
snprintf(ref_img, sizeof(ref_img), "%s_ref.bmp", name);
- OCL_CALL (cl_kernel_init, kernel_file, name, SOURCE);
+ OCL_CALL (cl_kernel_init, kernel_file, name, SOURCE, NULL);
OCL_CREATE_BUFFER(buf[0], 0, sz, NULL);
OCL_CALL (clSetKernelArg, kernel, 0, sizeof(cl_mem), &buf[0]);
diff --git a/utests/get_cl_info.cpp b/utests/get_cl_info.cpp
index 6d5e7bb..69b4c2e 100644
--- a/utests/get_cl_info.cpp
+++ b/utests/get_cl_info.cpp
@@ -154,13 +154,13 @@ Info_Result<T>* cast_as(void *info)
}
-#define CALL_INFO_AND_RET(TYPE, FUNC, OBJ) \
+#define CALL_INFO_AND_RET(TYPE, FUNC, ...) \
do { \
cl_int ret; \
size_t ret_size; \
\
Info_Result<TYPE>* info = cast_as<TYPE>(x.second); \
- ret = FUNC (OBJ, x.first, \
+ ret = FUNC (__VA_ARGS__, x.first, \
info->size, info->get_ret(), &ret_size); \
OCL_ASSERT((!ret)); \
OCL_ASSERT((info->check_result())); \
@@ -317,3 +317,49 @@ void get_queue_info(void)
MAKE_UTEST_FROM_FUNCTION(get_queue_info);
+/* ***************************************************** *
+ * clGetProgramBuildInfo *
+ * ***************************************************** */
+#define CALL_PROG_BUILD_INFO_AND_RET(TYPE) CALL_INFO_AND_RET(TYPE, \
+ clGetProgramBuildInfo, program, device)
+
+void get_program_build_info(void)
+{
+ map<cl_program_info, void *> maps;
+ cl_build_status expect_status;
+ char build_opt[] = "-emit-llvm";
+ char log[] = "";
+ int sz;
+
+ OCL_CALL (cl_kernel_init, "compiler_if_else.cl", "compiler_if_else", SOURCE, build_opt);
+
+ /* Do our test.*/
+ expect_status = CL_BUILD_SUCCESS;
+ maps.insert(make_pair(CL_PROGRAM_BUILD_STATUS,
+ (void *)(new Info_Result<cl_build_status>(expect_status))));
+ sz = strlen(build_opt) + 1;
+ maps.insert(make_pair(CL_PROGRAM_BUILD_OPTIONS,
+ (void *)(new Info_Result<char *>(build_opt, sz))));
+ sz = strlen(log) + 1;
+ maps.insert(make_pair(CL_PROGRAM_BUILD_LOG, /* not supported now, just "" */
+ (void *)(new Info_Result<char *>(log, sz))));
+
+ std::for_each(maps.begin(), maps.end(), [](pair<cl_program_info, void *> x) {
+ switch (x.first) {
+ case CL_PROGRAM_BUILD_STATUS:
+ CALL_PROG_BUILD_INFO_AND_RET(cl_build_status);
+ break;
+ case CL_PROGRAM_BUILD_OPTIONS:
+ CALL_PROG_BUILD_INFO_AND_RET(char *);
+ break;
+ case CL_PROGRAM_BUILD_LOG:
+ CALL_PROG_BUILD_INFO_AND_RET(char *);
+ break;
+ default:
+ break;
+ }
+ });
+}
+
+MAKE_UTEST_FROM_FUNCTION(get_program_build_info);
+
diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp
index 3e73db3..941b5f9 100644
--- a/utests/utest_helper.cpp
+++ b/utests/utest_helper.cpp
@@ -231,7 +231,7 @@ do_kiss_path(const char *file, cl_device_id device)
}
int
-cl_kernel_init(const char *file_name, const char *kernel_name, int format)
+cl_kernel_init(const char *file_name, const char *kernel_name, int format, const char * build_opt)
{
cl_file_map_t *fm = NULL;
char *ker_path = NULL;
@@ -259,7 +259,7 @@ cl_kernel_init(const char *file_name, const char *kernel_name, int format)
}
/* OCL requires to build the program even if it is created from a binary */
- OCL_CALL (clBuildProgram, program, 1, &device, NULL, NULL, NULL);
+ OCL_CALL (clBuildProgram, program, 1, &device, build_opt, NULL, NULL);
/* Create a kernel from the program */
kernel = clCreateKernel(program, kernel_name, &status);
@@ -394,7 +394,7 @@ cl_test_init(const char *file_name, const char *kernel_name, int format)
goto error;
/* Load the kernel */
- if ((status = cl_kernel_init(file_name, kernel_name, format)) != CL_SUCCESS)
+ if ((status = cl_kernel_init(file_name, kernel_name, format, NULL)) != CL_SUCCESS)
goto error;
error:
diff --git a/utests/utest_helper.hpp b/utests/utest_helper.hpp
index d642351..0365040 100644
--- a/utests/utest_helper.hpp
+++ b/utests/utest_helper.hpp
@@ -62,12 +62,12 @@ extern EGLSurface eglSurface;
#define OCL_CREATE_KERNEL(NAME) \
do { \
- OCL_CALL (cl_kernel_init, NAME".cl", NAME, SOURCE); \
+ OCL_CALL (cl_kernel_init, NAME".cl", NAME, SOURCE, NULL); \
} while (0)
#define OCL_CREATE_KERNEL_FROM_FILE(FILE_NAME, KERNEL_NAME) \
do { \
- OCL_CALL(cl_kernel_init, FILE_NAME".cl", KERNEL_NAME, SOURCE); \
+ OCL_CALL(cl_kernel_init, FILE_NAME".cl", KERNEL_NAME, SOURCE, NULL); \
} while (0)
#define OCL_FLUSH() \
@@ -177,7 +177,8 @@ enum {
extern int cl_ocl_init(void);
/* Init program and kernel for the test */
-extern int cl_kernel_init(const char *file_name, const char *kernel_name, int format);
+extern int cl_kernel_init(const char *file_name,
+ const char *kernel_name, int format, const char * build_opt);
/* init the bunch of global varaibles here */
extern int cl_test_init(const char *file_name, const char *kernel_name, int format);
--
1.7.9.5
More information about the Beignet
mailing list