summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorOrphis <orphiss@gmail.com>2010-12-18 04:54:16 +0000
committerOrphis <orphiss@gmail.com>2010-12-18 04:54:16 +0000
commit42e40b46c0968affdcd9738a80fb98d6124686da (patch)
treed3e0790be7bab4cb72b0e18d5108a1fbe307a031 /Source/Core
parentd01542ee0a524d2da7dbbbf6da0b26f42bcc1e32 (diff)
OpenCL: Fix error reporting when the build log is too long
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6603 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/Src/OpenCL.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/Source/Core/Common/Src/OpenCL.cpp b/Source/Core/Common/Src/OpenCL.cpp
index 2b3b309794..5c36e16b2c 100644
--- a/Source/Core/Common/Src/OpenCL.cpp
+++ b/Source/Core/Common/Src/OpenCL.cpp
@@ -159,10 +159,25 @@ cl_program CompileProgram(const char *Kernel)
// Build the program executable
err = clBuildProgram(program , 0, NULL, NULL, NULL, NULL);
if(err != CL_SUCCESS) {
- char *errors[16384] = {0};
- err = clGetProgramBuildInfo(program, OpenCL::device_id,
- CL_PROGRAM_BUILD_LOG, sizeof(*errors), errors, NULL);
- ERROR_LOG(COMMON, "Error log:\n%s\n", *errors);
+ HandleCLError(err, "Error: failed to build program");
+
+ char *buildlog = NULL;
+ size_t buildlog_size = 0;
+
+ clGetProgramBuildInfo(program, OpenCL::device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &buildlog_size);
+ buildlog = new char[buildlog_size + 1];
+ err = clGetProgramBuildInfo(program, OpenCL::device_id, CL_PROGRAM_BUILD_LOG, buildlog_size, buildlog, NULL);
+ buildlog[buildlog_size] = 0;
+
+ if(err != CL_SUCCESS)
+ {
+ HandleCLError(err, "Error: can't get build log");
+ } else
+ {
+ ERROR_LOG(COMMON, "Error log:\n%s\n", buildlog);
+ }
+
+ delete[] buildlog;
return NULL;
}