memo / ofxMSAOpenCL

C++ openFrameworks addon for very simple to use wrapper for OpenCL. All underlying openCL objects are accessible to allow advanced features too if need be
http://www.memo.tv/ofxmsaopencl/
Other
88 stars 35 forks source link

Replace asserts with verbose output and true/false returns #11

Closed SoylentGraham closed 7 years ago

SoylentGraham commented 11 years ago

I've done this in a branch, but need to refactor it all for pull requests. But to avoid duplicating work, if anyone wants these changes let me know. Also handy is this function;

const char* OpenCL::getErrorAsString(cl_int err)
    {
        switch ( err )
        {
            case CL_SUCCESS:                    return "Success";
            case CL_DEVICE_NOT_FOUND:           return "Device not found";
            case CL_DEVICE_NOT_AVAILABLE:       return "Device not available";
            case CL_COMPILER_NOT_AVAILABLE:     return "Compiler not available";
            case CL_MEM_OBJECT_ALLOCATION_FAILURE:  return "Memory object allocation failure";
            case CL_OUT_OF_RESOURCES:           return "Out of resources";
            case CL_OUT_OF_HOST_MEMORY:         return "Out of host memory";
            case CL_PROFILING_INFO_NOT_AVAILABLE:   return "Profiling info not available";
            case CL_MEM_COPY_OVERLAP:           return "Memory copy overlap";
            case CL_IMAGE_FORMAT_MISMATCH:      return "Image format mismatch";
            case CL_IMAGE_FORMAT_NOT_SUPPORTED: return "Image format not supported";
            case CL_BUILD_PROGRAM_FAILURE:      return "Build program failure";
            case CL_MAP_FAILURE:                return "Map failure";
            case CL_INVALID_VALUE:              return "Invalid value";
            case CL_INVALID_DEVICE_TYPE:        return "Invalid device type";
            case CL_INVALID_PLATFORM:           return "Invalid platform";
            case CL_INVALID_DEVICE:             return "Invalid device";
            case CL_INVALID_CONTEXT:            return "Invalid context";
            case CL_INVALID_QUEUE_PROPERTIES:   return "Invalid queue properties";
            case CL_INVALID_COMMAND_QUEUE:      return "Invalid command queue";
            case CL_INVALID_HOST_PTR:           return "Invalid host pointer";
            case CL_INVALID_MEM_OBJECT:         return "Invalid memory object";
            case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:    return "Invalid image format descriptor";
            case CL_INVALID_IMAGE_SIZE:         return "Invalid image size";
            case CL_INVALID_SAMPLER:            return "Invalid sampler";
            case CL_INVALID_BINARY:             return "Invalid binary";
            case CL_INVALID_BUILD_OPTIONS:      return "Invalid build options";
            case CL_INVALID_PROGRAM:            return "Invalid program";
            case CL_INVALID_PROGRAM_EXECUTABLE: return "Invalid program executable";
            case CL_INVALID_KERNEL_NAME:        return "Invalid kernel name";
            case CL_INVALID_KERNEL_DEFINITION:  return "Invalid kernel definition";
            case CL_INVALID_KERNEL:             return "Invalid kernel";
            case CL_INVALID_ARG_INDEX:          return "Invalid argument index";
            case CL_INVALID_ARG_VALUE:          return "Invalid argument value";
            case CL_INVALID_ARG_SIZE:           return "Invalid argument size";
            case CL_INVALID_KERNEL_ARGS:        return "Invalid kernel arguments";
            case CL_INVALID_WORK_DIMENSION:     return "Invalid work dimension";
            case CL_INVALID_WORK_GROUP_SIZE:    return "Invalid work group size";
            case CL_INVALID_WORK_ITEM_SIZE:     return "invalid work item size";
            case CL_INVALID_GLOBAL_OFFSET:      return "Invalid global offset";
            case CL_INVALID_EVENT_WAIT_LIST:    return "Invalid event wait list";
            case CL_INVALID_EVENT:              return "Invalid event";
            case CL_INVALID_OPERATION:          return "Invalid operation";
            case CL_INVALID_GL_OBJECT:          return "Invalid OpenGL object";
            case CL_INVALID_BUFFER_SIZE:        return "Invalid buffer size";
            case CL_INVALID_MIP_LEVEL:          return "Invalid MIP level";
        }

        //  unhandled case
        assert(false);
        return "Unhandled opencl error";
    }
memo commented 7 years ago

I believe this commit addresses this issue now? (It throws errrors, which can be caught)