diff options
author | Zack Rusin <zack@tungstengraphics.com> | 2008-12-13 22:57:38 -0500 |
---|---|---|
committer | Zack Rusin <zack@tungstengraphics.com> | 2008-12-13 22:57:38 -0500 |
commit | 5a591cb3ca280b6531f9a74e8a8c8bb7ca8f8365 (patch) | |
tree | 60fff62b6f10c1267eac1f3b3bf96c3a65378256 | |
parent | 5d26ef731231b2382c7dfe829ad31ec5425d985a (diff) |
new headers and some device changes
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | include/OpenCL/cl.h | 89 | ||||
-rw-r--r-- | include/OpenCL/cl_gl.h | 18 | ||||
-rw-r--r-- | include/OpenCL/cl_platform.h | 41 | ||||
-rw-r--r-- | src/api_device.cpp | 13 | ||||
-rw-r--r-- | src/device.cpp | 6 | ||||
-rw-r--r-- | src/device.h | 37 |
7 files changed, 141 insertions, 66 deletions
@@ -14,7 +14,8 @@ CL_SOURCES = \ src/api_platform.cpp \ src/api_profiling.cpp \ src/api_program.cpp \ - src/api_sampler.cpp + src/api_sampler.cpp \ + src/device.cpp CPUWS_SOURCES = \ cpuwinsys/cpuwinsys.c diff --git a/include/OpenCL/cl.h b/include/OpenCL/cl.h index 8ee5147..ac8d9b1 100644 --- a/include/OpenCL/cl.h +++ b/include/OpenCL/cl.h @@ -111,20 +111,21 @@ typedef struct _cl_image_format { #define CL_INVALID_PROGRAM -43 #define CL_INVALID_PROGRAM_EXECUTABLE -44 #define CL_INVALID_KERNEL_NAME -45 -#define CL_INVALID_KERNEL -46 -#define CL_INVALID_ARG_INDEX -47 -#define CL_INVALID_ARG_VALUE -48 -#define CL_INVALID_ARG_SIZE -49 -#define CL_INVALID_KERNEL_ARGS -50 -#define CL_INVALID_WORK_DIMENSION -51 -#define CL_INVALID_WORK_GROUP_SIZE -52 -#define CL_INVALID_WORK_ITEM_SIZE -53 -#define CL_INVALID_GLOBAL_OFFSET -54 -#define CL_INVALID_EVENT_WAIT_LIST -55 -#define CL_INVALID_EVENT -56 -#define CL_INVALID_OPERATION -57 -#define CL_INVALID_GL_OBJECT -58 -#define CL_INVALID_BUFFER_SIZE -59 +#define CL_INVALID_KERNEL_DEFINITION -46 +#define CL_INVALID_KERNEL -47 +#define CL_INVALID_ARG_INDEX -48 +#define CL_INVALID_ARG_VALUE -49 +#define CL_INVALID_ARG_SIZE -50 +#define CL_INVALID_KERNEL_ARGS -51 +#define CL_INVALID_WORK_DIMENSION -52 +#define CL_INVALID_WORK_GROUP_SIZE -53 +#define CL_INVALID_WORK_ITEM_SIZE -54 +#define CL_INVALID_GLOBAL_OFFSET -55 +#define CL_INVALID_EVENT_WAIT_LIST -56 +#define CL_INVALID_EVENT -57 +#define CL_INVALID_OPERATION -58 +#define CL_INVALID_GL_OBJECT -59 +#define CL_INVALID_BUFFER_SIZE -60 // OpenCL Version #define CL_VERSION_1_0 1 @@ -150,7 +151,7 @@ typedef struct _cl_image_format { #define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 #define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 #define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 @@ -171,7 +172,7 @@ typedef struct _cl_image_format { #define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 #define CL_DEVICE_MAX_SAMPLERS 0x1018 #define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MAX_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A #define CL_DEVICE_SINGLE_FP_CONFIG 0x101B #define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C #define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D @@ -196,8 +197,8 @@ typedef struct _cl_image_format { #define CL_DEVICE_EXTENSIONS 0x1030 // cl_device_address_info - bitfield -#define CL_DEVICE_ADDRESS_32_BITS (1 << 0) -#define CL_DEVICE_ADDRESS_64_BITS (1 << 1) +#define CL_DEVICE_ADDRESS_32_BITS (1 << 0) +#define CL_DEVICE_ADDRESS_64_BITS (1 << 1) // cl_device_fp_config - bitfield #define CL_FP_DENORM (1 << 0) @@ -349,13 +350,13 @@ typedef struct _cl_image_format { // cl_event_info #define CL_EVENT_COMMAND_QUEUE 0x11D0 #define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 #define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 // cl_command_type -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 #define CL_COMMAND_READ_BUFFER 0x11F3 #define CL_COMMAND_WRITE_BUFFER 0x11F4 #define CL_COMMAND_COPY_BUFFER 0x11F5 @@ -367,21 +368,21 @@ typedef struct _cl_image_format { #define CL_COMMAND_MAP_BUFFER 0x11FB #define CL_COMMAND_MAP_IMAGE 0x11FC #define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_WAIT_FOR_EVENTS 0x11FF -#define CL_COMMAND_BARRIER 0x1200 -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x1201 -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1202 +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_WAIT_FOR_EVENTS 0x11FF +#define CL_COMMAND_BARRIER 0x1200 +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x1201 +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1202 // command execution status #define CL_COMPLETE 0x0 #define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 +#define CL_SUBMITTED 0x2 #define CL_QUEUED 0x3 // cl_profiling_info #define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 #define CL_PROFILING_COMMAND_START 0x1282 #define CL_PROFILING_COMMAND_END 0x1283 @@ -403,7 +404,7 @@ clGetDeviceIDs(cl_device_type /* device_type */, extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* opcode */, + cl_device_info /* param_name */, size_t /* param_value_size */, void * /* param_value */, size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; @@ -463,7 +464,7 @@ clGetCommandQueueInfo(cl_command_queue /* command_queue */, extern CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty(cl_command_queue /* command_queue */, cl_command_queue_properties /* properties */, - cl_int /* enable */, + cl_bool /* enable */, cl_command_queue_properties * /* old_properties */) CL_API_SUFFIX__VERSION_1_0; // Memory Object APIs @@ -614,7 +615,7 @@ clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_indx */, + cl_uint /* arg_index */, size_t /* arg_size */, const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; @@ -719,8 +720,8 @@ clEnqueueWriteImage(cl_command_queue /* command_queue */, cl_bool /* blocking_write */, const size_t * /* origin[3] */, const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, + size_t /* input_row_pitch */, + size_t /* input_slice_pitch */, const void * /* ptr */, cl_uint /* num_events_in_wait_list */, const cl_event * /* event_wait_list */, @@ -812,16 +813,16 @@ clEnqueueTask(cl_command_queue /* command_queue */, cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeFnAsKernel(cl_command_queue /* command_queue */, - void (*user_func)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueNativeKernel(cl_command_queue /* command_queue */, + void (*user_func)(void *), + void * /* args */, + size_t /* cb_args */, + cl_uint /* num_mem_objects */, + const cl_mem * /* mem_list */, + const void ** /* args_mem_loc */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarker(cl_command_queue /* command_queue */, diff --git a/include/OpenCL/cl_gl.h b/include/OpenCL/cl_gl.h index 8d28293..032412e 100644 --- a/include/OpenCL/cl_gl.h +++ b/include/OpenCL/cl_gl.h @@ -87,14 +87,20 @@ clGetGLTextureInfo(cl_mem /* memobj */, size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clAcquireGLObjects(cl_command_queue /* queue */, - cl_uint /* num_objects */, - const cl_mem * /*mem_objects */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, + cl_uint /* num_objects */, + const cl_mem * /* mem_objects */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseGLObjects(cl_command_queue /* queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, + cl_uint /* num_objects */, + const cl_mem * /* mem_objects */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } diff --git a/include/OpenCL/cl_platform.h b/include/OpenCL/cl_platform.h index 8611984..05db242 100644 --- a/include/OpenCL/cl_platform.h +++ b/include/OpenCL/cl_platform.h @@ -30,7 +30,7 @@ extern "C" { #define CL_API_ENTRY #define CL_API_CALL -#define CL_API_SUFFIX__VERSION_1_0 +#define CL_API_SUFFIX__VERSION_1_0 #include <stdint.h> #include <stddef.h> @@ -49,6 +49,45 @@ typedef uint16_t cl_half __attribute__((aligned(2))); typedef float cl_float __attribute__((aligned(4))); typedef double cl_double __attribute__((aligned(8))); +/* and a few goodies to go with them */ +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127-1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767-1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647-1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) + +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 0x1.fffffep127f +#define CL_FLT_MIN 0x1.0p-126f +#define CL_FLT_EPSILON 0x1.0p-23f + +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 0x1.fffffffffffffp1023 +#define CL_DBL_MIN 0x1.0p-1022 +#define CL_DBL_EPSILON 0x1.0p-52 + /* * Vector types * diff --git a/src/api_device.cpp b/src/api_device.cpp index 133656f..c9954eb 100644 --- a/src/api_device.cpp +++ b/src/api_device.cpp @@ -28,14 +28,9 @@ create_cpu_device(cl_device_id * devices, { struct pipe_winsys *pws = cpu_winsys(); struct pipe_screen *screen = softpipe_create_screen(pws); - struct _cl_device_id *device; + Device *device = new Device(CL_DEVICE_TYPE_CPU); - device = CALLOC_STRUCT(_cl_device_id); - device->screen = screen; - device->winsys = pws; - device->type = CL_DEVICE_TYPE_CPU; - - devices[0] = device; + devices[0] = (cl_device_id)device; *num_devices = 1; } @@ -119,7 +114,7 @@ clGetDeviceInfo(cl_device_id device, switch(opcode) { case CL_DEVICE_TYPE: { - ((cl_int*)param_value)[0] = device->type; + ((cl_int*)param_value)[0] = device->type(); } break; case CL_DEVICE_VENDOR_ID: @@ -172,8 +167,6 @@ clGetDeviceInfo(cl_device_id device, break; case CL_DEVICE_MEM_BASE_ADDR_ALIGN: break; - case CL_DEVICE_MAX_DATA_TYPE_ALIGN_SIZE: - break; case CL_DEVICE_SINGLE_FP_CONFIG: break; case CL_DEVICE_GLOBAL_MEM_CACHE_TYPE: diff --git a/src/device.cpp b/src/device.cpp new file mode 100644 index 0000000..c8d4eae --- /dev/null +++ b/src/device.cpp @@ -0,0 +1,6 @@ +#include "device.h" + +Device::Device(cl_uint type) + : m_type(type) +{ +} diff --git a/src/device.h b/src/device.h index ea8c7e0..76c6505 100644 --- a/src/device.h +++ b/src/device.h @@ -6,11 +6,40 @@ struct pipe_screen; struct pipe_winsys; -struct _cl_device_id { - struct pipe_screen *screen; - struct pipe_winsys *winsys; - cl_uint type; +class Device +{ +public: + Device(cl_uint type); + + inline cl_uint type() const; + inline struct pipe_screen *screen() const; + inline struct pipe_winsys *winsys() const; + +private: + struct pipe_screen *m_screen; + struct pipe_winsys *m_winsys; + + cl_uint m_type; }; +inline cl_uint Device::type() const +{ + return m_type; +} + +inline struct pipe_screen *Device::screen() const +{ + return m_screen; +} + +inline struct pipe_winsys *Device::winsys() const +{ + return m_winsys; +} + + +struct _cl_device_id : public Device +{}; + #endif |