diff options
author | Michael Bien <[email protected]> | 2010-06-15 00:18:09 +0200 |
---|---|---|
committer | Michael Bien <[email protected]> | 2010-06-15 00:18:09 +0200 |
commit | 6379f5ff97582160f8e4074e083129b6322b89fe (patch) | |
tree | 0436d641e874a21bdd00784020c8f354a237576a | |
parent | 86abb5fecf48c7df8dcad653b5ec03f349558050 (diff) |
OpenCL 1.1 support.OpenCL1.1
- updated headers
- removed deprecated function from HLB
- updated javadoc taglets and all references
- disabled cl_vendor_ext.h since most of them are now in the official headers
- TODO revisit callbacks
-rw-r--r-- | build.xml | 2 | ||||
-rw-r--r-- | resources/cl-common.cfg | 10 | ||||
-rw-r--r-- | resources/createTagletProps.sh | 2 | ||||
-rw-r--r-- | resources/includes/CL_orig/cl.h | 137 | ||||
-rw-r--r-- | resources/includes/CL_orig/cl_ext.h | 158 | ||||
-rw-r--r-- | resources/includes/CL_orig/cl_gl.h | 10 | ||||
-rw-r--r-- | resources/includes/CL_orig/cl_gl_ext.h | 23 | ||||
-rw-r--r-- | resources/includes/CL_orig/cl_platform.h | 118 | ||||
-rw-r--r-- | resources/native-taglet.properties | 18 | ||||
-rw-r--r-- | resources/opencl.h | 2 | ||||
-rw-r--r-- | src/com/jogamp/opencl/CLCommandQueue.java | 16 |
11 files changed, 440 insertions, 56 deletions
@@ -243,7 +243,7 @@ <target name="update-headers" depends="prepare-build"> - <property name="registry.url" value="http://www.khronos.org/registry/cl/api/1.0/"/> + <property name="registry.url" value="http://www.khronos.org/registry/cl/api/1.1/"/> <!-- download new headers from OpenCL registry if necessary --> <update-headers header="${headers.orig}/cl.h" url="${registry.url}cl.h"/> diff --git a/resources/cl-common.cfg b/resources/cl-common.cfg index cea3c5b..c5cf4f6 100644 --- a/resources/cl-common.cfg +++ b/resources/cl-common.cfg @@ -14,6 +14,7 @@ Opaque long cl_event Opaque long cl_sampler Opaque long cl_platform_id Opaque long cl_device_id +Opaque long cl_GLsync ArgumentIsString clCreateProgramWithSource 2 ArgumentIsString clBuildProgram 3 @@ -101,4 +102,11 @@ ClassJavadoc CLImageFormatImpl */ # Pick up on-line OpenCL doc and link it with the javadoc -TagNativeBinding true
\ No newline at end of file +TagNativeBinding true + +# platform dependent extensions +Ignore .*APPLE.* + +# TODO implement custom callbacks if this makes sense +Ignore clSetEventCallback +Ignore clSetMemObjectDestructorCallback diff --git a/resources/createTagletProps.sh b/resources/createTagletProps.sh index c89a2a0..af3312e 100644 --- a/resources/createTagletProps.sh +++ b/resources/createTagletProps.sh @@ -1,5 +1,5 @@ #download index -root=http://www.khronos.org/opencl/sdk/1.0/docs/man/xhtml/ +root=http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ toc=Opencl_tofc.html wget ${root}/${toc}; #find links to cl* function doc diff --git a/resources/includes/CL_orig/cl.h b/resources/includes/CL_orig/cl.h index 3f38116..acd18cd 100644 --- a/resources/includes/CL_orig/cl.h +++ b/resources/includes/CL_orig/cl.h @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008-2009 The Khronos Group Inc. + * Copyright (c) 2008-2010 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the @@ -21,7 +21,7 @@ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. ******************************************************************************/ -/* $Revision: 10424 $ on $Date: 2010-02-17 14:34:49 -0800 (Wed, 17 Feb 2010) $ */ +/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ #ifndef __OPENCL_CL_H #define __OPENCL_CL_H @@ -53,7 +53,6 @@ typedef cl_ulong cl_bitfield; typedef cl_bitfield cl_device_type; typedef cl_uint cl_platform_info; typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_address_info; typedef cl_bitfield cl_device_fp_config; typedef cl_uint cl_device_mem_cache_type; typedef cl_uint cl_device_local_mem_type; @@ -69,6 +68,7 @@ typedef cl_bitfield cl_mem_flags; typedef cl_uint cl_mem_object_type; typedef cl_uint cl_mem_info; typedef cl_uint cl_image_info; +typedef cl_uint cl_buffer_create_type; typedef cl_uint cl_addressing_mode; typedef cl_uint cl_filter_mode; typedef cl_uint cl_sampler_info; @@ -88,6 +88,10 @@ typedef struct _cl_image_format { } cl_image_format; +typedef struct _cl_buffer_region { + size_t origin; + size_t size; +} cl_buffer_region; /******************************************************************************/ @@ -105,6 +109,8 @@ typedef struct _cl_image_format { #define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 #define CL_BUILD_PROGRAM_FAILURE -11 #define CL_MAP_FAILURE -12 +#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 +#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 #define CL_INVALID_VALUE -30 #define CL_INVALID_DEVICE_TYPE -31 @@ -143,6 +149,7 @@ typedef struct _cl_image_format { /* OpenCL Version */ #define CL_VERSION_1_0 1 +#define CL_VERSION_1_1 1 /* cl_bool */ #define CL_FALSE 0 @@ -215,6 +222,16 @@ typedef struct _cl_image_format { #define CL_DEVICE_PLATFORM 0x1031 /* 0x1032 reserved for CL_DEVICE_DOUBLE_FP_CONFIG */ /* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C +#define CL_DEVICE_OPENCL_C_VERSION 0x103D /* cl_device_fp_config - bitfield */ #define CL_FP_DENORM (1 << 0) @@ -223,6 +240,7 @@ typedef struct _cl_image_format { #define CL_FP_ROUND_TO_ZERO (1 << 3) #define CL_FP_ROUND_TO_INF (1 << 4) #define CL_FP_FMA (1 << 5) +#define CL_FP_SOFT_FLOAT (1 << 6) /* cl_device_mem_cache_type */ #define CL_NONE 0x0 @@ -245,6 +263,7 @@ typedef struct _cl_image_format { #define CL_CONTEXT_REFERENCE_COUNT 0x1080 #define CL_CONTEXT_DEVICES 0x1081 #define CL_CONTEXT_PROPERTIES 0x1082 +#define CL_CONTEXT_NUM_DEVICES 0x1083 /* cl_context_info + cl_context_properties */ #define CL_CONTEXT_PLATFORM 0x1084 @@ -274,6 +293,9 @@ typedef struct _cl_image_format { #define CL_ARGB 0x10B7 #define CL_INTENSITY 0x10B8 #define CL_LUMINANCE 0x10B9 +#define CL_Rx 0x10BA +#define CL_RGx 0x10BB +#define CL_RGBx 0x10BC /* cl_channel_type */ #define CL_SNORM_INT8 0x10D0 @@ -305,6 +327,8 @@ typedef struct _cl_image_format { #define CL_MEM_MAP_COUNT 0x1104 #define CL_MEM_REFERENCE_COUNT 0x1105 #define CL_MEM_CONTEXT 0x1106 +#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 +#define CL_MEM_OFFSET 0x1108 /* cl_image_info */ #define CL_IMAGE_FORMAT 0x1110 @@ -320,6 +344,7 @@ typedef struct _cl_image_format { #define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 #define CL_ADDRESS_CLAMP 0x1132 #define CL_ADDRESS_REPEAT 0x1133 +#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 /* cl_filter_mode */ #define CL_FILTER_NEAREST 0x1140 @@ -367,12 +392,15 @@ typedef struct _cl_image_format { #define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 #define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 #define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 +#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 +#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 /* cl_event_info */ #define CL_EVENT_COMMAND_QUEUE 0x11D0 #define CL_EVENT_COMMAND_TYPE 0x11D1 #define CL_EVENT_REFERENCE_COUNT 0x11D2 #define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 +#define CL_EVENT_CONTEXT 0x11D4 /* cl_command_type */ #define CL_COMMAND_NDRANGE_KERNEL 0x11F0 @@ -392,6 +420,10 @@ typedef struct _cl_image_format { #define CL_COMMAND_MARKER 0x11FE #define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF #define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 +#define CL_COMMAND_READ_BUFFER_RECT 0x1201 +#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 +#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 +#define CL_COMMAND_USER 0x1204 /* command execution status */ #define CL_COMPLETE 0x0 @@ -399,6 +431,9 @@ typedef struct _cl_image_format { #define CL_SUBMITTED 0x2 #define CL_QUEUED 0x3 +/* cl_buffer_create_type */ +#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 + /* cl_profiling_info */ #define CL_PROFILING_COMMAND_QUEUED 0x1280 #define CL_PROFILING_COMMAND_SUBMIT 0x1281 @@ -440,14 +475,14 @@ extern CL_API_ENTRY cl_context CL_API_CALL clCreateContext(const cl_context_properties * /* properties */, cl_uint /* num_devices */, const cl_device_id * /* devices */, - void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, + void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), void * /* user_data */, cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType(const cl_context_properties * /* properties */, cl_device_type /* device_type */, - void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, + void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), void * /* user_data */, cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; @@ -484,13 +519,26 @@ clGetCommandQueueInfo(cl_command_queue /* command_queue */, void * /* param_value */, size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#warning CL_USE_DEPRECATED_OPENCL_1_0_APIS is defined. These APIs are unsupported and untested in OpenCL 1.1! +/* + * WARNING: + * This API introduces mutable state into the OpenCL implementation. It has been REMOVED + * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the + * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably. + * It is likely to be non-performant. Use of this API is not advised. Use at your own risk. + * + * Software developers previously relying on this API are instructed to set the command queue + * properties when creating the queue, instead. + */ extern CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty(cl_command_queue /* command_queue */, cl_command_queue_properties /* properties */, cl_bool /* enable */, - cl_command_queue_properties * /* old_properties */) CL_API_SUFFIX__VERSION_1_0; + cl_command_queue_properties * /* old_properties */) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; +#endif /* CL_USE_DEPRECATED_OPENCL_1_0_APIS */ -/* Memory Object APIs */ +/* Memory Object APIs */ extern CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context /* context */, cl_mem_flags /* flags */, @@ -499,6 +547,13 @@ clCreateBuffer(cl_context /* context */, cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateSubBuffer(cl_mem /* buffer */, + cl_mem_flags /* flags */, + cl_buffer_create_type /* buffer_create_type */, + const void * /* buffer_create_info */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateImage2D(cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format * /* image_format */, @@ -548,6 +603,11 @@ clGetImageInfo(cl_mem /* image */, void * /* param_value */, size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL +clSetMemObjectDestructorCallback( cl_mem /* memobj */, + void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), + void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; + /* Sampler APIs */ extern CL_API_ENTRY cl_sampler CL_API_CALL clCreateSampler(cl_context /* context */, @@ -597,7 +657,7 @@ clBuildProgram(cl_program /* program */, cl_uint /* num_devices */, const cl_device_id * /* device_list */, const char * /* options */, - void (*pfn_notify)(cl_program /* program */, void * /* user_data */), + void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL @@ -669,12 +729,26 @@ clGetEventInfo(cl_event /* event */, void * /* param_value */, size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_event CL_API_CALL +clCreateUserEvent(cl_context /* context */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + extern CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL +clSetUserEventStatus(cl_event /* event */, + cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetEventCallback( cl_event /* event */, + cl_int /* command_exec_callback_type */, + void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), + void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; + /* Profiling APIs */ extern CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo(cl_event /* event */, @@ -703,6 +777,22 @@ clEnqueueReadBuffer(cl_command_queue /* command_queue */, cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueReadBufferRect(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_read */, + const size_t * /* buffer_offset */, + const size_t * /* host_offset */, + const size_t * /* region */, + size_t /* buffer_row_pitch */, + size_t /* buffer_slice_pitch */, + size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, + void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, @@ -714,6 +804,22 @@ clEnqueueWriteBuffer(cl_command_queue /* command_queue */, cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_read */, + const size_t * /* buffer_offset */, + const size_t * /* host_offset */, + const size_t * /* region */, + size_t /* buffer_row_pitch */, + size_t /* buffer_slice_pitch */, + size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, + const void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, @@ -725,6 +831,21 @@ clEnqueueCopyBuffer(cl_command_queue /* command_queue */, cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, + cl_mem /* src_buffer */, + cl_mem /* dst_buffer */, + const size_t * /* src_origin */, + const size_t * /* dst_origin */, + const size_t * /* region */, + size_t /* src_row_pitch */, + size_t /* src_slice_pitch */, + size_t /* dst_row_pitch */, + size_t /* dst_slice_pitch */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_read */, diff --git a/resources/includes/CL_orig/cl_ext.h b/resources/includes/CL_orig/cl_ext.h index 7f7c5e1..f5f7371 100644 --- a/resources/includes/CL_orig/cl_ext.h +++ b/resources/includes/CL_orig/cl_ext.h @@ -21,7 +21,7 @@ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. ******************************************************************************/ -/* $Revision: 11188 $ on $Date: 2010-04-27 14:59:20 -0700 (Tue, 27 Apr 2010) $ */ +/* $Revision: 11687 $ on $Date: 2010-06-11 15:17:22 -0700 (Fri, 11 Jun 2010) $ */ /* cl_ext.h contains OpenCL extensions which don't have external */ /* (OpenGL, D3D) dependencies. */ @@ -33,15 +33,72 @@ extern "C" { #endif +#ifdef __APPLE__ + #include <OpenCL/cl.h> + #include <AvailabilityMacros.h> +#else + #include <CL/cl.h> +#endif + /* cl_khr_fp64 extension - no extension #define since it has no functions */ #define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 - /* cl_khr_fp16 extension - no extension #define since it has no functions */ #define CL_DEVICE_HALF_FP_CONFIG 0x1033 +/* Memory object destruction + * + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * + * Registers a user callback function that will be called when the memory object is deleted and its resources + * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback + * stack associated with memobj. The registered user callback functions are called in the reverse order in + * which they were registered. The user callback functions are called and then the memory object is deleted + * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be + * notified when the memory referenced by host_ptr, specified when the memory object is created and used as + * the storage bits for the memory object, can be reused or freed. + * + * The application may not call CL api's with the cl_mem object passed to the pfn_notify. + * + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) + * before using. + */ +#define cl_APPLE_SetMemObjectDestructor 1 +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, + void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), + void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; -/* cl_khr_icd extension */ + +/* Context Logging Functions + * + * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). + * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) + * before using. + * + * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger + */ +#define cl_APPLE_ContextLoggingFunctions 1 +extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, + const void * /* private_info */, + size_t /* cb */, + void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; + +/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ +extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, + const void * /* private_info */, + size_t /* cb */, + void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; + +/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ +extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, + const void * /* private_info */, + size_t /* cb */, + void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; + + +/************************ +* cl_khr_icd extension * +************************/ #define cl_khr_icd 1 /* cl_platform_info */ @@ -56,13 +113,98 @@ clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, cl_uint * /* num_platforms */); typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms); - -/* cl_amd_device_attribute_query - no extension #define since it has no functions */ + cl_uint /* num_entries */, + cl_platform_id * /* platforms */, + cl_uint * /* num_platforms */); + + +/****************************************** +* cl_nv_device_attribute_query extension * +******************************************/ +/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 + + +/********************************* +* cl_amd_device_attribute_query * +*********************************/ #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 + +#ifdef CL_VERSION_1_1 + /*********************************** + * cl_ext_device_fission extension * + ***********************************/ + #define cl_ext_device_fission 1 + + extern CL_API_ENTRY cl_int CL_API_CALL + clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + typedef CL_API_ENTRY cl_int + (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + extern CL_API_ENTRY cl_int CL_API_CALL + clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + typedef CL_API_ENTRY cl_int + (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + typedef cl_ulong cl_device_partition_property_ext; + extern CL_API_ENTRY cl_int CL_API_CALL + clCreateSubDevicesEXT( cl_device_id /*in_device*/, + const cl_device_partition_property_ext * /* properties */, + cl_uint /*num_entries*/, + cl_device_id * /*out_devices*/, + cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + extern CL_API_ENTRY cl_int + ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, + const cl_device_partition_property_ext * /* properties */, + cl_uint /*num_entries*/, + cl_device_id * /*out_devices*/, + cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + + /* cl_device_partition_property_ext */ + #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 + #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 + #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 + #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 + + /* clDeviceGetInfo selectors */ + #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 + #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 + #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 + #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 + #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 + + /* error codes */ + #define CL_DEVICE_PARTITION_FAILED_EXT -1057 + #define CL_INVALID_PARTITION_COUNT_EXT -1058 + #define CL_INVALID_PARTITION_NAME_EXT -1059 + + /* CL_AFFINITY_DOMAINs */ + #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 + #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 + #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 + #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 + #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 + #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 + + /* cl_device_partition_property_ext list terminators */ + #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) + #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) + #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) + + + +#endif /* CL_VERSION_1_1 */ + #ifdef __cplusplus } #endif diff --git a/resources/includes/CL_orig/cl_gl.h b/resources/includes/CL_orig/cl_gl.h index f7da00f..3b4fe06 100644 --- a/resources/includes/CL_orig/cl_gl.h +++ b/resources/includes/CL_orig/cl_gl.h @@ -1,5 +1,5 @@ /********************************************************************************** - * Copyright (c) 2008-2009 The Khronos Group Inc. + * Copyright (c) 2008-2010 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the @@ -21,7 +21,7 @@ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. **********************************************************************************/ -/* $Revision: 11041 $ on $Date: 2010-04-14 10:50:06 -0700 (Wed, 14 Apr 2010) $ */ +/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ /* * cl_gl.h contains Khronos-approved (KHR) OpenCL extensions which have @@ -34,9 +34,10 @@ #ifdef __APPLE__ #include <OpenCL/cl.h> +#include <OpenGL/CGLDevice.h> #else #include <CL/cl.h> -#endif +#endif #ifdef __cplusplus extern "C" { @@ -45,6 +46,7 @@ extern "C" { typedef cl_uint cl_gl_object_type; typedef cl_uint cl_gl_texture_info; typedef cl_uint cl_gl_platform_info; +typedef struct __GLsync *cl_GLsync; /* cl_gl_object_type */ #define CL_GL_OBJECT_BUFFER 0x2000 @@ -88,7 +90,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clGetGLObjectInfo(cl_mem /* memobj */, cl_gl_object_type * /* gl_object_type */, cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - + extern CL_API_ENTRY cl_int CL_API_CALL clGetGLTextureInfo(cl_mem /* memobj */, cl_gl_texture_info /* param_name */, diff --git a/resources/includes/CL_orig/cl_gl_ext.h b/resources/includes/CL_orig/cl_gl_ext.h index 9076205..26e4782 100644 --- a/resources/includes/CL_orig/cl_gl_ext.h +++ b/resources/includes/CL_orig/cl_gl_ext.h @@ -1,5 +1,5 @@ /********************************************************************************** - * Copyright (c) 2008-2009 The Khronos Group Inc. + * Copyright (c) 2008-2010 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the @@ -21,7 +21,7 @@ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. **********************************************************************************/ -/* $Revision: 10424 $ on $Date: 2010-02-17 14:34:49 -0800 (Wed, 17 Feb 2010) $ */ +/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ /* cl_gl_ext.h contains vendor (non-KHR) OpenCL extensions which have */ /* OpenGL dependencies. */ @@ -33,6 +33,12 @@ extern "C" { #endif +#ifdef __APPLE__ + #include <OpenCL/cl_gl.h> +#else + #include <CL/cl_gl.h> +#endif + /* * For each extension, follow this template * /* cl_VEN_extname extension */ @@ -44,7 +50,18 @@ extern "C" { * If you need GLtypes here, mirror them with a cl_GLtype, rather than including a GL header * This allows us to avoid having to decide whether to include GL headers or GLES here. */ - + +/* + * cl_khr_gl_event extension + * See section 9.9 in the OpenCL 1.1 spec for more information + */ +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D + +extern CL_API_ENTRY cl_event CL_API_CALL +clCreateEventFromGLsyncKHR(cl_context /* context */, + cl_GLsync /* cl_GLsync */, + cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; + #ifdef __cplusplus } #endif diff --git a/resources/includes/CL_orig/cl_platform.h b/resources/includes/CL_orig/cl_platform.h index 6d65738..b102ca5 100644 --- a/resources/includes/CL_orig/cl_platform.h +++ b/resources/includes/CL_orig/cl_platform.h @@ -1,5 +1,5 @@ /********************************************************************************** - * Copyright (c) 2008-2009 The Khronos Group Inc. + * Copyright (c) 2008-2010 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the @@ -21,7 +21,7 @@ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. **********************************************************************************/ -/* $Revision: 10424 $ on $Date: 2010-02-17 14:34:49 -0800 (Wed, 17 Feb 2010) $ */ +/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ #ifndef __CL_PLATFORM_H #define __CL_PLATFORM_H @@ -36,21 +36,29 @@ extern "C" { #endif #if defined(_WIN32) -#define CL_API_ENTRY -#define CL_API_CALL __stdcall + #define CL_API_ENTRY + #define CL_API_CALL __stdcall + #define CL_CALLBACK __stdcall #else -#define CL_API_ENTRY -#define CL_API_CALL + #define CL_API_ENTRY + #define CL_API_CALL + #define CL_CALLBACK #endif #ifdef __APPLE__ -#define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER -#define CL_API_SUFFIX__VERSION_1_1 -#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) + #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) + #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER + #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER + #define CL_API_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK + #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK + #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER #else -#define CL_API_SUFFIX__VERSION_1_0 -#define CL_API_SUFFIX__VERSION_1_1 -#define CL_EXTENSION_WEAK_LINK + #define CL_EXTENSION_WEAK_LINK + #define CL_API_SUFFIX__VERSION_1_0 + #define CL_EXT_SUFFIX__VERSION_1_0 + #define CL_API_SUFFIX__VERSION_1_1 + #define CL_EXT_SUFFIX__VERSION_1_1 + #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED #endif #if (defined (_WIN32) && defined(_MSC_VER)) @@ -108,6 +116,34 @@ typedef double cl_double; #define CL_DBL_MIN 2.225073858507201383090e-308 #define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_M_E 2.718281828459045090796 +#define CL_M_LOG2E 1.442695040888963387005 +#define CL_M_LOG10E 0.434294481903251816668 +#define CL_M_LN2 0.693147180559945286227 +#define CL_M_LN10 2.302585092994045901094 +#define CL_M_PI 3.141592653589793115998 +#define CL_M_PI_2 1.570796326794896557999 +#define CL_M_PI_4 0.785398163397448278999 +#define CL_M_1_PI 0.318309886183790691216 +#define CL_M_2_PI 0.636619772367581382433 +#define CL_M_2_SQRTPI 1.128379167095512558561 +#define CL_M_SQRT2 1.414213562373095145475 +#define CL_M_SQRT1_2 0.707106781186547572737 + +#define CL_M_E_F 2.71828174591064f +#define CL_M_LOG2E_F 1.44269502162933f +#define CL_M_LOG10E_F 0.43429449200630f +#define CL_M_LN2_F 0.69314718246460f +#define CL_M_LN10_F 2.30258512496948f +#define CL_M_PI_F 3.14159274101257f +#define CL_M_PI_2_F 1.57079637050629f +#define CL_M_PI_4_F 0.78539818525314f +#define CL_M_1_PI_F 0.31830987334251f +#define CL_M_2_PI_F 0.63661974668503f +#define CL_M_2_SQRTPI_F 1.12837922573090f +#define CL_M_SQRT2_F 1.41421353816986f +#define CL_M_SQRT1_2_F 0.70710676908493f + #define CL_NAN (CL_INFINITY - CL_INFINITY) #define CL_HUGE_VALF ((cl_float) 1e50) #define CL_HUGE_VAL ((cl_double) 1e500) @@ -171,6 +207,34 @@ typedef double cl_double __attribute__((aligned(8))); #define CL_DBL_MIN 0x1.0p-1022 #define CL_DBL_EPSILON 0x1.0p-52 +#define CL_M_E 2.718281828459045090796 +#define CL_M_LOG2E 1.442695040888963387005 +#define CL_M_LOG10E 0.434294481903251816668 +#define CL_M_LN2 0.693147180559945286227 +#define CL_M_LN10 2.302585092994045901094 +#define CL_M_PI 3.141592653589793115998 +#define CL_M_PI_2 1.570796326794896557999 +#define CL_M_PI_4 0.785398163397448278999 +#define CL_M_1_PI 0.318309886183790691216 +#define CL_M_2_PI 0.636619772367581382433 +#define CL_M_2_SQRTPI 1.128379167095512558561 +#define CL_M_SQRT2 1.414213562373095145475 +#define CL_M_SQRT1_2 0.707106781186547572737 + +#define CL_M_E_F 2.71828174591064f +#define CL_M_LOG2E_F 1.44269502162933f +#define CL_M_LOG10E_F 0.43429449200630f +#define CL_M_LN2_F 0.69314718246460f +#define CL_M_LN10_F 2.30258512496948f +#define CL_M_PI_F 3.14159274101257f +#define CL_M_PI_2_F 1.57079637050629f +#define CL_M_PI_4_F 0.78539818525314f +#define CL_M_1_PI_F 0.31830987334251f +#define CL_M_2_PI_F 0.63661974668503f +#define CL_M_2_SQRTPI_F 1.12837922573090f +#define CL_M_SQRT2_F 1.41421353816986f +#define CL_M_SQRT1_2_F 0.70710676908493f + #if defined( __GNUC__ ) #define CL_HUGE_VALF __builtin_huge_valf() #define CL_HUGE_VAL __builtin_huge_val() @@ -385,6 +449,9 @@ typedef union #endif }cl_char4; +/* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ +typedef cl_char4 cl_char3; + typedef union { cl_char CL_ALIGNED(8) s[8]; @@ -457,6 +524,9 @@ typedef union #endif }cl_uchar4; +/* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ +typedef cl_uchar4 cl_uchar3; + typedef union { cl_uchar CL_ALIGNED(8) s[8]; @@ -529,6 +599,9 @@ typedef union #endif }cl_short4; +/* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ +typedef cl_short4 cl_short3; + typedef union { cl_short CL_ALIGNED(16) s[8]; @@ -601,6 +674,9 @@ typedef union #endif }cl_ushort4; +/* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ +typedef cl_ushort4 cl_ushort3; + typedef union { cl_ushort CL_ALIGNED(16) s[8]; @@ -672,6 +748,9 @@ typedef union #endif }cl_int4; +/* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ +typedef cl_int4 cl_int3; + typedef union { cl_int CL_ALIGNED(32) s[8]; @@ -744,6 +823,9 @@ typedef union #endif }cl_uint4; +/* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ +typedef cl_uint4 cl_uint3; + typedef union { cl_uint CL_ALIGNED(32) s[8]; @@ -815,6 +897,9 @@ typedef union #endif }cl_long4; +/* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ +typedef cl_long4 cl_long3; + typedef union { cl_long CL_ALIGNED(64) s[8]; @@ -887,6 +972,9 @@ typedef union #endif }cl_ulong4; +/* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ +typedef cl_ulong4 cl_ulong3; + typedef union { cl_ulong CL_ALIGNED(64) s[8]; @@ -960,6 +1048,9 @@ typedef union #endif }cl_float4; +/* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ +typedef cl_float4 cl_float3; + typedef union { cl_float CL_ALIGNED(32) s[8]; @@ -1032,6 +1123,9 @@ typedef union #endif }cl_double4; +/* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ +typedef cl_double4 cl_double3; + typedef union { cl_double CL_ALIGNED(64) s[8]; diff --git a/resources/native-taglet.properties b/resources/native-taglet.properties index a1510ad..8447778 100644 --- a/resources/native-taglet.properties +++ b/resources/native-taglet.properties @@ -1,12 +1,16 @@ #Generated, do not edit, edit createTagletProps.sh instead. #This file is used in NativeTaglet and maps the generated method names #to the function specific OpenCL documentation man pages. -nativetaglet.baseUrl=http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/ +nativetaglet.baseUrl=http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ clBuildProgram=clBuildProgram.html clCreateBuffer=clCreateBuffer.html clCreateCommandQueue=clCreateCommandQueue.html clCreateContext=clCreateContext.html clCreateContextFromType=clCreateContextFromType.html +clCreateEventFromGLsyncKHR=clCreateEventFromGLsyncKHR.html +clCreateFromD3D10BufferKHR=clCreateFromD3D10BufferKHR.html +clCreateFromD3D10Texture2DKHR=clCreateFromD3D10Texture2DKHR.html +clCreateFromD3D10Texture3DKHR=clCreateFromD3D10Texture3DKHR.html clCreateFromGLBuffer=clCreateFromGLBuffer.html clCreateFromGLRenderbuffer=clCreateFromGLRenderbuffer.html clCreateFromGLTexture2D=clCreateFromGLTexture2D.html @@ -18,8 +22,12 @@ clCreateKernelsInProgram=clCreateKernelsInProgram.html clCreateProgramWithBinary=clCreateProgramWithBinary.html clCreateProgramWithSource=clCreateProgramWithSource.html clCreateSampler=clCreateSampler.html +clCreateSubBuffer=clCreateSubBuffer.html +clCreateUserEvent=clCreateUserEvent.html +clEnqueueAcquireD3D10ObjectsKHR=clEnqueueAcquireD3D10ObjectsKHR.html clEnqueueAcquireGLObjects=clEnqueueAcquireGLObjects.html clEnqueueBarrier=clEnqueueBarrier.html +clEnqueueCopyBufferRect=clEnqueueCopyBufferRect.html clEnqueueCopyBufferToImage=clEnqueueCopyBufferToImage.html clEnqueueCopyImage=clEnqueueCopyImage.html clEnqueueCopyImageToBuffer=clEnqueueCopyImageToBuffer.html @@ -29,22 +37,27 @@ clEnqueueMarker=clEnqueueMarker.html clEnqueueNativeKernel=clEnqueueNativeKernel.html clEnqueueNDRangeKernel=clEnqueueNDRangeKernel.html clEnqueueReadBuffer=clEnqueueReadBuffer.html +clEnqueueReadBufferRect=clEnqueueReadBufferRect.html clEnqueueReadImage=clEnqueueReadImage.html +clEnqueueReleaseD3D10ObjectsKHR=clEnqueueReleaseD3D10ObjectsKHR.html clEnqueueReleaseGLObjects=clEnqueueReleaseGLObjects.html clEnqueueTask=clEnqueueTask.html clEnqueueUnmapMemObject=clEnqueueUnmapMemObject.html clEnqueueWaitForEvents=clEnqueueWaitForEvents.html clEnqueueWriteBuffer=clEnqueueWriteBuffer.html +clEnqueueWriteBufferRect=clEnqueueWriteBufferRect.html clEnqueueWriteImage=clEnqueueWriteImage.html clFinish=clFinish.html clFlush=clFlush.html clGetCommandQueueInfo=clGetCommandQueueInfo.html clGetContextInfo=clGetContextInfo.html clGetDeviceIDs=clGetDeviceIDs.html +clGetDeviceIDsFromD3D10KHR=clGetDeviceIDsFromD3D10KHR.html clGetDeviceInfo=clGetDeviceInfo.html clGetEventInfo=clGetEventInfo.html clGetEventProfilingInfo=clGetEventProfilingInfo.html clGetExtensionFunctionAddress=clGetExtensionFunctionAddress.html +clGetGLContextInfoKHR=clGetGLContextInfoKHR.html clGetGLObjectInfo=clGetGLObjectInfo.html clGetGLTextureInfo=clGetGLTextureInfo.html clGetImageInfo=clGetImageInfo.html @@ -72,6 +85,9 @@ clRetainMemObject=clRetainMemObject.html clRetainProgram=clRetainProgram.html clRetainSampler=clRetainSampler.html clSetCommandQueueProperty=clSetCommandQueueProperty.html +clSetEventCallback=clSetEventCallback.html clSetKernelArg=clSetKernelArg.html +clSetMemObjectDestructorCallback=clSetMemObjectDestructorCallback.html +clSetUserEventStatus=clSetUserEventStatus.html clUnloadCompiler=clUnloadCompiler.html clWaitForEvents=clWaitForEvents.html diff --git a/resources/opencl.h b/resources/opencl.h index d0dab53..949b6dd 100644 --- a/resources/opencl.h +++ b/resources/opencl.h @@ -8,7 +8,7 @@ #include <CL/cl_platform.h> #include <CL/cl.h> #include <CL/cl_ext.h> -#include <CL/cl_vendor_ext.h> +//#include <CL/cl_vendor_ext.h> //#include <GL/gl.h> #include <gltypes.h> diff --git a/src/com/jogamp/opencl/CLCommandQueue.java b/src/com/jogamp/opencl/CLCommandQueue.java index def422e..f728e72 100644 --- a/src/com/jogamp/opencl/CLCommandQueue.java +++ b/src/com/jogamp/opencl/CLCommandQueue.java @@ -1483,22 +1483,6 @@ public class CLCommandQueue extends CLObject implements CLResource { return Mode.valuesOf(properties); } - /** - * Setting properties after a command queue has been created can be implementation specific, - * please refer to the specification ({@native clSetCommandQueueProperty}) or vendor documentation. - */ - public void setProperty(Mode property, boolean enabled) { - int ret = cl.clSetCommandQueueProperty(ID, property.QUEUE_MODE, clBoolean(enabled), null); - if(ret != CL_SUCCESS) { - checkForError(ret, "can not set command queue property: " + property); - } - if(enabled) { - properties |= property.QUEUE_MODE; - }else{ - properties &= ~property.QUEUE_MODE; - } - } - @Override public String toString() { return getClass().getSimpleName() +" "+getProperties()+" on "+ getDevice(); |