opencl_ruby_ffi 0.95 → 0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/opencl_ruby_ffi.rb +2 -0
- data/lib/opencl_ruby_ffi/Buffer.rb +1 -1
- data/lib/opencl_ruby_ffi/CommandQueue.rb +138 -5
- data/lib/opencl_ruby_ffi/Context.rb +24 -5
- data/lib/opencl_ruby_ffi/Device.rb +17 -2
- data/lib/opencl_ruby_ffi/Image.rb +6 -6
- data/lib/opencl_ruby_ffi/Kernel.rb +41 -5
- data/lib/opencl_ruby_ffi/Mem.rb +5 -0
- data/lib/opencl_ruby_ffi/Pipe.rb +38 -0
- data/lib/opencl_ruby_ffi/Program.rb +15 -3
- data/lib/opencl_ruby_ffi/SVM.rb +184 -0
- data/lib/opencl_ruby_ffi/Sampler.rb +49 -5
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base.rb +3 -2
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base_gen.rb +232 -60
- data/opencl_ruby_ffi.gemspec +3 -3
- metadata +5 -3
@@ -212,9 +212,9 @@ module OpenCL
|
|
212
212
|
c_strs[i].write_pointer(p)
|
213
213
|
c_strs_length[i].write_size_t(p.size)
|
214
214
|
}
|
215
|
-
|
216
|
-
program_ptr = OpenCL.clCreateProgramWithSource(context, c_strs_p.size, c_strs, c_strs_length,
|
217
|
-
OpenCL.error_check(
|
215
|
+
error = FFI::MemoryPointer::new( :cl_int )
|
216
|
+
program_ptr = OpenCL.clCreateProgramWithSource(context, c_strs_p.size, c_strs, c_strs_length, error)
|
217
|
+
OpenCL.error_check(error.read_cl_int)
|
218
218
|
return OpenCL::Program::new( program_ptr, false )
|
219
219
|
end
|
220
220
|
|
@@ -260,6 +260,18 @@ module OpenCL
|
|
260
260
|
# Returns the concatenated Program sources
|
261
261
|
eval OpenCL.get_info("Program", :string, "SOURCE")
|
262
262
|
|
263
|
+
# Returns the total amount in byte used by the Program variables in the global address space for the Device(s) specified. Returns an Array of tuple [ Device, size ] (2.0 only)
|
264
|
+
def build_global_variable_total_size(devs = nil)
|
265
|
+
devs = self.devices if not devs
|
266
|
+
devs = [devs].flatten
|
267
|
+
ptr = FFI::MemoryPointer::new( :size_t )
|
268
|
+
return devs.collect { |dev|
|
269
|
+
error = OpenCL.clGetProgramBuildInfo(self, dev, OpenCL::Program::BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, ptr.size, ptr, nil)
|
270
|
+
OpenCL.error_check(error)
|
271
|
+
[dev, ptr.read_size_t]
|
272
|
+
}
|
273
|
+
end
|
274
|
+
|
263
275
|
# Returns the BuildStatus of the Program for each device associated to the Program or the Device(s) specified. Returns an Array of tuple [ Device, BuildStatus ]
|
264
276
|
def build_status(devs = nil)
|
265
277
|
devs = self.devices if not devs
|
@@ -0,0 +1,184 @@
|
|
1
|
+
module OpenCL
|
2
|
+
|
3
|
+
# maps the SVM pointer type
|
4
|
+
class SVMPointer < FFI::Pointer
|
5
|
+
|
6
|
+
def initialize( address, context )
|
7
|
+
super( address )
|
8
|
+
@context = context
|
9
|
+
end
|
10
|
+
|
11
|
+
def +( offset )
|
12
|
+
return OpenCL::SVMPointer::new( self.address + offset, @context )
|
13
|
+
end
|
14
|
+
|
15
|
+
def free
|
16
|
+
return OpenCL::svm_free( @context, self )
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.svm_alloc(context, size, options = {})
|
22
|
+
OpenCL.error_check(OpenCL::INVALID_OPERATION) if context.platform.version_number < 2.0
|
23
|
+
flags = OpenCL::get_flags(options)
|
24
|
+
alignment = 0
|
25
|
+
alignment = options[:alignment] if options[:alignment]
|
26
|
+
ptr = OpenCL.clSVMAlloc( context, flags, size, alignment )
|
27
|
+
raise OpenCL::Error::new(OpenCL::Error.getErrorString(OpenCL::Error::MEM_OBJECT_ALLOCATION_FAILURE)) if ptr.null?
|
28
|
+
return OpenCL::SVMPointer::new( ptr, context )
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.svm_free(context, svm_pointer)
|
32
|
+
OpenCL.error_check(OpenCL::INVALID_OPERATION) if context.platform.version_number < 2.0
|
33
|
+
return OpenCL.clSVMFree( context, svm_pointer )
|
34
|
+
end
|
35
|
+
|
36
|
+
# Set the index th argument of Kernel to value. Value must be within a SVM memory area
|
37
|
+
def self.set_kernel_arg_svm_pointer( kernel, index, value )
|
38
|
+
OpenCL.error_check(OpenCL::INVALID_OPERATION) if kernel.context.platform.version_number < 2.0
|
39
|
+
error = OpenCL.clSetKernelArgSVMPointer( kernel, index, val )
|
40
|
+
OpenCL.error_check(error)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Enqueues a command that frees SVMPointers (or Pointers using a callback)
|
44
|
+
#
|
45
|
+
# ==== Attributes
|
46
|
+
#
|
47
|
+
# * +command_queue+ - CommandQueue used to execute the write command
|
48
|
+
# * +svm_pointer+ - a single or an Array of SVMPointer (or Pointer)
|
49
|
+
# * +options+ - a hash containing named options
|
50
|
+
# * +block+ - if provided, a callback invoked to free the pointers. Signature of the callback is { |CommandQueue, num_pointers, FFI::Pointer to an array of num_pointers Pointers, FFI::Pointer to user_data| ... }
|
51
|
+
#
|
52
|
+
# ==== Options
|
53
|
+
#
|
54
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
55
|
+
# * +:user_data+ - if provided, a Pointer (or convertible to using to_ptr) that will be passed to the callback
|
56
|
+
#
|
57
|
+
# ==== Returns
|
58
|
+
#
|
59
|
+
# the Event associated with the command
|
60
|
+
def self.enqueue_svm_free(command_queue, svm_pointers, options = {}, &block)
|
61
|
+
pointers = [svm_pointers].flatten
|
62
|
+
num_pointers = pointers.length
|
63
|
+
ptr = FFI::MemoryPointer::new( :pointer, num_pointers)
|
64
|
+
pointers.each_with_index { |p, indx|
|
65
|
+
ptr[indx].write_pointer(p)
|
66
|
+
}
|
67
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
68
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
69
|
+
error = OpenCL.clEnqueueSVMFree(command_queue, num_pointers, ptr, block, options[:user_data], num_events, events, event)
|
70
|
+
OpenCL.error_check(error)
|
71
|
+
return OpenCL::Event::new(event.read_pointer, false)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Enqueues a command to copy from or to an SVMPointer
|
75
|
+
#
|
76
|
+
# ==== Attributes
|
77
|
+
#
|
78
|
+
# * +command_queue+ - CommandQueue used to execute the write command
|
79
|
+
# * +dst_ptr+ - the Pointer (or convertible to Pointer using to_ptr) or SVMPointer to be written to
|
80
|
+
# * +src_ptr+ - the Pointer (or convertible to Pointer using to_ptr) or SVMPointer to be read from
|
81
|
+
# * +size+ - the size of data to copy
|
82
|
+
# * +options+ - a hash containing named options
|
83
|
+
#
|
84
|
+
# ==== Options
|
85
|
+
#
|
86
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
87
|
+
# * +:blocking_copy+ - if provided indicates if the command blocks until the copy finishes
|
88
|
+
# * +:blocking+ - if provided indicates if the command blocks until the copy finishes
|
89
|
+
#
|
90
|
+
# ==== Returns
|
91
|
+
#
|
92
|
+
# the Event associated with the command
|
93
|
+
def self.enqueue_svm_memcpy(command_queue, dst_ptr, src_ptr, size, options = {})
|
94
|
+
OpenCL.error_check(OpenCL::INVALID_OPERATION) if command_queue.context.platform.version_number < 2.0
|
95
|
+
blocking = OpenCL::FALSE
|
96
|
+
blocking = OpenCL::TRUE if options[:blocking] or options[:blocking_copy]
|
97
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
98
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
99
|
+
error = OpenCL.clEnqueueSVMMemcpy(command_queue, blocking, dst_ptr, src_ptr, size, num_events, events, event)
|
100
|
+
OpenCL.error_check(error)
|
101
|
+
return OpenCL::Event::new(event.read_pointer, false)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Enqueues a command to fill a an SVM memory area
|
105
|
+
#
|
106
|
+
# ==== Attributes
|
107
|
+
#
|
108
|
+
# * +command_queue+ - CommandQueue used to execute the write command
|
109
|
+
# * +svm_ptr+ - the SVMPointer to the area to fill
|
110
|
+
# * +pattern+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the pattern is stored
|
111
|
+
# * +size+ - the size of the area to fill
|
112
|
+
#
|
113
|
+
# ==== Options
|
114
|
+
#
|
115
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
116
|
+
# * +:pattern_size+ - if provided indicates the size of the pattern, else the maximum pattern data is used
|
117
|
+
#
|
118
|
+
# ==== Returns
|
119
|
+
#
|
120
|
+
# the Event associated with the command
|
121
|
+
def self.enqueue_svm_fill(command_queue, svm_ptr, pattern, size, options = {})
|
122
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
123
|
+
pattern_size = pattern.size
|
124
|
+
pattern_size = options[:pattern_size] if options[:pattern_size]
|
125
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
126
|
+
error = OpenCL.clEnqueueSVMFill(command_queue, svm_ptr, pattern, pattern_size, size, num_events, events, event)
|
127
|
+
OpenCL.error_check(error)
|
128
|
+
return OpenCL::Event::new(event.read_pointer, false)
|
129
|
+
end
|
130
|
+
|
131
|
+
# Enqueues a command to map an Image into host memory
|
132
|
+
#
|
133
|
+
# ==== Attributes
|
134
|
+
#
|
135
|
+
# * +command_queue+ - CommandQueue used to execute the map command
|
136
|
+
# * +svm_ptr+ - the SVMPointer to the area to map
|
137
|
+
# * +size+ - the size of the region to map
|
138
|
+
# * +map_flags+ - a single or an Array of :cl_map_flags flags
|
139
|
+
# * +options+ - a hash containing named options
|
140
|
+
#
|
141
|
+
# ==== Options
|
142
|
+
#
|
143
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
144
|
+
# * +:blocking_map+ - if provided indicates if the command blocks until the region is mapped
|
145
|
+
# * +:blocking+ - if provided indicates if the command blocks until the region is mapped
|
146
|
+
#
|
147
|
+
# ==== Returns
|
148
|
+
#
|
149
|
+
# the Event associated with the command
|
150
|
+
def self.enqueue_svm_map( command_queue, svm_ptr, size, map_flags, options = {} )
|
151
|
+
blocking = OpenCL::FALSE
|
152
|
+
blocking = OpenCL::TRUE if options[:blocking] or options[:blocking_map]
|
153
|
+
flags = OpenCL.get_flags( {:flags => map_flags} )
|
154
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
155
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
156
|
+
error = OpenCL.clEnqueueSVMMap( command_queue, blocking, flags, svm_ptr, size, num_events, events, event )
|
157
|
+
OpenCL.error_check( error.read_cl_int )
|
158
|
+
return OpenCL::Event::new( event.read_ptr, false )
|
159
|
+
end
|
160
|
+
|
161
|
+
# Enqueues a command to unmap a previously mapped SVM memory area
|
162
|
+
#
|
163
|
+
# ==== Attributes
|
164
|
+
#
|
165
|
+
# * +command_queue+ - CommandQueue used to execute the unmap command
|
166
|
+
# * +svm_ptr+ - the SVMPointer of the area to be unmapped
|
167
|
+
# * +options+ - a hash containing named options
|
168
|
+
#
|
169
|
+
# ==== Options
|
170
|
+
#
|
171
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
172
|
+
#
|
173
|
+
# ==== Returns
|
174
|
+
#
|
175
|
+
# the Event associated with the command
|
176
|
+
def self.enqueue_svm_unmap( command_queue, svm_ptr, options = {} )
|
177
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
178
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
179
|
+
error = OpenCL.clEnqueueSVMUnmap( command_queue, svm_ptr, num_events, events, event )
|
180
|
+
OpenCL.error_check( error )
|
181
|
+
return OpenCL::Event::new( event.read_ptr, false )
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
@@ -5,12 +5,56 @@ module OpenCL
|
|
5
5
|
# ==== Attributes
|
6
6
|
#
|
7
7
|
# * +context+ - Context the created Sampler will be associated to
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
8
|
+
#
|
9
|
+
# ==== Options
|
10
|
+
#
|
11
|
+
# * +:normalized_coords+ - a :cl_bool specifying if the image coordinates are normalized
|
12
|
+
# * +:addressing_mode+ - a :cl_addressing_mode specifying how out-of-range image coordinates are handled when reading from an image
|
13
|
+
# * +:filter_mode+ - a :cl_filter_mode specifying the type of filter that must be applied when reading an image
|
14
|
+
# * +:mip_filter_mode+ - the filtering mode to use if using mimaps (default CL_FILTER_NONE, requires cl_khr_mipmap_image)
|
15
|
+
# * +:lod_min+ - floating point value representing the minimal LOD (default 0.0f, requires cl_khr_mipmap_image)
|
16
|
+
# * +:lod_max+ - floating point value representing the maximal LOD (default MAXFLOAT, requires cl_khr_mipmap_image)
|
17
|
+
def self.create_sampler( context, options = {} )
|
18
|
+
normalized_coords = OpenCL::TRUE
|
19
|
+
normalized_coords = options[:normalized_coords] if options[:normalized_coords]
|
20
|
+
addressing_mode = OpenCL::AddressingMode::CLAMP
|
21
|
+
addressing_mode = options[:addressing_mode] if options[:addressing_mode]
|
22
|
+
filter_mode = OpenCL::FilterMode::NEAREST
|
23
|
+
filter_mode = options[:filter_mode] if options[:filter_mode]
|
12
24
|
error = FFI::MemoryPointer::new( :cl_int )
|
13
|
-
|
25
|
+
if context.platform.version_number < 2.0 then
|
26
|
+
sampler_ptr = OpenCL.clCreateSampler( context, normalized_coords, addressing_mode, filter_mode, error )
|
27
|
+
else
|
28
|
+
prop_size = 7
|
29
|
+
prop_size += 2 if options[:mip_filter_mode]
|
30
|
+
prop_size += 2 if options[:lod_min]
|
31
|
+
prop_size += 2 if options[:lod_max]
|
32
|
+
properties = FFI::MemoryPointer::new( :cl_sampler_properties)
|
33
|
+
properties[0].write_cl_sampler_properties( OpenCL::Sampler::NORMALIZED_COORDS )
|
34
|
+
properties[1].write_cl_sampler_properties( normalized_coords )
|
35
|
+
properties[2].write_cl_sampler_properties( OpenCL::Sampler::ADDRESSING_MODE )
|
36
|
+
properties[3].write_cl_sampler_properties( addressing_mode )
|
37
|
+
properties[4].write_cl_sampler_properties( OpenCL::Sampler::FILTER_MODE )
|
38
|
+
properties[5].write_cl_sampler_properties( filter_mode )
|
39
|
+
prop_indx = 6
|
40
|
+
if options[:mip_filter_mode] then
|
41
|
+
properties[prop_indx].write_cl_sampler_properties( OpenCL::Sampler::MIP_FILTER_MODE )
|
42
|
+
properties[prop_indx+1].write_cl_sampler_properties( options[:mip_filter_mode] )
|
43
|
+
prop_indx += 2
|
44
|
+
end
|
45
|
+
if options[:lod_min] then
|
46
|
+
properties[prop_indx].write_cl_sampler_properties( OpenCL::Sampler::LOD_MIN )
|
47
|
+
properties[prop_indx+1].write_float( options[:lod_min] )
|
48
|
+
prop_indx += 2
|
49
|
+
end
|
50
|
+
if options[:lod_max] then
|
51
|
+
properties[prop_indx].write_cl_sampler_properties( OpenCL::Sampler::LOD_MAX )
|
52
|
+
properties[prop_indx+1].write_float( options[:lod_max] )
|
53
|
+
prop_indx += 2
|
54
|
+
end
|
55
|
+
properties[prop_indx].write_cl_sampler_properties( 0 )
|
56
|
+
sampler_ptr = OpenCL.clCreateSamplerWithProperties( context, properties, error )
|
57
|
+
end
|
14
58
|
OpenCL.error_check(error.read_cl_int)
|
15
59
|
OpenCL::Sampler::new(sampler_ptr, false)
|
16
60
|
end
|
@@ -44,6 +44,7 @@ module OpenCL
|
|
44
44
|
:cl_device_exec_capabilities => OpenCL::Device::ExecCapabilities,
|
45
45
|
:cl_command_queue_properties => OpenCL::CommandQueue::Properties,
|
46
46
|
:cl_device_affinity_domain => OpenCL::Device::AffinityDomain,
|
47
|
+
:cl_device_svm_capabilities => OpenCL::Device::SVMCapabilities,
|
47
48
|
:cl_channel_order => OpenCL::ChannelOrder,
|
48
49
|
:cl_channel_type => OpenCL::ChannelType,
|
49
50
|
:cl_mem_flags => OpenCL::Mem::Flags,
|
@@ -195,12 +196,12 @@ module OpenCL
|
|
195
196
|
|
196
197
|
# Extracts the :properties named option (for a CommandQueue) from the hash given and returns the properties values
|
197
198
|
def self.get_command_queue_properties( options )
|
198
|
-
properties = 0
|
199
|
+
properties = OpenCL::CommandQueue::Properties::new(0)
|
199
200
|
if options[:properties] then
|
200
201
|
if options[:properties].respond_to?(:each) then
|
201
202
|
options[:properties].each { |f| properties = properties | f }
|
202
203
|
else
|
203
|
-
properties = options[:properties]
|
204
|
+
properties = properties | options[:properties]
|
204
205
|
end
|
205
206
|
end
|
206
207
|
return properties
|
@@ -67,9 +67,12 @@ module OpenCL
|
|
67
67
|
INVALID_COMPILER_OPTIONS = -66
|
68
68
|
INVALID_LINKER_OPTIONS = -67
|
69
69
|
INVALID_DEVICE_PARTITION_COUNT = -68
|
70
|
+
INVALID_PIPE_SIZE = -69
|
71
|
+
INVALID_DEVICE_QUEUE = -70
|
70
72
|
VERSION_1_0 = 1
|
71
73
|
VERSION_1_1 = 1
|
72
74
|
VERSION_1_2 = 1
|
75
|
+
VERSION_2_0 = 1
|
73
76
|
FALSE = 0
|
74
77
|
TRUE = 1
|
75
78
|
BLOCKING = TRUE
|
@@ -128,6 +131,7 @@ module OpenCL
|
|
128
131
|
DEVICE_COMPILER_AVAILABLE = 0x1028
|
129
132
|
DEVICE_EXECUTION_CAPABILITIES = 0x1029
|
130
133
|
DEVICE_QUEUE_PROPERTIES = 0x102A
|
134
|
+
DEVICE_QUEUE_ON_HOST_PROPERTIES = 0x102A
|
131
135
|
DEVICE_NAME = 0x102B
|
132
136
|
DEVICE_VENDOR = 0x102C
|
133
137
|
DRIVER_VERSION = 0x102D
|
@@ -160,6 +164,21 @@ module OpenCL
|
|
160
164
|
DEVICE_PRINTF_BUFFER_SIZE = 0x1049
|
161
165
|
DEVICE_IMAGE_PITCH_ALIGNMENT = 0x104A
|
162
166
|
DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT = 0x104B
|
167
|
+
DEVICE_MAX_READ_WRITE_IMAGE_ARGS = 0x104C
|
168
|
+
DEVICE_MAX_GLOBAL_VARIABLE_SIZE = 0x104D
|
169
|
+
DEVICE_QUEUE_ON_DEVICE_PROPERTIES = 0x104E
|
170
|
+
DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE = 0x104F
|
171
|
+
DEVICE_QUEUE_ON_DEVICE_MAX_SIZE = 0x1050
|
172
|
+
DEVICE_MAX_ON_DEVICE_QUEUES = 0x1051
|
173
|
+
DEVICE_MAX_ON_DEVICE_EVENTS = 0x1052
|
174
|
+
DEVICE_SVM_CAPABILITIES = 0x1053
|
175
|
+
DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE = 0x1054
|
176
|
+
DEVICE_MAX_PIPE_ARGS = 0x1055
|
177
|
+
DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS = 0x1056
|
178
|
+
DEVICE_PIPE_MAX_PACKET_SIZE = 0x1057
|
179
|
+
DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT = 0x1058
|
180
|
+
DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT = 0x1059
|
181
|
+
DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT = 0x105A
|
163
182
|
FP_DENORM = (1 << 0)
|
164
183
|
FP_INF_NAN = (1 << 1)
|
165
184
|
FP_ROUND_TO_NEAREST = (1 << 2)
|
@@ -177,6 +196,8 @@ module OpenCL
|
|
177
196
|
EXEC_NATIVE_KERNEL = (1 << 1)
|
178
197
|
QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 << 0)
|
179
198
|
QUEUE_PROFILING_ENABLE = (1 << 1)
|
199
|
+
QUEUE_ON_DEVICE = (1 << 2)
|
200
|
+
QUEUE_ON_DEVICE_DEFAULT = (1 << 3)
|
180
201
|
CONTEXT_REFERENCE_COUNT = 0x1080
|
181
202
|
CONTEXT_DEVICES = 0x1081
|
182
203
|
CONTEXT_PROPERTIES = 0x1082
|
@@ -193,10 +214,15 @@ module OpenCL
|
|
193
214
|
DEVICE_AFFINITY_DOMAIN_L2_CACHE = (1 << 3)
|
194
215
|
DEVICE_AFFINITY_DOMAIN_L1_CACHE = (1 << 4)
|
195
216
|
DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE = (1 << 5)
|
217
|
+
DEVICE_SVM_COARSE_GRAIN_BUFFER = (1 << 0)
|
218
|
+
DEVICE_SVM_FINE_GRAIN_BUFFER = (1 << 1)
|
219
|
+
DEVICE_SVM_FINE_GRAIN_SYSTEM = (1 << 2)
|
220
|
+
DEVICE_SVM_ATOMICS = (1 << 3)
|
196
221
|
QUEUE_CONTEXT = 0x1090
|
197
222
|
QUEUE_DEVICE = 0x1091
|
198
223
|
QUEUE_REFERENCE_COUNT = 0x1092
|
199
224
|
QUEUE_PROPERTIES = 0x1093
|
225
|
+
QUEUE_SIZE = 0x1094
|
200
226
|
MEM_READ_WRITE = (1 << 0)
|
201
227
|
MEM_WRITE_ONLY = (1 << 1)
|
202
228
|
MEM_READ_ONLY = (1 << 2)
|
@@ -206,6 +232,8 @@ module OpenCL
|
|
206
232
|
MEM_HOST_WRITE_ONLY = (1 << 7)
|
207
233
|
MEM_HOST_READ_ONLY = (1 << 8)
|
208
234
|
MEM_HOST_NO_ACCESS = (1 << 9)
|
235
|
+
MEM_SVM_FINE_GRAIN_BUFFER = (1 << 10)
|
236
|
+
MEM_SVM_ATOMICS = (1 << 11)
|
209
237
|
MIGRATE_MEM_OBJECT_HOST = (1 << 0)
|
210
238
|
MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED = (1 << 1)
|
211
239
|
R = 0x10B0
|
@@ -223,6 +251,11 @@ module OpenCL
|
|
223
251
|
RGBx = 0x10BC
|
224
252
|
DEPTH = 0x10BD
|
225
253
|
DEPTH_STENCIL = 0x10BE
|
254
|
+
sRGB = 0x10BF
|
255
|
+
sRGBx = 0x10C0
|
256
|
+
sRGBA = 0x10C1
|
257
|
+
sBGRA = 0x10C2
|
258
|
+
ABGR = 0x10C3
|
226
259
|
SNORM_INT8 = 0x10D0
|
227
260
|
SNORM_INT16 = 0x10D1
|
228
261
|
UNORM_INT8 = 0x10D2
|
@@ -246,6 +279,7 @@ module OpenCL
|
|
246
279
|
MEM_OBJECT_IMAGE1D = 0x10F4
|
247
280
|
MEM_OBJECT_IMAGE1D_ARRAY = 0x10F5
|
248
281
|
MEM_OBJECT_IMAGE1D_BUFFER = 0x10F6
|
282
|
+
MEM_OBJECT_PIPE = 0x10F7
|
249
283
|
MEM_TYPE = 0x1100
|
250
284
|
MEM_FLAGS = 0x1101
|
251
285
|
MEM_SIZE = 0x1102
|
@@ -255,6 +289,7 @@ module OpenCL
|
|
255
289
|
MEM_CONTEXT = 0x1106
|
256
290
|
MEM_ASSOCIATED_MEMOBJECT = 0x1107
|
257
291
|
MEM_OFFSET = 0x1108
|
292
|
+
MEM_USES_SVM_POINTER = 0x1109
|
258
293
|
IMAGE_FORMAT = 0x1110
|
259
294
|
IMAGE_ELEMENT_SIZE = 0x1111
|
260
295
|
IMAGE_ROW_PITCH = 0x1112
|
@@ -266,6 +301,8 @@ module OpenCL
|
|
266
301
|
IMAGE_BUFFER = 0x1118
|
267
302
|
IMAGE_NUM_MIP_LEVELS = 0x1119
|
268
303
|
IMAGE_NUM_SAMPLES = 0x111A
|
304
|
+
PIPE_PACKET_SIZE = 0x1120
|
305
|
+
PIPE_MAX_PACKETS = 0x1121
|
269
306
|
ADDRESS_NONE = 0x1130
|
270
307
|
ADDRESS_CLAMP_TO_EDGE = 0x1131
|
271
308
|
ADDRESS_CLAMP = 0x1132
|
@@ -278,6 +315,9 @@ module OpenCL
|
|
278
315
|
SAMPLER_NORMALIZED_COORDS = 0x1152
|
279
316
|
SAMPLER_ADDRESSING_MODE = 0x1153
|
280
317
|
SAMPLER_FILTER_MODE = 0x1154
|
318
|
+
SAMPLER_MIP_FILTER_MODE = 0x1155
|
319
|
+
SAMPLER_LOD_MIN = 0x1156
|
320
|
+
SAMPLER_LOD_MAX = 0x1157
|
281
321
|
MAP_READ = (1 << 0)
|
282
322
|
MAP_WRITE = (1 << 1)
|
283
323
|
MAP_WRITE_INVALIDATE_REGION = (1 << 2)
|
@@ -294,6 +334,7 @@ module OpenCL
|
|
294
334
|
PROGRAM_BUILD_OPTIONS = 0x1182
|
295
335
|
PROGRAM_BUILD_LOG = 0x1183
|
296
336
|
PROGRAM_BINARY_TYPE = 0x1184
|
337
|
+
PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE = 0x1185
|
297
338
|
PROGRAM_BINARY_TYPE_NONE = 0x0
|
298
339
|
PROGRAM_BINARY_TYPE_COMPILED_OBJECT = 0x1
|
299
340
|
PROGRAM_BINARY_TYPE_LIBRARY = 0x2
|
@@ -325,12 +366,15 @@ module OpenCL
|
|
325
366
|
KERNEL_ARG_TYPE_CONST = (1 << 0)
|
326
367
|
KERNEL_ARG_TYPE_RESTRICT = (1 << 1)
|
327
368
|
KERNEL_ARG_TYPE_VOLATILE = (1 << 2)
|
369
|
+
KERNEL_ARG_TYPE_PIPE = (1 << 3)
|
328
370
|
KERNEL_WORK_GROUP_SIZE = 0x11B0
|
329
371
|
KERNEL_COMPILE_WORK_GROUP_SIZE = 0x11B1
|
330
372
|
KERNEL_LOCAL_MEM_SIZE = 0x11B2
|
331
373
|
KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x11B3
|
332
374
|
KERNEL_PRIVATE_MEM_SIZE = 0x11B4
|
333
375
|
KERNEL_GLOBAL_WORK_SIZE = 0x11B5
|
376
|
+
KERNEL_EXEC_INFO_SVM_PTRS = 0x11B6
|
377
|
+
KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM = 0x11B7
|
334
378
|
EVENT_COMMAND_QUEUE = 0x11D0
|
335
379
|
EVENT_COMMAND_TYPE = 0x11D1
|
336
380
|
EVENT_REFERENCE_COUNT = 0x11D2
|
@@ -361,6 +405,11 @@ module OpenCL
|
|
361
405
|
COMMAND_MIGRATE_MEM_OBJECTS = 0x1206
|
362
406
|
COMMAND_FILL_BUFFER = 0x1207
|
363
407
|
COMMAND_FILL_IMAGE = 0x1208
|
408
|
+
COMMAND_SVM_FREE = 0x1209
|
409
|
+
COMMAND_SVM_MEMCPY = 0x120A
|
410
|
+
COMMAND_SVM_MEMFILL = 0x120B
|
411
|
+
COMMAND_SVM_MAP = 0x120C
|
412
|
+
COMMAND_SVM_UNMAP = 0x120D
|
364
413
|
COMPLETE = 0x0
|
365
414
|
RUNNING = 0x1
|
366
415
|
SUBMITTED = 0x2
|
@@ -370,6 +419,7 @@ module OpenCL
|
|
370
419
|
PROFILING_COMMAND_SUBMIT = 0x1281
|
371
420
|
PROFILING_COMMAND_START = 0x1282
|
372
421
|
PROFILING_COMMAND_END = 0x1283
|
422
|
+
PROFILING_COMMAND_COMPLETE = 0x1284
|
373
423
|
GL_OBJECT_BUFFER = 0x2000
|
374
424
|
GL_OBJECT_TEXTURE2D = 0x2001
|
375
425
|
GL_OBJECT_TEXTURE3D = 0x2002
|
@@ -400,6 +450,8 @@ module OpenCL
|
|
400
450
|
DEVICE_TERMINATE_CAPABILITY_KHR = 0x200F
|
401
451
|
CONTEXT_TERMINATE_KHR = 0x2010
|
402
452
|
cl_khr_terminate_context = 1
|
453
|
+
DEVICE_SPIR_VERSIONS = 0x40E0
|
454
|
+
PROGRAM_BINARY_TYPE_INTERMEDIATE = 0x40E1
|
403
455
|
DEVICE_COMPUTE_CAPABILITY_MAJOR_NV = 0x4000
|
404
456
|
DEVICE_COMPUTE_CAPABILITY_MINOR_NV = 0x4001
|
405
457
|
DEVICE_REGISTERS_PER_BLOCK_NV = 0x4002
|
@@ -407,26 +459,9 @@ module OpenCL
|
|
407
459
|
DEVICE_GPU_OVERLAP_NV = 0x4004
|
408
460
|
DEVICE_KERNEL_EXEC_TIMEOUT_NV = 0x4005
|
409
461
|
DEVICE_INTEGRATED_MEMORY_NV = 0x4006
|
410
|
-
cl_amd_device_memory_flags = 1
|
411
|
-
MEM_USE_PERSISTENT_MEM_AMD = (1 << 6)
|
412
|
-
DEVICE_MAX_ATOMIC_COUNTERS_EXT = 0x4032
|
413
462
|
DEVICE_PROFILING_TIMER_OFFSET_AMD = 0x4036
|
414
|
-
|
415
|
-
|
416
|
-
DEVICE_GLOBAL_FREE_MEMORY_AMD = 0x4039
|
417
|
-
DEVICE_SIMD_PER_COMPUTE_UNIT_AMD = 0x4040
|
418
|
-
DEVICE_SIMD_WIDTH_AMD = 0x4041
|
419
|
-
DEVICE_SIMD_INSTRUCTION_WIDTH_AMD = 0x4042
|
420
|
-
DEVICE_WAVEFRONT_WIDTH_AMD = 0x4043
|
421
|
-
DEVICE_GLOBAL_MEM_CHANNELS_AMD = 0x4044
|
422
|
-
DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD = 0x4045
|
423
|
-
DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD = 0x4046
|
424
|
-
DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD = 0x4047
|
425
|
-
DEVICE_LOCAL_MEM_BANKS_AMD = 0x4048
|
426
|
-
DEVICE_TOPOLOGY_TYPE_PCIE_AMD = 1
|
427
|
-
CONTEXT_OFFLINE_DEVICES_AMD = 0x403F
|
428
|
-
MEM_EXT_HOST_PTR_QCOM = (1 << 29)
|
429
|
-
DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM = 0x40A0
|
463
|
+
PRINTF_CALLBACK_ARM = 0x40B0
|
464
|
+
PRINTF_BUFFERSIZE_ARM = 0x40B1
|
430
465
|
DEVICE_PAGE_SIZE_QCOM = 0x40A1
|
431
466
|
IMAGE_ROW_ALIGNMENT_QCOM = 0x40A2
|
432
467
|
IMAGE_SLICE_ALIGNMENT_QCOM = 0x40A3
|
@@ -444,6 +479,8 @@ module OpenCL
|
|
444
479
|
@@codes[-3] = 'COMPILER_NOT_AVAILABLE'
|
445
480
|
@@codes[-2] = 'DEVICE_NOT_AVAILABLE'
|
446
481
|
@@codes[-1] = 'DEVICE_NOT_FOUND'
|
482
|
+
@@codes[-70] = 'INVALID_DEVICE_QUEUE'
|
483
|
+
@@codes[-69] = 'INVALID_PIPE_SIZE'
|
447
484
|
@@codes[-68] = 'INVALID_DEVICE_PARTITION_COUNT'
|
448
485
|
@@codes[-67] = 'INVALID_LINKER_OPTIONS'
|
449
486
|
@@codes[-66] = 'INVALID_COMPILER_OPTIONS'
|
@@ -532,15 +569,18 @@ module OpenCL
|
|
532
569
|
FFI.typedef :cl_uint, :cl_device_mem_cache_type
|
533
570
|
FFI.typedef :cl_uint, :cl_device_local_mem_type
|
534
571
|
FFI.typedef :cl_bitfield, :cl_device_exec_capabilities
|
572
|
+
FFI.typedef :cl_bitfield, :cl_device_svm_capabilities
|
535
573
|
FFI.typedef :cl_bitfield, :cl_command_queue_properties
|
536
574
|
FFI.typedef :pointer, :cl_device_partition_property
|
537
575
|
FFI.typedef :cl_bitfield, :cl_device_affinity_domain
|
538
576
|
FFI.typedef :pointer, :cl_context_properties
|
539
577
|
FFI.typedef :cl_uint, :cl_context_info
|
578
|
+
FFI.typedef :cl_bitfield, :cl_queue_properties
|
540
579
|
FFI.typedef :cl_uint, :cl_command_queue_info
|
541
580
|
FFI.typedef :cl_uint, :cl_channel_order
|
542
581
|
FFI.typedef :cl_uint, :cl_channel_type
|
543
582
|
FFI.typedef :cl_bitfield, :cl_mem_flags
|
583
|
+
FFI.typedef :cl_bitfield, :cl_svm_mem_flags
|
544
584
|
FFI.typedef :cl_uint, :cl_mem_object_type
|
545
585
|
FFI.typedef :cl_uint, :cl_mem_info
|
546
586
|
FFI.typedef :cl_bitfield, :cl_mem_migration_flags
|
@@ -550,6 +590,8 @@ module OpenCL
|
|
550
590
|
FFI.typedef :cl_uint, :cl_filter_mode
|
551
591
|
FFI.typedef :cl_uint, :cl_sampler_info
|
552
592
|
FFI.typedef :cl_bitfield, :cl_map_flags
|
593
|
+
FFI.typedef :pointer, :cl_pipe_properties
|
594
|
+
FFI.typedef :cl_uint, :cl_pipe_info
|
553
595
|
FFI.typedef :cl_uint, :cl_program_info
|
554
596
|
FFI.typedef :cl_uint, :cl_program_build_info
|
555
597
|
FFI.typedef :cl_uint, :cl_program_binary_type
|
@@ -563,6 +605,8 @@ module OpenCL
|
|
563
605
|
FFI.typedef :cl_uint, :cl_event_info
|
564
606
|
FFI.typedef :cl_uint, :cl_command_type
|
565
607
|
FFI.typedef :cl_uint, :cl_profiling_info
|
608
|
+
FFI.typedef :cl_bitfield, :cl_sampler_properties
|
609
|
+
FFI.typedef :cl_uint, :cl_kernel_exec_info
|
566
610
|
FFI.typedef :cl_uint, :cl_gl_object_type
|
567
611
|
FFI.typedef :cl_uint, :cl_gl_texture_info
|
568
612
|
FFI.typedef :cl_uint, :cl_gl_platform_info
|
@@ -606,6 +650,11 @@ module OpenCL
|
|
606
650
|
return @val
|
607
651
|
end
|
608
652
|
|
653
|
+
# Returns the integer representing the Enum value
|
654
|
+
def to_int
|
655
|
+
return @val
|
656
|
+
end
|
657
|
+
|
609
658
|
# #:stopdoc:
|
610
659
|
# def self.to_native(value, context)
|
611
660
|
# if value then
|
@@ -663,19 +712,24 @@ module OpenCL
|
|
663
712
|
return @val
|
664
713
|
end
|
665
714
|
|
715
|
+
# Returns the integer representing the Bitfield value
|
716
|
+
def to_int
|
717
|
+
return @val
|
718
|
+
end
|
719
|
+
|
666
720
|
# Returns the bitwise & operation between f and the internal Bitfield representation
|
667
721
|
def &(f)
|
668
|
-
return @val & f
|
722
|
+
return self.class::new( @val & f )
|
669
723
|
end
|
670
724
|
|
671
725
|
# Returns the bitwise ^ operation between f and the internal Bitfield representation
|
672
726
|
def ^(f)
|
673
|
-
return @val ^ f
|
727
|
+
return self.class::new( @val ^ f )
|
674
728
|
end
|
675
729
|
|
676
730
|
# Returns the bitwise | operation between f and the internal Bitfield representation
|
677
731
|
def |(f)
|
678
|
-
return @val | f
|
732
|
+
return self.class::new( @val | f )
|
679
733
|
end
|
680
734
|
|
681
735
|
# Returns the internal representation of the Bitfield
|
@@ -687,7 +741,7 @@ module OpenCL
|
|
687
741
|
def flags=(val)
|
688
742
|
@val = val
|
689
743
|
end
|
690
|
-
|
744
|
+
|
691
745
|
# #:stopdoc:
|
692
746
|
# def self.to_native(value, context)
|
693
747
|
# if value then
|
@@ -793,6 +847,7 @@ module OpenCL
|
|
793
847
|
COMPILER_AVAILABLE = 0x1028
|
794
848
|
EXECUTION_CAPABILITIES = 0x1029
|
795
849
|
QUEUE_PROPERTIES = 0x102A
|
850
|
+
QUEUE_ON_HOST_PROPERTIES = 0x102A
|
796
851
|
NAME = 0x102B
|
797
852
|
VENDOR = 0x102C
|
798
853
|
PROFILE = 0x102E
|
@@ -824,6 +879,21 @@ module OpenCL
|
|
824
879
|
PRINTF_BUFFER_SIZE = 0x1049
|
825
880
|
IMAGE_PITCH_ALIGNMENT = 0x104A
|
826
881
|
IMAGE_BASE_ADDRESS_ALIGNMENT = 0x104B
|
882
|
+
MAX_READ_WRITE_IMAGE_ARGS = 0x104C
|
883
|
+
MAX_GLOBAL_VARIABLE_SIZE = 0x104D
|
884
|
+
QUEUE_ON_DEVICE_PROPERTIES = 0x104E
|
885
|
+
QUEUE_ON_DEVICE_PREFERRED_SIZE = 0x104F
|
886
|
+
QUEUE_ON_DEVICE_MAX_SIZE = 0x1050
|
887
|
+
MAX_ON_DEVICE_QUEUES = 0x1051
|
888
|
+
MAX_ON_DEVICE_EVENTS = 0x1052
|
889
|
+
SVM_CAPABILITIES = 0x1053
|
890
|
+
GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE = 0x1054
|
891
|
+
MAX_PIPE_ARGS = 0x1055
|
892
|
+
PIPE_MAX_ACTIVE_RESERVATIONS = 0x1056
|
893
|
+
PIPE_MAX_PACKET_SIZE = 0x1057
|
894
|
+
PREFERRED_PLATFORM_ATOMIC_ALIGNMENT = 0x1058
|
895
|
+
PREFERRED_GLOBAL_ATOMIC_ALIGNMENT = 0x1059
|
896
|
+
PREFERRED_LOCAL_ATOMIC_ALIGNMENT = 0x105A
|
827
897
|
PARTITION_EQUALLY = 0x1086
|
828
898
|
PARTITION_BY_COUNTS = 0x1087
|
829
899
|
PARTITION_BY_COUNTS_LIST_END = 0x0
|
@@ -834,8 +904,13 @@ module OpenCL
|
|
834
904
|
AFFINITY_DOMAIN_L2_CACHE = (1 << 3)
|
835
905
|
AFFINITY_DOMAIN_L1_CACHE = (1 << 4)
|
836
906
|
AFFINITY_DOMAIN_NEXT_PARTITIONABLE = (1 << 5)
|
907
|
+
SVM_COARSE_GRAIN_BUFFER = (1 << 0)
|
908
|
+
SVM_FINE_GRAIN_BUFFER = (1 << 1)
|
909
|
+
SVM_FINE_GRAIN_SYSTEM = (1 << 2)
|
910
|
+
SVM_ATOMICS = (1 << 3)
|
837
911
|
HALF_FP_CONFIG = 0x1033
|
838
912
|
TERMINATE_CAPABILITY_KHR = 0x200F
|
913
|
+
SPIR_VERSIONS = 0x40E0
|
839
914
|
COMPUTE_CAPABILITY_MAJOR_NV = 0x4000
|
840
915
|
COMPUTE_CAPABILITY_MINOR_NV = 0x4001
|
841
916
|
REGISTERS_PER_BLOCK_NV = 0x4002
|
@@ -843,22 +918,7 @@ module OpenCL
|
|
843
918
|
GPU_OVERLAP_NV = 0x4004
|
844
919
|
KERNEL_EXEC_TIMEOUT_NV = 0x4005
|
845
920
|
INTEGRATED_MEMORY_NV = 0x4006
|
846
|
-
MAX_ATOMIC_COUNTERS_EXT = 0x4032
|
847
921
|
PROFILING_TIMER_OFFSET_AMD = 0x4036
|
848
|
-
TOPOLOGY_AMD = 0x4037
|
849
|
-
BOARD_NAME_AMD = 0x4038
|
850
|
-
GLOBAL_FREE_MEMORY_AMD = 0x4039
|
851
|
-
SIMD_PER_COMPUTE_UNIT_AMD = 0x4040
|
852
|
-
SIMD_WIDTH_AMD = 0x4041
|
853
|
-
SIMD_INSTRUCTION_WIDTH_AMD = 0x4042
|
854
|
-
WAVEFRONT_WIDTH_AMD = 0x4043
|
855
|
-
GLOBAL_MEM_CHANNELS_AMD = 0x4044
|
856
|
-
GLOBAL_MEM_CHANNEL_BANKS_AMD = 0x4045
|
857
|
-
GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD = 0x4046
|
858
|
-
LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD = 0x4047
|
859
|
-
LOCAL_MEM_BANKS_AMD = 0x4048
|
860
|
-
TOPOLOGY_TYPE_PCIE_AMD = 1
|
861
|
-
EXT_MEM_PADDING_IN_BYTES_QCOM = 0x40A0
|
862
922
|
PAGE_SIZE_QCOM = 0x40A1
|
863
923
|
#:startdoc:
|
864
924
|
|
@@ -964,7 +1024,6 @@ module OpenCL
|
|
964
1024
|
@@codes[0x1] = 'READ_ONLY_CACHE'
|
965
1025
|
@@codes[0x2] = 'READ_WRITE_CACHE'
|
966
1026
|
#:startdoc:
|
967
|
-
|
968
1027
|
# Returns a String representing the Enum value name
|
969
1028
|
def name
|
970
1029
|
return @@codes[@val]
|
@@ -979,7 +1038,6 @@ module OpenCL
|
|
979
1038
|
@@codes[0x1] = 'LOCAL'
|
980
1039
|
@@codes[0x2] = 'GLOBAL'
|
981
1040
|
#:startdoc:
|
982
|
-
|
983
1041
|
# Returns a String representing the Enum value name
|
984
1042
|
def name
|
985
1043
|
return @@codes[@val]
|
@@ -1006,6 +1064,24 @@ module OpenCL
|
|
1006
1064
|
end
|
1007
1065
|
end
|
1008
1066
|
|
1067
|
+
# Bitfield that maps the :cl_device_svm_capabilities
|
1068
|
+
class SVMCapabilities < OpenCL::Bitfield
|
1069
|
+
#:stopdoc:
|
1070
|
+
COARSE_GRAIN_BUFFER = (1 << 0)
|
1071
|
+
FINE_GRAIN_BUFFER = (1 << 1)
|
1072
|
+
FINE_GRAIN_SYSTEM = (1 << 2)
|
1073
|
+
ATOMICS = (1 << 3)
|
1074
|
+
#:startdoc:
|
1075
|
+
# Returns an Array of String representing the different flags set
|
1076
|
+
def names
|
1077
|
+
fs = []
|
1078
|
+
%w( COARSE_GRAIN_BUFFER FINE_GRAIN_BUFFER FINE_GRAIN_SYSTEM ATOMICS ).each { |f|
|
1079
|
+
fs.push(f) if self.include?( self.class.const_get(f) )
|
1080
|
+
}
|
1081
|
+
return fs
|
1082
|
+
end
|
1083
|
+
end
|
1084
|
+
|
1009
1085
|
end
|
1010
1086
|
class Context < FFI::ManagedStruct
|
1011
1087
|
layout :dummy, :pointer
|
@@ -1018,7 +1094,6 @@ module OpenCL
|
|
1018
1094
|
INTEROP_USER_SYNC = 0x1085
|
1019
1095
|
MEMORY_INITIALIZE_KHR = 0x200E
|
1020
1096
|
TERMINATE_KHR = 0x2010
|
1021
|
-
OFFLINE_DEVICES_AMD = 0x403F
|
1022
1097
|
#:startdoc:
|
1023
1098
|
|
1024
1099
|
# Creates a new Context and retains it if specified and aplicable
|
@@ -1053,10 +1128,13 @@ module OpenCL
|
|
1053
1128
|
#:stopdoc:
|
1054
1129
|
OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 << 0)
|
1055
1130
|
PROFILING_ENABLE = (1 << 1)
|
1131
|
+
ON_DEVICE = (1 << 2)
|
1132
|
+
ON_DEVICE_DEFAULT = (1 << 3)
|
1056
1133
|
CONTEXT = 0x1090
|
1057
1134
|
DEVICE = 0x1091
|
1058
1135
|
REFERENCE_COUNT = 0x1092
|
1059
1136
|
PROPERTIES = 0x1093
|
1137
|
+
SIZE = 0x1094
|
1060
1138
|
#:startdoc:
|
1061
1139
|
|
1062
1140
|
# Creates a new CommandQueue and retains it if specified and aplicable
|
@@ -1091,11 +1169,13 @@ module OpenCL
|
|
1091
1169
|
#:stopdoc:
|
1092
1170
|
OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 << 0)
|
1093
1171
|
PROFILING_ENABLE = (1 << 1)
|
1172
|
+
ON_DEVICE = (1 << 2)
|
1173
|
+
ON_DEVICE_DEFAULT = (1 << 3)
|
1094
1174
|
#:startdoc:
|
1095
1175
|
# Returns an Array of String representing the different flags set
|
1096
1176
|
def names
|
1097
1177
|
fs = []
|
1098
|
-
%w( OUT_OF_ORDER_EXEC_MODE_ENABLE PROFILING_ENABLE ).each { |f|
|
1178
|
+
%w( OUT_OF_ORDER_EXEC_MODE_ENABLE PROFILING_ENABLE ON_DEVICE ON_DEVICE_DEFAULT ).each { |f|
|
1099
1179
|
fs.push(f) if self.include?( self.class.const_get(f) )
|
1100
1180
|
}
|
1101
1181
|
return fs
|
@@ -1115,6 +1195,8 @@ module OpenCL
|
|
1115
1195
|
HOST_WRITE_ONLY = (1 << 7)
|
1116
1196
|
HOST_READ_ONLY = (1 << 8)
|
1117
1197
|
HOST_NO_ACCESS = (1 << 9)
|
1198
|
+
SVM_FINE_GRAIN_BUFFER = (1 << 10)
|
1199
|
+
SVM_ATOMICS = (1 << 11)
|
1118
1200
|
BUFFER = 0x10F0
|
1119
1201
|
IMAGE2D = 0x10F1
|
1120
1202
|
IMAGE3D = 0x10F2
|
@@ -1122,6 +1204,7 @@ module OpenCL
|
|
1122
1204
|
IMAGE1D = 0x10F4
|
1123
1205
|
IMAGE1D_ARRAY = 0x10F5
|
1124
1206
|
IMAGE1D_BUFFER = 0x10F6
|
1207
|
+
PIPE = 0x10F7
|
1125
1208
|
TYPE = 0x1100
|
1126
1209
|
FLAGS = 0x1101
|
1127
1210
|
SIZE = 0x1102
|
@@ -1131,8 +1214,7 @@ module OpenCL
|
|
1131
1214
|
CONTEXT = 0x1106
|
1132
1215
|
ASSOCIATED_MEMOBJECT = 0x1107
|
1133
1216
|
OFFSET = 0x1108
|
1134
|
-
|
1135
|
-
EXT_HOST_PTR_QCOM = (1 << 29)
|
1217
|
+
USES_SVM_POINTER = 0x1109
|
1136
1218
|
HOST_UNCACHED_QCOM = 0x40A4
|
1137
1219
|
HOST_WRITEBACK_QCOM = 0x40A5
|
1138
1220
|
HOST_WRITETHROUGH_QCOM = 0x40A6
|
@@ -1217,6 +1299,7 @@ module OpenCL
|
|
1217
1299
|
IMAGE1D = 0x10F4
|
1218
1300
|
IMAGE1D_ARRAY = 0x10F5
|
1219
1301
|
IMAGE1D_BUFFER = 0x10F6
|
1302
|
+
PIPE = 0x10F7
|
1220
1303
|
@@codes[0x10F0] = 'BUFFER'
|
1221
1304
|
@@codes[0x10F1] = 'IMAGE2D'
|
1222
1305
|
@@codes[0x10F2] = 'IMAGE3D'
|
@@ -1224,14 +1307,33 @@ module OpenCL
|
|
1224
1307
|
@@codes[0x10F4] = 'IMAGE1D'
|
1225
1308
|
@@codes[0x10F5] = 'IMAGE1D_ARRAY'
|
1226
1309
|
@@codes[0x10F6] = 'IMAGE1D_BUFFER'
|
1310
|
+
@@codes[0x10F7] = 'PIPE'
|
1227
1311
|
#:startdoc:
|
1228
|
-
|
1229
1312
|
# Returns a String representing the Enum value name
|
1230
1313
|
def name
|
1231
1314
|
return @@codes[@val]
|
1232
1315
|
end
|
1233
1316
|
end
|
1234
1317
|
|
1318
|
+
# Bitfield that maps the :cl_svm_mem_flags type
|
1319
|
+
class SVMFlags < OpenCL::Bitfield
|
1320
|
+
#:stopdoc:
|
1321
|
+
READ_WRITE = (1 << 0)
|
1322
|
+
WRITE_ONLY = (1 << 1)
|
1323
|
+
READ_ONLY = (1 << 2)
|
1324
|
+
SVM_FINE_GRAIN_BUFFER = (1 << 10)
|
1325
|
+
SVM_ATOMICS = (1 << 11)
|
1326
|
+
#:startdoc:
|
1327
|
+
# Returns an Array of String representing the different flags set
|
1328
|
+
def names
|
1329
|
+
fs = []
|
1330
|
+
%w( READ_WRITE WRITE_ONLY READ_ONLY SVM_FINE_GRAIN_BUFFER SVM_ATOMICS ).each { |f|
|
1331
|
+
fs.push(f) if self.include?( self.class.const_get(f) )
|
1332
|
+
}
|
1333
|
+
return fs
|
1334
|
+
end
|
1335
|
+
end
|
1336
|
+
|
1235
1337
|
end
|
1236
1338
|
class Program < FFI::ManagedStruct
|
1237
1339
|
layout :dummy, :pointer
|
@@ -1249,10 +1351,12 @@ module OpenCL
|
|
1249
1351
|
BUILD_OPTIONS = 0x1182
|
1250
1352
|
BUILD_LOG = 0x1183
|
1251
1353
|
BINARY_TYPE = 0x1184
|
1354
|
+
BUILD_GLOBAL_VARIABLE_TOTAL_SIZE = 0x1185
|
1252
1355
|
BINARY_TYPE_NONE = 0x0
|
1253
1356
|
BINARY_TYPE_COMPILED_OBJECT = 0x1
|
1254
1357
|
BINARY_TYPE_LIBRARY = 0x2
|
1255
1358
|
BINARY_TYPE_EXECUTABLE = 0x4
|
1359
|
+
BINARY_TYPE_INTERMEDIATE = 0x40E1
|
1256
1360
|
#:startdoc:
|
1257
1361
|
|
1258
1362
|
# Creates a new Program and retains it if specified and aplicable
|
@@ -1290,12 +1394,13 @@ module OpenCL
|
|
1290
1394
|
COMPILED_OBJECT = 0x1
|
1291
1395
|
LIBRARY = 0x2
|
1292
1396
|
EXECUTABLE = 0x4
|
1397
|
+
INTERMEDIATE = 0x40E1
|
1293
1398
|
@@codes[0x0] = 'NONE'
|
1294
1399
|
@@codes[0x1] = 'COMPILED_OBJECT'
|
1295
1400
|
@@codes[0x2] = 'LIBRARY'
|
1296
1401
|
@@codes[0x4] = 'EXECUTABLE'
|
1402
|
+
@@codes[0x40E1] = 'INTERMEDIATE'
|
1297
1403
|
#:startdoc:
|
1298
|
-
|
1299
1404
|
# Returns a String representing the Enum value name
|
1300
1405
|
def name
|
1301
1406
|
return @@codes[@val]
|
@@ -1329,12 +1434,15 @@ module OpenCL
|
|
1329
1434
|
ARG_TYPE_CONST = (1 << 0)
|
1330
1435
|
ARG_TYPE_RESTRICT = (1 << 1)
|
1331
1436
|
ARG_TYPE_VOLATILE = (1 << 2)
|
1437
|
+
ARG_TYPE_PIPE = (1 << 3)
|
1332
1438
|
WORK_GROUP_SIZE = 0x11B0
|
1333
1439
|
COMPILE_WORK_GROUP_SIZE = 0x11B1
|
1334
1440
|
LOCAL_MEM_SIZE = 0x11B2
|
1335
1441
|
PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x11B3
|
1336
1442
|
PRIVATE_MEM_SIZE = 0x11B4
|
1337
1443
|
GLOBAL_WORK_SIZE = 0x11B5
|
1444
|
+
EXEC_INFO_SVM_PTRS = 0x11B6
|
1445
|
+
EXEC_INFO_SVM_FINE_GRAIN_SYSTEM = 0x11B7
|
1338
1446
|
#:startdoc:
|
1339
1447
|
|
1340
1448
|
# Creates a new Kernel and retains it if specified and aplicable
|
@@ -1385,6 +1493,7 @@ module OpenCL
|
|
1385
1493
|
TYPE_CONST = (1 << 0)
|
1386
1494
|
TYPE_RESTRICT = (1 << 1)
|
1387
1495
|
TYPE_VOLATILE = (1 << 2)
|
1496
|
+
TYPE_PIPE = (1 << 3)
|
1388
1497
|
#:startdoc:
|
1389
1498
|
end
|
1390
1499
|
|
@@ -1401,7 +1510,6 @@ module OpenCL
|
|
1401
1510
|
@@codes[0x119D] = 'CONSTANT'
|
1402
1511
|
@@codes[0x119E] = 'PRIVATE'
|
1403
1512
|
#:startdoc:
|
1404
|
-
|
1405
1513
|
# Returns a String representing the Enum value name
|
1406
1514
|
def name
|
1407
1515
|
return @@codes[@val]
|
@@ -1420,7 +1528,6 @@ module OpenCL
|
|
1420
1528
|
@@codes[0x11A2] = 'READ_WRITE'
|
1421
1529
|
@@codes[0x11A3] = 'NONE'
|
1422
1530
|
#:startdoc:
|
1423
|
-
|
1424
1531
|
# Returns a String representing the Enum value name
|
1425
1532
|
def name
|
1426
1533
|
return @@codes[@val]
|
@@ -1434,11 +1541,12 @@ module OpenCL
|
|
1434
1541
|
CONST = (1 << 0)
|
1435
1542
|
RESTRICT = (1 << 1)
|
1436
1543
|
VOLATILE = (1 << 2)
|
1544
|
+
PIPE = (1 << 3)
|
1437
1545
|
#:startdoc:
|
1438
1546
|
# Returns an Array of String representing the different flags set
|
1439
1547
|
def names
|
1440
1548
|
fs = []
|
1441
|
-
%w( NONE CONST RESTRICT VOLATILE ).each { |f|
|
1549
|
+
%w( NONE CONST RESTRICT VOLATILE PIPE ).each { |f|
|
1442
1550
|
fs.push(f) if self.include?( self.class.const_get(f) )
|
1443
1551
|
}
|
1444
1552
|
return fs
|
@@ -1492,6 +1600,9 @@ module OpenCL
|
|
1492
1600
|
NORMALIZED_COORDS = 0x1152
|
1493
1601
|
ADDRESSING_MODE = 0x1153
|
1494
1602
|
FILTER_MODE = 0x1154
|
1603
|
+
MIP_FILTER_MODE = 0x1155
|
1604
|
+
LOD_MIN = 0x1156
|
1605
|
+
LOD_MAX = 0x1157
|
1495
1606
|
#:startdoc:
|
1496
1607
|
|
1497
1608
|
# Creates a new Sampler and retains it if specified and aplicable
|
@@ -1521,6 +1632,30 @@ module OpenCL
|
|
1521
1632
|
end
|
1522
1633
|
end
|
1523
1634
|
|
1635
|
+
class Sampler
|
1636
|
+
# Enum that maps the :cl_sampler_properties
|
1637
|
+
class Type < OpenCL::Enum
|
1638
|
+
#:stopdoc:
|
1639
|
+
NORMALIZED_COORDS = 0x1152
|
1640
|
+
ADDRESSING_MODE = 0x1153
|
1641
|
+
FILTER_MODE = 0x1154
|
1642
|
+
MIP_FILTER_MODE = 0x1155
|
1643
|
+
LOD_MIN = 0x1156
|
1644
|
+
LOD_MAX = 0x1157
|
1645
|
+
@@codes[0x1152] = 'NORMALIZED_COORDS'
|
1646
|
+
@@codes[0x1153] = 'ADDRESSING_MODE'
|
1647
|
+
@@codes[0x1154] = 'FILTER_MODE'
|
1648
|
+
@@codes[0x1155] = 'MIP_FILTER_MODE'
|
1649
|
+
@@codes[0x1156] = 'LOD_MIN'
|
1650
|
+
@@codes[0x1157] = 'LOD_MAX'
|
1651
|
+
#:startdoc:
|
1652
|
+
# Returns a String representing the Enum value name
|
1653
|
+
def name
|
1654
|
+
return @@codes[@val]
|
1655
|
+
end
|
1656
|
+
end
|
1657
|
+
|
1658
|
+
end
|
1524
1659
|
class GLsync < FFI::ManagedStruct
|
1525
1660
|
layout :dummy, :pointer
|
1526
1661
|
#:stopdoc:
|
@@ -1564,6 +1699,11 @@ module OpenCL
|
|
1564
1699
|
RGBx = 0x10BC
|
1565
1700
|
DEPTH = 0x10BD
|
1566
1701
|
DEPTH_STENCIL = 0x10BE
|
1702
|
+
sRGB = 0x10BF
|
1703
|
+
sRGBx = 0x10C0
|
1704
|
+
sRGBA = 0x10C1
|
1705
|
+
sBGRA = 0x10C2
|
1706
|
+
ABGR = 0x10C3
|
1567
1707
|
@@codes[0x10B0] = 'R'
|
1568
1708
|
@@codes[0x10B1] = 'A'
|
1569
1709
|
@@codes[0x10B2] = 'RG'
|
@@ -1579,8 +1719,12 @@ module OpenCL
|
|
1579
1719
|
@@codes[0x10BC] = 'RGBx'
|
1580
1720
|
@@codes[0x10BD] = 'DEPTH'
|
1581
1721
|
@@codes[0x10BE] = 'DEPTH_STENCIL'
|
1722
|
+
@@codes[0x10BF] = 'sRGB'
|
1723
|
+
@@codes[0x10C0] = 'sRGBx'
|
1724
|
+
@@codes[0x10C1] = 'sRGBA'
|
1725
|
+
@@codes[0x10C2] = 'sBGRA'
|
1726
|
+
@@codes[0x10C3] = 'ABGR'
|
1582
1727
|
#:startdoc:
|
1583
|
-
|
1584
1728
|
# Returns a String representing the Enum value name
|
1585
1729
|
def name
|
1586
1730
|
return @@codes[@val]
|
@@ -1623,7 +1767,6 @@ module OpenCL
|
|
1623
1767
|
@@codes[0x10DE] = 'FLOAT'
|
1624
1768
|
@@codes[0x10DF] = 'UNORM_INT24'
|
1625
1769
|
#:startdoc:
|
1626
|
-
|
1627
1770
|
# Returns a String representing the Enum value name
|
1628
1771
|
def name
|
1629
1772
|
return @@codes[@val]
|
@@ -1644,7 +1787,6 @@ module OpenCL
|
|
1644
1787
|
@@codes[0x1133] = 'REPEAT'
|
1645
1788
|
@@codes[0x1134] = 'MIRRORED_REPEAT'
|
1646
1789
|
#:startdoc:
|
1647
|
-
|
1648
1790
|
# Returns a String representing the Enum value name
|
1649
1791
|
def name
|
1650
1792
|
return @@codes[@val]
|
@@ -1659,7 +1801,6 @@ module OpenCL
|
|
1659
1801
|
@@codes[0x1140] = 'NEAREST'
|
1660
1802
|
@@codes[0x1141] = 'LINEAR'
|
1661
1803
|
#:startdoc:
|
1662
|
-
|
1663
1804
|
# Returns a String representing the Enum value name
|
1664
1805
|
def name
|
1665
1806
|
return @@codes[@val]
|
@@ -1711,6 +1852,11 @@ module OpenCL
|
|
1711
1852
|
MIGRATE_MEM_OBJECTS = 0x1206
|
1712
1853
|
FILL_BUFFER = 0x1207
|
1713
1854
|
FILL_IMAGE = 0x1208
|
1855
|
+
SVM_FREE = 0x1209
|
1856
|
+
SVM_MEMCPY = 0x120A
|
1857
|
+
SVM_MEMFILL = 0x120B
|
1858
|
+
SVM_MAP = 0x120C
|
1859
|
+
SVM_UNMAP = 0x120D
|
1714
1860
|
@@codes[0x11F0] = 'NDRANGE_KERNEL'
|
1715
1861
|
@@codes[0x11F1] = 'TASK'
|
1716
1862
|
@@codes[0x11F2] = 'NATIVE_KERNEL'
|
@@ -1736,8 +1882,12 @@ module OpenCL
|
|
1736
1882
|
@@codes[0x1206] = 'MIGRATE_MEM_OBJECTS'
|
1737
1883
|
@@codes[0x1207] = 'FILL_BUFFER'
|
1738
1884
|
@@codes[0x1208] = 'FILL_IMAGE'
|
1885
|
+
@@codes[0x1209] = 'SVM_FREE'
|
1886
|
+
@@codes[0x120A] = 'SVM_MEMCPY'
|
1887
|
+
@@codes[0x120B] = 'SVM_MEMFILL'
|
1888
|
+
@@codes[0x120C] = 'SVM_MAP'
|
1889
|
+
@@codes[0x120D] = 'SVM_UNMAP'
|
1739
1890
|
#:startdoc:
|
1740
|
-
|
1741
1891
|
# Returns a String representing the Enum value name
|
1742
1892
|
def name
|
1743
1893
|
return @@codes[@val]
|
@@ -1764,7 +1914,6 @@ module OpenCL
|
|
1764
1914
|
@@codes[0x2010] = 'TEXTURE1D_ARRAY'
|
1765
1915
|
@@codes[0x2011] = 'TEXTURE_BUFFER'
|
1766
1916
|
#:startdoc:
|
1767
|
-
|
1768
1917
|
# Returns a String representing the Enum value name
|
1769
1918
|
def name
|
1770
1919
|
return @@codes[@val]
|
@@ -1783,7 +1932,6 @@ module OpenCL
|
|
1783
1932
|
@@codes[-2] = 'ERROR'
|
1784
1933
|
@@codes[-3] = 'IN_PROGRESS'
|
1785
1934
|
#:startdoc:
|
1786
|
-
|
1787
1935
|
# Returns a String representing the Enum value name
|
1788
1936
|
def name
|
1789
1937
|
return @@codes[@val]
|
@@ -1802,7 +1950,6 @@ module OpenCL
|
|
1802
1950
|
@@codes[0x2] = 'SUBMITTED'
|
1803
1951
|
@@codes[0x3] = 'QUEUED'
|
1804
1952
|
#:startdoc:
|
1805
|
-
|
1806
1953
|
# Returns a String representing the Enum value name
|
1807
1954
|
def name
|
1808
1955
|
return @@codes[@val]
|
@@ -1829,6 +1976,13 @@ module OpenCL
|
|
1829
1976
|
SLICE_ALIGNMENT_QCOM = 0x40A3
|
1830
1977
|
#:startdoc:
|
1831
1978
|
end
|
1979
|
+
class Pipe < Mem
|
1980
|
+
layout :dummy, :pointer
|
1981
|
+
#:stopdoc:
|
1982
|
+
PACKET_SIZE = 0x1120
|
1983
|
+
MAX_PACKETS = 0x1121
|
1984
|
+
#:startdoc:
|
1985
|
+
end
|
1832
1986
|
attach_function :clGetPlatformIDs, [:cl_uint,:pointer,:pointer], :cl_int
|
1833
1987
|
attach_function :clGetPlatformInfo, [Platform,:cl_platform_info,:size_t,:pointer,:pointer], :cl_int
|
1834
1988
|
attach_function :clGetDeviceIDs, [Platform,:cl_device_type,:cl_uint,:pointer,:pointer], :cl_int
|
@@ -1840,7 +1994,6 @@ module OpenCL
|
|
1840
1994
|
attach_function :clRetainContext, [Context], :cl_int
|
1841
1995
|
attach_function :clReleaseContext, [Context], :cl_int
|
1842
1996
|
attach_function :clGetContextInfo, [Context,:cl_context_info,:size_t,:pointer,:pointer], :cl_int
|
1843
|
-
attach_function :clCreateCommandQueue, [Context,Device,:cl_command_queue_properties,:pointer], CommandQueue
|
1844
1997
|
attach_function :clRetainCommandQueue, [CommandQueue], :cl_int
|
1845
1998
|
attach_function :clReleaseCommandQueue, [CommandQueue], :cl_int
|
1846
1999
|
attach_function :clGetCommandQueueInfo, [CommandQueue,:cl_command_queue_info,:size_t,:pointer,:pointer], :cl_int
|
@@ -1853,7 +2006,6 @@ module OpenCL
|
|
1853
2006
|
attach_function :clGetImageInfo, [Mem,:cl_image_info,:size_t,:pointer,:pointer], :cl_int
|
1854
2007
|
callback :clSetMemObjectDestructorCallback_notify, [Mem.by_ref,:pointer], :void
|
1855
2008
|
attach_function :clSetMemObjectDestructorCallback, [Mem,:clSetMemObjectDestructorCallback_notify,:pointer], :cl_int
|
1856
|
-
attach_function :clCreateSampler, [Context,:cl_bool,:cl_addressing_mode,:cl_filter_mode,:pointer], Sampler
|
1857
2009
|
attach_function :clRetainSampler, [Sampler], :cl_int
|
1858
2010
|
attach_function :clReleaseSampler, [Sampler], :cl_int
|
1859
2011
|
attach_function :clGetSamplerInfo, [Sampler,:cl_sampler_info,:size_t,:pointer,:pointer], :cl_int
|
@@ -1898,7 +2050,6 @@ module OpenCL
|
|
1898
2050
|
attach_function :clEnqueueMapImage, [CommandQueue,Mem,:cl_bool,:cl_map_flags,:pointer,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer,:pointer], :pointer
|
1899
2051
|
attach_function :clEnqueueUnmapMemObject, [CommandQueue,Mem,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1900
2052
|
attach_function :clEnqueueNDRangeKernel, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1901
|
-
attach_function :clEnqueueTask, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer], :cl_int
|
1902
2053
|
callback :clEnqueueNativeKernel_notify, [:pointer], :void
|
1903
2054
|
attach_function :clEnqueueNativeKernel, [CommandQueue,:clEnqueueNativeKernel_notify,:pointer,:size_t,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1904
2055
|
attach_function :clCreateImage2D, [Context,:cl_mem_flags,:pointer,:size_t,:size_t,:size_t,:pointer,:pointer], Mem
|
@@ -1908,6 +2059,9 @@ module OpenCL
|
|
1908
2059
|
attach_function :clEnqueueBarrier, [CommandQueue], :cl_int
|
1909
2060
|
attach_function :clUnloadCompiler, [:void], :cl_int
|
1910
2061
|
attach_function :clGetExtensionFunctionAddress, [:pointer], :pointer
|
2062
|
+
attach_function :clCreateCommandQueue, [Context,Device,:cl_command_queue_properties,:pointer], CommandQueue
|
2063
|
+
attach_function :clCreateSampler, [Context,:cl_bool,:cl_addressing_mode,:cl_filter_mode,:pointer], Sampler
|
2064
|
+
attach_function :clEnqueueTask, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer], :cl_int
|
1911
2065
|
attach_function :clCreateFromGLBuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
1912
2066
|
attach_function :clCreateFromGLRenderbuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
1913
2067
|
attach_function :clGetGLObjectInfo, [Mem,:pointer,:pointer], :cl_int
|
@@ -1935,6 +2089,24 @@ module OpenCL
|
|
1935
2089
|
attach_function :clEnqueueBarrierWithWaitList, [CommandQueue,:cl_uint,:pointer,:pointer], :cl_int
|
1936
2090
|
attach_function :clGetExtensionFunctionAddressForPlatform, [Platform,:pointer], :pointer
|
1937
2091
|
attach_function :clCreateFromGLTexture, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
2092
|
+
begin
|
2093
|
+
attach_function :clCreateCommandQueueWithProperties, [Context,Device,:pointer,:pointer], CommandQueue
|
2094
|
+
attach_function :clCreatePipe, [Context,:cl_mem_flags,:cl_uint,:cl_uint,:pointer,:pointer], Mem
|
2095
|
+
attach_function :clGetPipeInfo, [Mem,:cl_pipe_info,:size_t,:pointer,:pointer], :cl_int
|
2096
|
+
attach_function :clSVMAlloc, [Context,:cl_svm_mem_flags,:size_t,:cl_uint], :pointer
|
2097
|
+
attach_function :clSVMFree, [Context,:pointer], :void
|
2098
|
+
attach_function :clCreateSamplerWithProperties, [Context,:pointer,:pointer], Sampler
|
2099
|
+
attach_function :clSetKernelArgSVMPointer, [Kernel,:cl_uint,:pointer], :cl_int
|
2100
|
+
attach_function :clSetKernelExecInfo, [Kernel,:cl_kernel_exec_info,:size_t,:pointer], :cl_int
|
2101
|
+
callback :clEnqueueSVMFree_notify, [CommandQueue.by_ref,:cl_uint,:pointer,:pointer], :void
|
2102
|
+
attach_function :clEnqueueSVMFree, [CommandQueue,:cl_uint,:pointer,:clEnqueueSVMFree_notify,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
2103
|
+
attach_function :clEnqueueSVMMemcpy, [CommandQueue,:cl_bool,:pointer,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
2104
|
+
attach_function :clEnqueueSVMMemFill, [CommandQueue,:pointer,:pointer,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
2105
|
+
attach_function :clEnqueueSVMMap, [CommandQueue,:cl_bool,:cl_map_flags,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
2106
|
+
attach_function :clEnqueueSVMUnmap, [CommandQueue,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
2107
|
+
rescue FFI::NotFoundError => e
|
2108
|
+
STDERR.puts "Warning OpenCL 1.2 loader detected!"
|
2109
|
+
end
|
1938
2110
|
rescue FFI::NotFoundError => e
|
1939
2111
|
STDERR.puts "Warning OpenCL 1.1 loader detected!"
|
1940
2112
|
end
|