ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/OpenCL/OpenCL.pm
(Generate patch)

Comparing OpenCL/OpenCL.pm (file contents):
Revision 1.21 by root, Sun Nov 20 10:21:27 2011 UTC vs.
Revision 1.47 by root, Sat Apr 21 19:48:58 2012 UTC

101 101
102Best run this once to get a feel for the platforms and devices in your 102Best run this once to get a feel for the platforms and devices in your
103system. 103system.
104 104
105 for my $platform (OpenCL::platforms) { 105 for my $platform (OpenCL::platforms) {
106 printf "platform: %s\n", $platform->info (OpenCL::PLATFORM_NAME); 106 printf "platform: %s\n", $platform->name;
107 printf "extensions: %s\n", $platform->info (OpenCL::PLATFORM_EXTENSIONS); 107 printf "extensions: %s\n", $platform->extensions;
108 for my $device ($platform->devices) { 108 for my $device ($platform->devices) {
109 printf "+ device: %s\n", $device->info (OpenCL::DEVICE_NAME); 109 printf "+ device: %s\n", $device->name;
110 my $ctx = $device->context; 110 my $ctx = $platform->context (undef, [$device]);
111 # do stuff 111 # do stuff
112 } 112 }
113 } 113 }
114 114
115=head2 Get a useful context and a command queue. 115=head2 Get a useful context and a command queue.
149 149
150=head2 Create and build a program, then create a kernel out of one of its 150=head2 Create and build a program, then create a kernel out of one of its
151functions. 151functions.
152 152
153 my $src = ' 153 my $src = '
154 __kernel void 154 kernel void
155 squareit (__global float *input, __global float *output) 155 squareit (global float *input, global float *output)
156 { 156 {
157 $id = get_global_id (0); 157 $id = get_global_id (0);
158 output [id] = input [id] * input [id]; 158 output [id] = input [id] * input [id];
159 } 159 }
160 '; 160 ';
161 161
162 my $prog = $ctx->program_with_source ($src); 162 my $prog = $ctx->program_with_source ($src);
163 163
164 # build croaks on compile errors, so catch it and print the compile errors 164 # build croaks on compile errors, so catch it and print the compile errors
165 eval { $prog->build ($dev); 1 } 165 eval { $prog->build ($dev, "-cl-fast-relaxed-math"); 1 }
166 or die $prog->build_info ($dev, OpenCL::PROGRAM_BUILD_LOG); 166 or die $prog->build_log;
167 167
168 my $kernel = $prog->kernel ("squareit"); 168 my $kernel = $prog->kernel ("squareit");
169 169
170=head2 Create some input and output float buffers, then call the 170=head2 Create some input and output float buffers, then call the
171'squareit' kernel on them. 171'squareit' kernel on them.
210 # enqueue an async read 210 # enqueue an async read
211 $ev = $queue->enqueue_read_buffer ($output, 0, 0, OpenCL::SIZEOF_FLOAT * 4, my $data, $ev); 211 $ev = $queue->enqueue_read_buffer ($output, 0, 0, OpenCL::SIZEOF_FLOAT * 4, my $data, $ev);
212 212
213 # wait for the last event to complete 213 # wait for the last event to complete
214 $ev->wait; 214 $ev->wait;
215
216=head2 Use the OpenGL module to share a texture between OpenCL and OpenGL and draw some julia
217set tunnel effect.
218
219This is quite a long example to get you going.
220
221 use OpenGL ":all";
222 use OpenCL;
223
224 # open a window and create a gl texture
225 OpenGL::glpOpenWindow width => 256, height => 256;
226 my $texid = glGenTextures_p 1;
227 glBindTexture GL_TEXTURE_2D, $texid;
228 glTexImage2D_c GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0;
229
230 # find and use the first opencl device that let's us get a shared opengl context
231 my $platform;
232 my $dev;
233 my $ctx;
234
235 for (OpenCL::platforms) {
236 $platform = $_;
237 for ($platform->devices) {
238 $dev = $_;
239 $ctx = $platform->context ([OpenCL::GLX_DISPLAY_KHR, undef, OpenCL::GL_CONTEXT_KHR, undef], [$dev])
240 and last;
241 }
242 }
243
244 $ctx
245 or die "cannot find suitable OpenCL device\n";
246
247 my $queue = $ctx->queue ($dev);
248
249 # now attach an opencl image2d object to the opengl texture
250 my $tex = $ctx->gl_texture2d (OpenCL::MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, $texid);
251
252 # now the boring opencl code
253 my $src = <<EOF;
254 kernel void
255 juliatunnel (write_only image2d_t img, float time)
256 {
257 float2 p = (float2)(get_global_id (0), get_global_id (1)) / 256.f * 2.f - 1.f;
258
259 float2 m = (float2)(1.f, p.y) / fabs (p.x);
260 m.x = fabs (fmod (m.x + time * 0.05f, 4.f)) - 2.f;
261
262 float2 z = m;
263 float2 c = (float2)(sin (time * 0.05005), cos (time * 0.06001));
264
265 for (int i = 0; i < 25 && dot (z, z) < 4.f; ++i)
266 z = (float2)(z.x * z.x - z.y * z.y, 2.f * z.x * z.y) + c;
267
268 float3 colour = (float3)(z.x, z.y, z.x * z.y);
269 write_imagef (img, (int2)(get_global_id (0), get_global_id (1)), (float4)(colour * p.x * p.x, 1.));
270 }
271 EOF
272 my $prog = $ctx->program_with_source ($src);
273 eval { $prog->build ($dev); 1 }
274 or die $prog->build_log ($dev);
275
276 my $kernel = $prog->kernel ("juliatunnel");
277
278 # program compiled, kernel ready, now draw and loop
279
280 for (my $time; ; ++$time) {
281 # acquire objects from opengl
282 $queue->enqueue_acquire_gl_objects ([$tex]);
283
284 # configure and run our kernel
285 $kernel->set_image2d (0, $tex);
286 $kernel->set_float (1, $time);
287 $queue->enqueue_nd_range_kernel ($kernel, undef, [256, 256], undef);
288
289 # release objects to opengl again
290 $queue->enqueue_release_gl_objects ([$tex]);
291
292 # wait
293 $queue->finish;
294
295 # now draw the texture, the defaults should be all right
296 glTexParameterf GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST;
297
298 glEnable GL_TEXTURE_2D;
299 glBegin GL_QUADS;
300 glTexCoord2f 0, 1; glVertex3i -1, -1, -1;
301 glTexCoord2f 0, 0; glVertex3i 1, -1, -1;
302 glTexCoord2f 1, 0; glVertex3i 1, 1, -1;
303 glTexCoord2f 1, 1; glVertex3i -1, 1, -1;
304 glEnd;
305
306 glXSwapBuffers;
307
308 select undef, undef, undef, 1/60;
309 }
215 310
216=head1 DOCUMENTATION 311=head1 DOCUMENTATION
217 312
218=head2 BASIC CONVENTIONS 313=head2 BASIC CONVENTIONS
219 314
241=item * Structures are often specified by flattening out their components 336=item * Structures are often specified by flattening out their components
242as with short vectors, and returned as arrayrefs. 337as with short vectors, and returned as arrayrefs.
243 338
244=item * When enqueuing commands, the wait list is specified by adding 339=item * When enqueuing commands, the wait list is specified by adding
245extra arguments to the function - anywhere a C<$wait_events...> argument 340extra arguments to the function - anywhere a C<$wait_events...> argument
246is documented this can be any number of event objects. 341is documented this can be any number of event objects. As an extsnion
342implemented by this module, C<undef> values will be ignored in the event
343list.
247 344
248=item * When enqueuing commands, if the enqueue method is called in void 345=item * When enqueuing commands, if the enqueue method is called in void
249context, no event is created. In all other contexts an event is returned 346context, no event is created. In all other contexts an event is returned
250by the method. 347by the method.
251 348
271 ulong IV - Q 368 ulong IV - Q
272 float NV float f 369 float NV float f
273 half IV ushort S 370 half IV ushort S
274 double NV double d 371 double NV double d
275 372
373=head2 GLX SUPPORT
374
375Due to the sad state that OpenGL support is in in Perl (mostly the OpenGL
376module, which has little to no documentation and has little to no support
377for glX), this module, as a special extension, treats context creation
378properties C<OpenCL::GLX_DISPLAY_KHR> and C<OpenCL::GL_CONTEXT_KHR>
379specially: If either or both of these are C<undef>, then the OpenCL
380module tries to dynamically resolve C<glXGetCurrentDisplay> and
381C<glXGetCurrentContext>, call these functions and use their return values
382instead.
383
384For this to work, the OpenGL library must be loaded, a GLX context must
385have been created and be made current, and C<dlsym> must be available and
386capable of finding the function via C<RTLD_DEFAULT>.
387
276=head2 THE OpenCL PACKAGE 388=head2 THE OpenCL PACKAGE
277 389
278=over 4 390=over 4
279 391
280=item $int = OpenCL::errno 392=item $int = OpenCL::errno
286 398
287Comverts an error value into a human readable string. 399Comverts an error value into a human readable string.
288 400
289=item $str = OpenCL::enum2str $enum 401=item $str = OpenCL::enum2str $enum
290 402
291Converts most enum values (inof parameter names, image format constants, 403Converts most enum values (of parameter names, image format constants,
292object types, addressing and filter modes, command types etc.) into a 404object types, addressing and filter modes, command types etc.) into a
293human readbale string. When confronted with some random integer it can be 405human readable string. When confronted with some random integer it can be
294very helpful to pass it through this function to maybe get some readable 406very helpful to pass it through this function to maybe get some readable
295string out of it. 407string out of it.
296 408
297=item @platforms = OpenCL::platforms 409=item @platforms = OpenCL::platforms
298 410
322 434
323Returns a list of matching OpenCL::Device objects. 435Returns a list of matching OpenCL::Device objects.
324 436
325=item $ctx = $platform->context_from_type ($properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $notify = undef) 437=item $ctx = $platform->context_from_type ($properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $notify = undef)
326 438
327Tries to create a context. Never worked for me, and you need devices explitly anyway. 439Tries to create a context. Never worked for me, and you need devices explicitly anyway.
328 440
329L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html> 441L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html>
330 442
331=item $ctx = $device->context ($properties = undef, @$devices, $notify = undef) 443=item $ctx = $platform->context ($properties = undef, @$devices, $notify = undef)
332 444
333Create a new OpenCL::Context object using the given device object(s)- a 445Create a new OpenCL::Context object using the given device object(s)- a
334CL_CONTEXT_PLATFORM property is supplied automatically. 446CL_CONTEXT_PLATFORM property is supplied automatically.
335 447
336L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html> 448L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html>
337 449
338=item $packed_value = $platform->info ($name) 450=item $packed_value = $platform->info ($name)
339 451
340Calls C<clGetPlatformInfo> and returns the packed, raw value - for 452Calls C<clGetPlatformInfo> and returns the packed, raw value - for
341strings, this will be the string, for other values you probably need to 453strings, this will be the string (possibly including terminating \0), for
342use the correct C<unpack>. 454other values you probably need to use the correct C<unpack>.
343 455
344It's best to avoid this method and use one of the predefined C<get_*> 456It's best to avoid this method and use one of the following convenience
345methods. 457wrappers.
346 458
347L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformInfo.html> 459L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformInfo.html>
348 460
349=for gengetinfo begin platform 461=for gengetinfo begin platform
350 462
351
352=item $string = $platform->profile 463=item $string = $platform->profile
353 464
354Calls C<clGetPlatformInfo> with C<CL_PLATFORM_PROFILE> and returns the result(s). 465Calls C<clGetPlatformInfo> with C<CL_PLATFORM_PROFILE> and returns the result.
355 466
356=item $string = $platform->version 467=item $string = $platform->version
357 468
358Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VERSION> and returns the result(s). 469Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VERSION> and returns the result.
359 470
360=item $string = $platform->name 471=item $string = $platform->name
361 472
362Calls C<clGetPlatformInfo> with C<CL_PLATFORM_NAME> and returns the result(s). 473Calls C<clGetPlatformInfo> with C<CL_PLATFORM_NAME> and returns the result.
363 474
364=item $string = $platform->vendor 475=item $string = $platform->vendor
365 476
366Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VENDOR> and returns the result(s). 477Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VENDOR> and returns the result.
367 478
368=item $string = $platform->extensions 479=item $string = $platform->extensions
369 480
370Calls C<clGetPlatformInfo> with C<CL_PLATFORM_EXTENSIONS> and returns the result(s). 481Calls C<clGetPlatformInfo> with C<CL_PLATFORM_EXTENSIONS> and returns the result.
371 482
372=for gengetinfo end platform 483=for gengetinfo end platform
373 484
374=back 485=back
375 486
383 494
384L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html> 495L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html>
385 496
386=for gengetinfo begin device 497=for gengetinfo begin device
387 498
388
389=item $device_type = $device->type 499=item $device_type = $device->type
390 500
391Calls C<clGetDeviceInfo> with C<CL_DEVICE_TYPE> and returns the result(s). 501Calls C<clGetDeviceInfo> with C<CL_DEVICE_TYPE> and returns the result.
392 502
393=item $uint = $device->vendor_id 503=item $uint = $device->vendor_id
394 504
395Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR_ID> and returns the result(s). 505Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR_ID> and returns the result.
396 506
397=item $uint = $device->max_compute_units 507=item $uint = $device->max_compute_units
398 508
399Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_COMPUTE_UNITS> and returns the result(s). 509Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_COMPUTE_UNITS> and returns the result.
400 510
401=item $uint = $device->max_work_item_dimensions 511=item $uint = $device->max_work_item_dimensions
402 512
403Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS> and returns the result(s). 513Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS> and returns the result.
404 514
405=item $int = $device->max_work_group_size 515=item $int = $device->max_work_group_size
406 516
407Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_GROUP_SIZE> and returns the result(s). 517Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_GROUP_SIZE> and returns the result.
408 518
409=item @ints = $device->max_work_item_sizes 519=item @ints = $device->max_work_item_sizes
410 520
411Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_SIZES> and returns the result(s). 521Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_SIZES> and returns the result.
412 522
413=item $uint = $device->preferred_vector_width_char 523=item $uint = $device->preferred_vector_width_char
414 524
415Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR> and returns the result(s). 525Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR> and returns the result.
416 526
417=item $uint = $device->preferred_vector_width_short 527=item $uint = $device->preferred_vector_width_short
418 528
419Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT> and returns the result(s). 529Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT> and returns the result.
420 530
421=item $uint = $device->preferred_vector_width_int 531=item $uint = $device->preferred_vector_width_int
422 532
423Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT> and returns the result(s). 533Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT> and returns the result.
424 534
425=item $uint = $device->preferred_vector_width_long 535=item $uint = $device->preferred_vector_width_long
426 536
427Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG> and returns the result(s). 537Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG> and returns the result.
428 538
429=item $uint = $device->preferred_vector_width_float 539=item $uint = $device->preferred_vector_width_float
430 540
431Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT> and returns the result(s). 541Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT> and returns the result.
432 542
433=item $uint = $device->preferred_vector_width_double 543=item $uint = $device->preferred_vector_width_double
434 544
435Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE> and returns the result(s). 545Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE> and returns the result.
436 546
437=item $uint = $device->max_clock_frequency 547=item $uint = $device->max_clock_frequency
438 548
439Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CLOCK_FREQUENCY> and returns the result(s). 549Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CLOCK_FREQUENCY> and returns the result.
440 550
441=item $bitfield = $device->address_bits 551=item $bitfield = $device->address_bits
442 552
443Calls C<clGetDeviceInfo> with C<CL_DEVICE_ADDRESS_BITS> and returns the result(s). 553Calls C<clGetDeviceInfo> with C<CL_DEVICE_ADDRESS_BITS> and returns the result.
444 554
445=item $uint = $device->max_read_image_args 555=item $uint = $device->max_read_image_args
446 556
447Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_READ_IMAGE_ARGS> and returns the result(s). 557Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_READ_IMAGE_ARGS> and returns the result.
448 558
449=item $uint = $device->max_write_image_args 559=item $uint = $device->max_write_image_args
450 560
451Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WRITE_IMAGE_ARGS> and returns the result(s). 561Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WRITE_IMAGE_ARGS> and returns the result.
452 562
453=item $ulong = $device->max_mem_alloc_size 563=item $ulong = $device->max_mem_alloc_size
454 564
455Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_MEM_ALLOC_SIZE> and returns the result(s). 565Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_MEM_ALLOC_SIZE> and returns the result.
456 566
457=item $int = $device->image2d_max_width 567=item $int = $device->image2d_max_width
458 568
459Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_WIDTH> and returns the result(s). 569Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_WIDTH> and returns the result.
460 570
461=item $int = $device->image2d_max_height 571=item $int = $device->image2d_max_height
462 572
463Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_HEIGHT> and returns the result(s). 573Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_HEIGHT> and returns the result.
464 574
465=item $int = $device->image3d_max_width 575=item $int = $device->image3d_max_width
466 576
467Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_WIDTH> and returns the result(s). 577Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_WIDTH> and returns the result.
468 578
469=item $int = $device->image3d_max_height 579=item $int = $device->image3d_max_height
470 580
471Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_HEIGHT> and returns the result(s). 581Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_HEIGHT> and returns the result.
472 582
473=item $int = $device->image3d_max_depth 583=item $int = $device->image3d_max_depth
474 584
475Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_DEPTH> and returns the result(s). 585Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_DEPTH> and returns the result.
476 586
477=item $uint = $device->image_support 587=item $uint = $device->image_support
478 588
479Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE_SUPPORT> and returns the result(s). 589Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE_SUPPORT> and returns the result.
480 590
481=item $int = $device->max_parameter_size 591=item $int = $device->max_parameter_size
482 592
483Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_PARAMETER_SIZE> and returns the result(s). 593Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_PARAMETER_SIZE> and returns the result.
484 594
485=item $uint = $device->max_samplers 595=item $uint = $device->max_samplers
486 596
487Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_SAMPLERS> and returns the result(s). 597Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_SAMPLERS> and returns the result.
488 598
489=item $uint = $device->mem_base_addr_align 599=item $uint = $device->mem_base_addr_align
490 600
491Calls C<clGetDeviceInfo> with C<CL_DEVICE_MEM_BASE_ADDR_ALIGN> and returns the result(s). 601Calls C<clGetDeviceInfo> with C<CL_DEVICE_MEM_BASE_ADDR_ALIGN> and returns the result.
492 602
493=item $uint = $device->min_data_type_align_size 603=item $uint = $device->min_data_type_align_size
494 604
495Calls C<clGetDeviceInfo> with C<CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE> and returns the result(s). 605Calls C<clGetDeviceInfo> with C<CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE> and returns the result.
496 606
497=item $device_fp_config = $device->single_fp_config 607=item $device_fp_config = $device->single_fp_config
498 608
499Calls C<clGetDeviceInfo> with C<CL_DEVICE_SINGLE_FP_CONFIG> and returns the result(s). 609Calls C<clGetDeviceInfo> with C<CL_DEVICE_SINGLE_FP_CONFIG> and returns the result.
500 610
501=item $device_mem_cache_type = $device->global_mem_cache_type 611=item $device_mem_cache_type = $device->global_mem_cache_type
502 612
503Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_TYPE> and returns the result(s). 613Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_TYPE> and returns the result.
504 614
505=item $uint = $device->global_mem_cacheline_size 615=item $uint = $device->global_mem_cacheline_size
506 616
507Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE> and returns the result(s). 617Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE> and returns the result.
508 618
509=item $ulong = $device->global_mem_cache_size 619=item $ulong = $device->global_mem_cache_size
510 620
511Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_SIZE> and returns the result(s). 621Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_SIZE> and returns the result.
512 622
513=item $ulong = $device->global_mem_size 623=item $ulong = $device->global_mem_size
514 624
515Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_SIZE> and returns the result(s). 625Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_SIZE> and returns the result.
516 626
517=item $ulong = $device->max_constant_buffer_size 627=item $ulong = $device->max_constant_buffer_size
518 628
519Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE> and returns the result(s). 629Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE> and returns the result.
520 630
521=item $uint = $device->max_constant_args 631=item $uint = $device->max_constant_args
522 632
523Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_ARGS> and returns the result(s). 633Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_ARGS> and returns the result.
524 634
525=item $device_local_mem_type = $device->local_mem_type 635=item $device_local_mem_type = $device->local_mem_type
526 636
527Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_TYPE> and returns the result(s). 637Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_TYPE> and returns the result.
528 638
529=item $ulong = $device->local_mem_size 639=item $ulong = $device->local_mem_size
530 640
531Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_SIZE> and returns the result(s). 641Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_SIZE> and returns the result.
532 642
533=item $boolean = $device->error_correction_support 643=item $boolean = $device->error_correction_support
534 644
535Calls C<clGetDeviceInfo> with C<CL_DEVICE_ERROR_CORRECTION_SUPPORT> and returns the result(s). 645Calls C<clGetDeviceInfo> with C<CL_DEVICE_ERROR_CORRECTION_SUPPORT> and returns the result.
536 646
537=item $int = $device->profiling_timer_resolution 647=item $int = $device->profiling_timer_resolution
538 648
539Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILING_TIMER_RESOLUTION> and returns the result(s). 649Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILING_TIMER_RESOLUTION> and returns the result.
540 650
541=item $boolean = $device->endian_little 651=item $boolean = $device->endian_little
542 652
543Calls C<clGetDeviceInfo> with C<CL_DEVICE_ENDIAN_LITTLE> and returns the result(s). 653Calls C<clGetDeviceInfo> with C<CL_DEVICE_ENDIAN_LITTLE> and returns the result.
544 654
545=item $boolean = $device->available 655=item $boolean = $device->available
546 656
547Calls C<clGetDeviceInfo> with C<CL_DEVICE_AVAILABLE> and returns the result(s). 657Calls C<clGetDeviceInfo> with C<CL_DEVICE_AVAILABLE> and returns the result.
548 658
549=item $boolean = $device->compiler_available 659=item $boolean = $device->compiler_available
550 660
551Calls C<clGetDeviceInfo> with C<CL_DEVICE_COMPILER_AVAILABLE> and returns the result(s). 661Calls C<clGetDeviceInfo> with C<CL_DEVICE_COMPILER_AVAILABLE> and returns the result.
552 662
553=item $device_exec_capabilities = $device->execution_capabilities 663=item $device_exec_capabilities = $device->execution_capabilities
554 664
555Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXECUTION_CAPABILITIES> and returns the result(s). 665Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXECUTION_CAPABILITIES> and returns the result.
556 666
557=item $command_queue_properties = $device->properties 667=item $command_queue_properties = $device->properties
558 668
559Calls C<clGetDeviceInfo> with C<CL_DEVICE_QUEUE_PROPERTIES> and returns the result(s). 669Calls C<clGetDeviceInfo> with C<CL_DEVICE_QUEUE_PROPERTIES> and returns the result.
560 670
561=item $ = $device->platform 671=item $ = $device->platform
562 672
563Calls C<clGetDeviceInfo> with C<CL_DEVICE_PLATFORM> and returns the result(s). 673Calls C<clGetDeviceInfo> with C<CL_DEVICE_PLATFORM> and returns the result.
564 674
565=item $string = $device->name 675=item $string = $device->name
566 676
567Calls C<clGetDeviceInfo> with C<CL_DEVICE_NAME> and returns the result(s). 677Calls C<clGetDeviceInfo> with C<CL_DEVICE_NAME> and returns the result.
568 678
569=item $string = $device->vendor 679=item $string = $device->vendor
570 680
571Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR> and returns the result(s). 681Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR> and returns the result.
572 682
573=item $string = $device->driver_version 683=item $string = $device->driver_version
574 684
575Calls C<clGetDeviceInfo> with C<CL_DRIVER_VERSION> and returns the result(s). 685Calls C<clGetDeviceInfo> with C<CL_DRIVER_VERSION> and returns the result.
576 686
577=item $string = $device->profile 687=item $string = $device->profile
578 688
579Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILE> and returns the result(s). 689Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILE> and returns the result.
580 690
581=item $string = $device->version 691=item $string = $device->version
582 692
583Calls C<clGetDeviceInfo> with C<CL_DEVICE_VERSION> and returns the result(s). 693Calls C<clGetDeviceInfo> with C<CL_DEVICE_VERSION> and returns the result.
584 694
585=item $string = $device->extensions 695=item $string = $device->extensions
586 696
587Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXTENSIONS> and returns the result(s). 697Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXTENSIONS> and returns the result.
588 698
589=item $uint = $device->preferred_vector_width_half 699=item $uint = $device->preferred_vector_width_half
590 700
591Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF> and returns the result(s). 701Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF> and returns the result.
592 702
593=item $uint = $device->native_vector_width_char 703=item $uint = $device->native_vector_width_char
594 704
595Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR> and returns the result(s). 705Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR> and returns the result.
596 706
597=item $uint = $device->native_vector_width_short 707=item $uint = $device->native_vector_width_short
598 708
599Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT> and returns the result(s). 709Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT> and returns the result.
600 710
601=item $uint = $device->native_vector_width_int 711=item $uint = $device->native_vector_width_int
602 712
603Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_INT> and returns the result(s). 713Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_INT> and returns the result.
604 714
605=item $uint = $device->native_vector_width_long 715=item $uint = $device->native_vector_width_long
606 716
607Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG> and returns the result(s). 717Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG> and returns the result.
608 718
609=item $uint = $device->native_vector_width_float 719=item $uint = $device->native_vector_width_float
610 720
611Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT> and returns the result(s). 721Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT> and returns the result.
612 722
613=item $uint = $device->native_vector_width_double 723=item $uint = $device->native_vector_width_double
614 724
615Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE> and returns the result(s). 725Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE> and returns the result.
616 726
617=item $uint = $device->native_vector_width_half 727=item $uint = $device->native_vector_width_half
618 728
619Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF> and returns the result(s). 729Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF> and returns the result.
620 730
621=item $device_fp_config = $device->double_fp_config 731=item $device_fp_config = $device->double_fp_config
622 732
623Calls C<clGetDeviceInfo> with C<CL_DEVICE_DOUBLE_FP_CONFIG> and returns the result(s). 733Calls C<clGetDeviceInfo> with C<CL_DEVICE_DOUBLE_FP_CONFIG> and returns the result.
624 734
625=item $device_fp_config = $device->half_fp_config 735=item $device_fp_config = $device->half_fp_config
626 736
627Calls C<clGetDeviceInfo> with C<CL_DEVICE_HALF_FP_CONFIG> and returns the result(s). 737Calls C<clGetDeviceInfo> with C<CL_DEVICE_HALF_FP_CONFIG> and returns the result.
628 738
629=item $boolean = $device->host_unified_memory 739=item $boolean = $device->host_unified_memory
630 740
631Calls C<clGetDeviceInfo> with C<CL_DEVICE_HOST_UNIFIED_MEMORY> and returns the result(s). 741Calls C<clGetDeviceInfo> with C<CL_DEVICE_HOST_UNIFIED_MEMORY> and returns the result.
632 742
633=item $device = $device->parent_device_ext 743=item $device = $device->parent_device_ext
634 744
635Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARENT_DEVICE_EXT> and returns the result(s). 745Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARENT_DEVICE_EXT> and returns the result.
636 746
637=item @device_partition_property_exts = $device->partition_types_ext 747=item @device_partition_property_exts = $device->partition_types_ext
638 748
639Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_TYPES_EXT> and returns the result(s). 749Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_TYPES_EXT> and returns the result.
640 750
641=item @device_partition_property_exts = $device->affinity_domains_ext 751=item @device_partition_property_exts = $device->affinity_domains_ext
642 752
643Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result(s). 753Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result.
644 754
645=item $uint = $device->reference_count_ext 755=item $uint = $device->reference_count_ext
646 756
647Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result(s). 757Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result.
648 758
649=item @device_partition_property_exts = $device->partition_style_ext 759=item @device_partition_property_exts = $device->partition_style_ext
650 760
651Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_STYLE_EXT> and returns the result(s). 761Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_STYLE_EXT> and returns the result.
652 762
653=for gengetinfo end device 763=for gengetinfo end device
654 764
655=back 765=back
656 766
662 772
663Create a new OpenCL::Queue object from the context and the given device. 773Create a new OpenCL::Queue object from the context and the given device.
664 774
665L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html> 775L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html>
666 776
777Example: create an out-of-order queue.
778
779 $queue = $ctx->queue ($device, OpenCL::QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE);
780
667=item $ev = $ctx->user_event 781=item $ev = $ctx->user_event
668 782
669Creates a new OpenCL::UserEvent object. 783Creates a new OpenCL::UserEvent object.
670 784
671L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateUserEvent.html> 785L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateUserEvent.html>
672 786
673=item $buf = $ctx->buffer ($flags, $len) 787=item $buf = $ctx->buffer ($flags, $len)
674 788
675Creates a new OpenCL::Buffer object with the given flags and octet-size. 789Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object with the
790given flags and octet-size.
676 791
677L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateBuffer.html> 792L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateBuffer.html>
678 793
679=item $buf = $ctx->buffer_sv ($flags, $data) 794=item $buf = $ctx->buffer_sv ($flags, $data)
680 795
681Creates a new OpenCL::Buffer object and initialise it with the given data values. 796Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object and
797initialise it with the given data values.
682 798
683=item $img = $ctx->image2d ($flags, $channel_order, $channel_type, $width, $height, $row_pitch = 0, $data = undef) 799=item $img = $ctx->image2d ($flags, $channel_order, $channel_type, $width, $height, $row_pitch = 0, $data = undef)
684 800
685Creates a new OpenCL::Image2D object and optionally initialises it with the given data values. 801Creates a new OpenCL::Image2D object and optionally initialises it with
802the given data values.
686 803
687L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage2D.html> 804L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage2D.html>
688 805
689=item $img = $ctx->image3d ($flags, $channel_order, $channel_type, $width, $height, $depth, $row_pitch = 0, $slice_pitch = 0, $data = undef) 806=item $img = $ctx->image3d ($flags, $channel_order, $channel_type, $width, $height, $depth, $row_pitch = 0, $slice_pitch = 0, $data = undef)
690 807
691Creates a new OpenCL::Image3D object and optionally initialises it with the given data values. 808Creates a new OpenCL::Image3D object and optionally initialises it with
809the given data values.
692 810
693L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage3D.html> 811L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage3D.html>
812
813=item $buffer = $ctx->gl_buffer ($flags, $bufobj)
814
815Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object that refers to the given
816OpenGL buffer object.
817
818http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLBuffer.html
819
820=item $img = $ctx->gl_texture ($flags, $target, $miplevel, $texture)
821
822Creates a new OpenCL::Image object that refers to the given OpenGL
823texture object or buffer.
824
825http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clCreateFromGLTexture.html
826
827=item $img = $ctx->gl_texture2d ($flags, $target, $miplevel, $texture)
828
829Creates a new OpenCL::Image2D object that refers to the given OpenGL
8302D texture object.
831
832http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture2D.html
833
834=item $img = $ctx->gl_texture3d ($flags, $target, $miplevel, $texture)
835
836Creates a new OpenCL::Image3D object that refers to the given OpenGL
8373D texture object.
838
839http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture3D.html
840
841=item $ctx->gl_renderbuffer ($flags, $renderbuffer)
842
843Creates a new OpenCL::Image2D object that refers to the given OpenGL
844render buffer.
845
846http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLRenderbuffer.html
694 847
695=item @formats = $ctx->supported_image_formats ($flags, $image_type) 848=item @formats = $ctx->supported_image_formats ($flags, $image_type)
696 849
697Returns a list of matching image formats - each format is an arrayref with 850Returns a list of matching image formats - each format is an arrayref with
698two values, $channel_order and $channel_type, in it. 851two values, $channel_order and $channel_type, in it.
717 870
718L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html> 871L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html>
719 872
720=for gengetinfo begin context 873=for gengetinfo begin context
721 874
722
723=item $uint = $context->reference_count 875=item $uint = $context->reference_count
724 876
725Calls C<clGetContextInfo> with C<CL_CONTEXT_REFERENCE_COUNT> and returns the result(s). 877Calls C<clGetContextInfo> with C<CL_CONTEXT_REFERENCE_COUNT> and returns the result.
726 878
727=item @devices = $context->devices 879=item @devices = $context->devices
728 880
729Calls C<clGetContextInfo> with C<CL_CONTEXT_DEVICES> and returns the result(s). 881Calls C<clGetContextInfo> with C<CL_CONTEXT_DEVICES> and returns the result.
730 882
731=item @property_ints = $context->properties 883=item @property_ints = $context->properties
732 884
733Calls C<clGetContextInfo> with C<CL_CONTEXT_PROPERTIES> and returns the result(s). 885Calls C<clGetContextInfo> with C<CL_CONTEXT_PROPERTIES> and returns the result.
734 886
735=item $uint = $context->num_devices 887=item $uint = $context->num_devices
736 888
737Calls C<clGetContextInfo> with C<CL_CONTEXT_NUM_DEVICES> and returns the result(s). 889Calls C<clGetContextInfo> with C<CL_CONTEXT_NUM_DEVICES> and returns the result.
738 890
739=for gengetinfo end context 891=for gengetinfo end context
740 892
741=back 893=back
742 894
750for completion, unless the method is called in void context, in which case 902for completion, unless the method is called in void context, in which case
751no event object is created. 903no event object is created.
752 904
753They also allow you to specify any number of other event objects that this 905They also allow you to specify any number of other event objects that this
754request has to wait for before it starts executing, by simply passing the 906request has to wait for before it starts executing, by simply passing the
755event objects as extra parameters to the enqueue methods. 907event objects as extra parameters to the enqueue methods. To simplify
908program design, this module ignores any C<undef> values in the list of
909events. This makes it possible to code operations such as this, without
910having to put a valid event object into C<$event> first:
911
912 $event = $queue->enqueue_xxx (..., $event);
756 913
757Queues execute in-order by default, without any parallelism, so in most 914Queues execute in-order by default, without any parallelism, so in most
758cases (i.e. you use only one queue) it's not necessary to wait for or 915cases (i.e. you use only one queue) it's not necessary to wait for or
759create event objects. 916create event objects, althoguh an our of order queue is often a bit
917faster.
760 918
761=over 4 919=over 4
762 920
763=item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...) 921=item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...)
764 922
774 932
775=item $ev = $queue->enqueue_copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...) 933=item $ev = $queue->enqueue_copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...)
776 934
777L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html> 935L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html>
778 936
937=item $ev = $queue->enqueue_read_buffer_rect (OpenCL::Memory buf, cl_bool blocking, $buf_x, $buf_y, $buf_z, $host_x, $host_y, $host_z, $width, $height, $depth, $buf_row_pitch, $buf_slice_pitch, $host_row_pitch, $host_slice_pitch, $data, $wait_events...)
938
939http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadBufferRect.html
940
941=item $ev = $queue->enqueue_write_buffer_rect (OpenCL::Memory buf, cl_bool blocking, $buf_x, $buf_y, $buf_z, $host_x, $host_y, $host_z, $width, $height, $depth, $buf_row_pitch, $buf_slice_pitch, $host_row_pitch, $host_slice_pitch, $data, $wait_events...)
942
943http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteBufferRect.html
944
779=item $ev = $queue->enqueue_read_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...) 945=item $ev = $queue->enqueue_read_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...)
780 946
947L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferRect.html>
948
949=item $ev = $queue->enqueue_copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
950
781L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadImage.html> 951L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadImage.html>
782 952
783=item $ev = $queue->enqueue_write_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...) 953=item $ev = $queue->enqueue_write_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...)
784 954
785L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteImage.html> 955L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteImage.html>
786 956
957=item $ev = $queue->enqueue_copy_image ($src_image, $dst_image, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
958
959L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImage.html>
960
961=item $ev = $queue->enqueue_copy_image_to_buffer ($src_image, $dst_image, $src_x, $src_y, $src_z, $width, $height, $depth, $dst_offset, $wait_events...)
962
963L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImageToBuffer.html>
964
787=item $ev = $queue->enqueue_copy_buffer_rect ($src, $dst, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $src_row_pitch, $src_slice_pitch, $dst_row_pitch, $dst_slice_pitch, $wait_event...) 965=item $ev = $queue->enqueue_copy_buffer_rect ($src, $dst, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $src_row_pitch, $src_slice_pitch, $dst_row_pitch, $dst_slice_pitch, $wait_event...)
788 966
789Yeah. 967Yeah.
790 968
791L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferRect.html>
792
793=item $ev = $queue->enqueue_copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
794
795L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>. 969L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>.
796
797=item $ev = $queue->enqueue_copy_image ($src_image, $dst_image, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
798
799L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImage.html>
800
801=item $ev = $queue->enqueue_copy_image_to_buffer ($src_image, $dst_image, $src_x, $src_y, $src_z, $width, $height, $depth, $dst_offset, $wait_events...)
802
803L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImageToBuffer.html>
804 970
805=item $ev = $queue->enqueue_task ($kernel, $wait_events...) 971=item $ev = $queue->enqueue_task ($kernel, $wait_events...)
806 972
807L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html> 973L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html>
808 974
822reference to an array of local work sizes, with the same number of 988reference to an array of local work sizes, with the same number of
823elements as @$global_work_size. 989elements as @$global_work_size.
824 990
825L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html> 991L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html>
826 992
827=item $ev = $queue->enqueue_marker 993=item $ev = $queue->enqueue_acquire_gl_objects ([object, ...], $wait_events...)
828 994
995Enqueues a list (an array-ref of OpenCL::Memory objects) to be acquired
996for subsequent OpenCL usage.
997
829L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMarker.html> 998L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueAcquireGLObjects.html>
999
1000=item $ev = $queue->enqueue_release_gl_objects ([object, ...], $wait_events...)
1001
1002Enqueues a list (an array-ref of OpenCL::Memory objects) to be released
1003for subsequent OpenGL usage.
1004
1005L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReleaseGLObjects.html>
830 1006
831=item $ev = $queue->enqueue_wait_for_events ($wait_events...) 1007=item $ev = $queue->enqueue_wait_for_events ($wait_events...)
832 1008
833L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html> 1009L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html>
834 1010
835=item $queue->enqueue_barrier 1011=item $ev = $queue->enqueue_marker ($wait_events...)
836 1012
1013L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueMarkerWithWaitList.html>
1014
1015=item $ev = $queue->enqueue_barrier ($wait_events...)
1016
837L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueBarrier.html> 1017L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueBarrierWithWaitList.html>
838 1018
839=item $queue->flush 1019=item $queue->flush
840 1020
841L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clFlush.html> 1021L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clFlush.html>
842 1022
850 1030
851L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetCommandQueueInfo.html> 1031L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetCommandQueueInfo.html>
852 1032
853=for gengetinfo begin command_queue 1033=for gengetinfo begin command_queue
854 1034
855
856=item $ctx = $command_queue->context 1035=item $ctx = $command_queue->context
857 1036
858Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_CONTEXT> and returns the result(s). 1037Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_CONTEXT> and returns the result.
859 1038
860=item $device = $command_queue->device 1039=item $device = $command_queue->device
861 1040
862Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_DEVICE> and returns the result(s). 1041Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_DEVICE> and returns the result.
863 1042
864=item $uint = $command_queue->reference_count 1043=item $uint = $command_queue->reference_count
865 1044
866Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_REFERENCE_COUNT> and returns the result(s). 1045Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_REFERENCE_COUNT> and returns the result.
867 1046
868=item $command_queue_properties = $command_queue->properties 1047=item $command_queue_properties = $command_queue->properties
869 1048
870Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_PROPERTIES> and returns the result(s). 1049Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_PROPERTIES> and returns the result.
871 1050
872=for gengetinfo end command_queue 1051=for gengetinfo end command_queue
873 1052
874=back 1053=back
875 1054
886 1065
887L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html> 1066L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html>
888 1067
889=for gengetinfo begin mem 1068=for gengetinfo begin mem
890 1069
891
892=item $mem_object_type = $mem->type 1070=item $mem_object_type = $mem->type
893 1071
894Calls C<clGetMemObjectInfo> with C<CL_MEM_TYPE> and returns the result(s). 1072Calls C<clGetMemObjectInfo> with C<CL_MEM_TYPE> and returns the result.
895 1073
896=item $mem_flags = $mem->flags 1074=item $mem_flags = $mem->flags
897 1075
898Calls C<clGetMemObjectInfo> with C<CL_MEM_FLAGS> and returns the result(s). 1076Calls C<clGetMemObjectInfo> with C<CL_MEM_FLAGS> and returns the result.
899 1077
900=item $int = $mem->size 1078=item $int = $mem->size
901 1079
902Calls C<clGetMemObjectInfo> with C<CL_MEM_SIZE> and returns the result(s). 1080Calls C<clGetMemObjectInfo> with C<CL_MEM_SIZE> and returns the result.
903 1081
904=item $ptr_value = $mem->host_ptr 1082=item $ptr_value = $mem->host_ptr
905 1083
906Calls C<clGetMemObjectInfo> with C<CL_MEM_HOST_PTR> and returns the result(s). 1084Calls C<clGetMemObjectInfo> with C<CL_MEM_HOST_PTR> and returns the result.
907 1085
908=item $uint = $mem->map_count 1086=item $uint = $mem->map_count
909 1087
910Calls C<clGetMemObjectInfo> with C<CL_MEM_MAP_COUNT> and returns the result(s). 1088Calls C<clGetMemObjectInfo> with C<CL_MEM_MAP_COUNT> and returns the result.
911 1089
912=item $uint = $mem->reference_count 1090=item $uint = $mem->reference_count
913 1091
914Calls C<clGetMemObjectInfo> with C<CL_MEM_REFERENCE_COUNT> and returns the result(s). 1092Calls C<clGetMemObjectInfo> with C<CL_MEM_REFERENCE_COUNT> and returns the result.
915 1093
916=item $ctx = $mem->context 1094=item $ctx = $mem->context
917 1095
918Calls C<clGetMemObjectInfo> with C<CL_MEM_CONTEXT> and returns the result(s). 1096Calls C<clGetMemObjectInfo> with C<CL_MEM_CONTEXT> and returns the result.
919 1097
920=item $mem = $mem->associated_memobject 1098=item $mem = $mem->associated_memobject
921 1099
922Calls C<clGetMemObjectInfo> with C<CL_MEM_ASSOCIATED_MEMOBJECT> and returns the result(s). 1100Calls C<clGetMemObjectInfo> with C<CL_MEM_ASSOCIATED_MEMOBJECT> and returns the result.
923 1101
924=item $int = $mem->offset 1102=item $int = $mem->offset
925 1103
926Calls C<clGetMemObjectInfo> with C<CL_MEM_OFFSET> and returns the result(s). 1104Calls C<clGetMemObjectInfo> with C<CL_MEM_OFFSET> and returns the result.
927 1105
928=for gengetinfo end mem 1106=for gengetinfo end mem
929 1107
1108=item ($type, $name) = $mem->gl_object_info
1109
1110Returns the OpenGL object type (e.g. OpenCL::GL_OBJECT_TEXTURE2D) and the
1111object "name" (e.g. the texture name) used to create this memory object.
1112
1113L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetGLObjectInfo.html>
1114
930=back 1115=back
931 1116
1117=head2 THE OpenCL::Buffer CLASS
1118
1119This is a subclass of OpenCL::Memory, and the superclass of
1120OpenCL::BufferObj. Its purpose is simply to distinguish between buffers
1121and sub-buffers.
1122
1123=head2 THE OpenCL::BufferObj CLASS
1124
1125This is a subclass of OpenCL::Buffer and thus OpenCL::Memory. It exists
1126because one cna create sub buffers of OpenLC::BufferObj objects, but not
1127sub buffers from these sub buffers.
1128
1129=over 4
1130
1131=item $subbuf = $buf_obj->sub_buffer_region ($flags, $origin, $size)
1132
1133Creates an OpenCL::Buffer objects from this buffer and returns it. The
1134C<buffer_create_type> is assumed to be C<CL_BUFFER_CREATE_TYPE_REGION>.
1135
1136L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateSubBuffer.html>
1137
1138=back
1139
932=head2 THE OpenCL::Image CLASS 1140=head2 THE OpenCL::Image CLASS
933 1141
934This is the superclass of all image objects - OpenCL::Image2D and OpenCL::Image3D. 1142This is the superclass of all image objects - OpenCL::Image1D,
1143OpenCL::Image1DArray, OpenCL::Image1DBuffer, OpenCL::Image2D,
1144OpenCL::Image2DArray and OpenCL::Image3D.
935 1145
936=over 4 1146=over 4
937 1147
938=item $packed_value = $ev->image_info ($name) 1148=item $packed_value = $ev->image_info ($name)
939 1149
944 1154
945L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html> 1155L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html>
946 1156
947=for gengetinfo begin image 1157=for gengetinfo begin image
948 1158
949
950=item $int = $image->element_size 1159=item $int = $image->element_size
951 1160
952Calls C<clGetImageInfo> with C<CL_IMAGE_ELEMENT_SIZE> and returns the result(s). 1161Calls C<clGetImageInfo> with C<CL_IMAGE_ELEMENT_SIZE> and returns the result.
953 1162
954=item $int = $image->row_pitch 1163=item $int = $image->row_pitch
955 1164
956Calls C<clGetImageInfo> with C<CL_IMAGE_ROW_PITCH> and returns the result(s). 1165Calls C<clGetImageInfo> with C<CL_IMAGE_ROW_PITCH> and returns the result.
957 1166
958=item $int = $image->slice_pitch 1167=item $int = $image->slice_pitch
959 1168
960Calls C<clGetImageInfo> with C<CL_IMAGE_SLICE_PITCH> and returns the result(s). 1169Calls C<clGetImageInfo> with C<CL_IMAGE_SLICE_PITCH> and returns the result.
961 1170
962=item $int = $image->width 1171=item $int = $image->width
963 1172
964Calls C<clGetImageInfo> with C<CL_IMAGE_WIDTH> and returns the result(s). 1173Calls C<clGetImageInfo> with C<CL_IMAGE_WIDTH> and returns the result.
965 1174
966=item $int = $image->height 1175=item $int = $image->height
967 1176
968Calls C<clGetImageInfo> with C<CL_IMAGE_HEIGHT> and returns the result(s). 1177Calls C<clGetImageInfo> with C<CL_IMAGE_HEIGHT> and returns the result.
969 1178
970=item $int = $image->depth 1179=item $int = $image->depth
971 1180
972Calls C<clGetImageInfo> with C<CL_IMAGE_DEPTH> and returns the result(s). 1181Calls C<clGetImageInfo> with C<CL_IMAGE_DEPTH> and returns the result.
973 1182
974=for gengetinfo end image 1183=for gengetinfo end image
975 1184
1185=for gengetinfo begin gl_texture
1186
1187=item $GLenum = $gl_texture->target
1188
1189Calls C<clGetGLTextureInfo> with C<CL_GL_TEXTURE_TARGET> and returns the result.
1190
1191=item $GLint = $gl_texture->gl_mipmap_level
1192
1193Calls C<clGetGLTextureInfo> with C<CL_GL_MIPMAP_LEVEL> and returns the result.
1194
1195=for gengetinfo end gl_texture
1196
976=back 1197=back
977 1198
978=head2 THE OpenCL::Sampler CLASS 1199=head2 THE OpenCL::Sampler CLASS
979 1200
980=over 4 1201=over 4
985 1206
986L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetSamplerInfo.html> 1207L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetSamplerInfo.html>
987 1208
988=for gengetinfo begin sampler 1209=for gengetinfo begin sampler
989 1210
990
991=item $uint = $sampler->reference_count 1211=item $uint = $sampler->reference_count
992 1212
993Calls C<clGetSamplerInfo> with C<CL_SAMPLER_REFERENCE_COUNT> and returns the result(s). 1213Calls C<clGetSamplerInfo> with C<CL_SAMPLER_REFERENCE_COUNT> and returns the result.
994 1214
995=item $ctx = $sampler->context 1215=item $ctx = $sampler->context
996 1216
997Calls C<clGetSamplerInfo> with C<CL_SAMPLER_CONTEXT> and returns the result(s). 1217Calls C<clGetSamplerInfo> with C<CL_SAMPLER_CONTEXT> and returns the result.
998 1218
999=item $addressing_mode = $sampler->normalized_coords 1219=item $addressing_mode = $sampler->normalized_coords
1000 1220
1001Calls C<clGetSamplerInfo> with C<CL_SAMPLER_NORMALIZED_COORDS> and returns the result(s). 1221Calls C<clGetSamplerInfo> with C<CL_SAMPLER_NORMALIZED_COORDS> and returns the result.
1002 1222
1003=item $filter_mode = $sampler->addressing_mode 1223=item $filter_mode = $sampler->addressing_mode
1004 1224
1005Calls C<clGetSamplerInfo> with C<CL_SAMPLER_ADDRESSING_MODE> and returns the result(s). 1225Calls C<clGetSamplerInfo> with C<CL_SAMPLER_ADDRESSING_MODE> and returns the result.
1006 1226
1007=item $boolean = $sampler->filter_mode 1227=item $boolean = $sampler->filter_mode
1008 1228
1009Calls C<clGetSamplerInfo> with C<CL_SAMPLER_FILTER_MODE> and returns the result(s). 1229Calls C<clGetSamplerInfo> with C<CL_SAMPLER_FILTER_MODE> and returns the result.
1010 1230
1011=for gengetinfo end sampler 1231=for gengetinfo end sampler
1012 1232
1013=back 1233=back
1014 1234
1036 1256
1037L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateKernel.html> 1257L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateKernel.html>
1038 1258
1039=for gengetinfo begin program_build 1259=for gengetinfo begin program_build
1040 1260
1041
1042=item $build_status = $program->build_status ($device) 1261=item $build_status = $program->build_status ($device)
1043 1262
1044Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_STATUS> and returns the result(s). 1263Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_STATUS> and returns the result.
1045 1264
1046=item $string = $program->build_options ($device) 1265=item $string = $program->build_options ($device)
1047 1266
1048Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_OPTIONS> and returns the result(s). 1267Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_OPTIONS> and returns the result.
1049 1268
1050=item $string = $program->build_log ($device) 1269=item $string = $program->build_log ($device)
1051 1270
1052Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_LOG> and returns the result(s). 1271Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_LOG> and returns the result.
1053 1272
1054=for gengetinfo end program_build 1273=for gengetinfo end program_build
1055 1274
1056=item $packed_value = $program->info ($name) 1275=item $packed_value = $program->info ($name)
1057 1276
1059 1278
1060L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html> 1279L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html>
1061 1280
1062=for gengetinfo begin program 1281=for gengetinfo begin program
1063 1282
1064
1065=item $uint = $program->reference_count 1283=item $uint = $program->reference_count
1066 1284
1067Calls C<clGetProgramInfo> with C<CL_PROGRAM_REFERENCE_COUNT> and returns the result(s). 1285Calls C<clGetProgramInfo> with C<CL_PROGRAM_REFERENCE_COUNT> and returns the result.
1068 1286
1069=item $ctx = $program->context 1287=item $ctx = $program->context
1070 1288
1071Calls C<clGetProgramInfo> with C<CL_PROGRAM_CONTEXT> and returns the result(s). 1289Calls C<clGetProgramInfo> with C<CL_PROGRAM_CONTEXT> and returns the result.
1072 1290
1073=item $uint = $program->num_devices 1291=item $uint = $program->num_devices
1074 1292
1075Calls C<clGetProgramInfo> with C<CL_PROGRAM_NUM_DEVICES> and returns the result(s). 1293Calls C<clGetProgramInfo> with C<CL_PROGRAM_NUM_DEVICES> and returns the result.
1076 1294
1077=item @devices = $program->devices 1295=item @devices = $program->devices
1078 1296
1079Calls C<clGetProgramInfo> with C<CL_PROGRAM_DEVICES> and returns the result(s). 1297Calls C<clGetProgramInfo> with C<CL_PROGRAM_DEVICES> and returns the result.
1080 1298
1081=item $string = $program->source 1299=item $string = $program->source
1082 1300
1083Calls C<clGetProgramInfo> with C<CL_PROGRAM_SOURCE> and returns the result(s). 1301Calls C<clGetProgramInfo> with C<CL_PROGRAM_SOURCE> and returns the result.
1084 1302
1085=item @ints = $program->binary_sizes 1303=item @ints = $program->binary_sizes
1086 1304
1087Calls C<clGetProgramInfo> with C<CL_PROGRAM_BINARY_SIZES> and returns the result(s). 1305Calls C<clGetProgramInfo> with C<CL_PROGRAM_BINARY_SIZES> and returns the result.
1088 1306
1089=for gengetinfo end program 1307=for gengetinfo end program
1090 1308
1309=item @blobs = $program->binaries
1310
1311Returns a string for the compiled binary for every device associated with
1312the program, empty strings indicate missing programs, and an empty result
1313means no program binaries are available.
1314
1315These "binaries" are often, in fact, informative low-level assembly
1316sources.
1317
1318L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html>
1319
1091=back 1320=back
1092 1321
1093=head2 THE OpenCL::Kernel CLASS 1322=head2 THE OpenCL::Kernel CLASS
1094 1323
1095=over 4 1324=over 4
1100 1329
1101L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelInfo.html> 1330L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelInfo.html>
1102 1331
1103=for gengetinfo begin kernel 1332=for gengetinfo begin kernel
1104 1333
1105
1106=item $string = $kernel->function_name 1334=item $string = $kernel->function_name
1107 1335
1108Calls C<clGetKernelInfo> with C<CL_KERNEL_FUNCTION_NAME> and returns the result(s). 1336Calls C<clGetKernelInfo> with C<CL_KERNEL_FUNCTION_NAME> and returns the result.
1109 1337
1110=item $uint = $kernel->num_args 1338=item $uint = $kernel->num_args
1111 1339
1112Calls C<clGetKernelInfo> with C<CL_KERNEL_NUM_ARGS> and returns the result(s). 1340Calls C<clGetKernelInfo> with C<CL_KERNEL_NUM_ARGS> and returns the result.
1113 1341
1114=item $uint = $kernel->reference_count 1342=item $uint = $kernel->reference_count
1115 1343
1116Calls C<clGetKernelInfo> with C<CL_KERNEL_REFERENCE_COUNT> and returns the result(s). 1344Calls C<clGetKernelInfo> with C<CL_KERNEL_REFERENCE_COUNT> and returns the result.
1117 1345
1118=item $ctx = $kernel->context 1346=item $ctx = $kernel->context
1119 1347
1120Calls C<clGetKernelInfo> with C<CL_KERNEL_CONTEXT> and returns the result(s). 1348Calls C<clGetKernelInfo> with C<CL_KERNEL_CONTEXT> and returns the result.
1121 1349
1122=item $program = $kernel->program 1350=item $program = $kernel->program
1123 1351
1124Calls C<clGetKernelInfo> with C<CL_KERNEL_PROGRAM> and returns the result(s). 1352Calls C<clGetKernelInfo> with C<CL_KERNEL_PROGRAM> and returns the result.
1125 1353
1126=for gengetinfo end kernel 1354=for gengetinfo end kernel
1127 1355
1128=item $packed_value = $kernel->work_group_info ($device, $name) 1356=item $packed_value = $kernel->work_group_info ($device, $name)
1129 1357
1134 1362
1135L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html> 1363L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html>
1136 1364
1137=for gengetinfo begin kernel_work_group 1365=for gengetinfo begin kernel_work_group
1138 1366
1139
1140=item $int = $kernel->work_group_size ($device) 1367=item $int = $kernel->work_group_size ($device)
1141 1368
1142Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_WORK_GROUP_SIZE> and returns the result(s). 1369Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_WORK_GROUP_SIZE> and returns the result.
1143 1370
1144=item @ints = $kernel->compile_work_group_size ($device) 1371=item @ints = $kernel->compile_work_group_size ($device)
1145 1372
1146Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_COMPILE_WORK_GROUP_SIZE> and returns the result(s). 1373Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_COMPILE_WORK_GROUP_SIZE> and returns the result.
1147 1374
1148=item $ulong = $kernel->local_mem_size ($device) 1375=item $ulong = $kernel->local_mem_size ($device)
1149 1376
1150Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_LOCAL_MEM_SIZE> and returns the result(s). 1377Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_LOCAL_MEM_SIZE> and returns the result.
1151 1378
1152=item $int = $kernel->preferred_work_group_size_multiple ($device) 1379=item $int = $kernel->preferred_work_group_size_multiple ($device)
1153 1380
1154Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE> and returns the result(s). 1381Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE> and returns the result.
1155 1382
1156=item $ulong = $kernel->private_mem_size ($device) 1383=item $ulong = $kernel->private_mem_size ($device)
1157 1384
1158Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PRIVATE_MEM_SIZE> and returns the result(s). 1385Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PRIVATE_MEM_SIZE> and returns the result.
1159 1386
1160=for gengetinfo end kernel_work_group 1387=for gengetinfo end kernel_work_group
1161 1388
1162=item $kernel->set_TYPE ($index, $value) 1389=item $kernel->set_TYPE ($index, $value)
1163 1390
1164This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>. 1391This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>.
1165 1392
1166TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>, 1393TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>,
1167C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>, 1394C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>,
1168C<image2d>, C<image3d>, C<sampler> or C<event>. 1395C<image2d>, C<image3d>, C<sampler>, C<local> or C<event>.
1169 1396
1170Chars and integers (including the half type) are specified as integers, 1397Chars and integers (including the half type) are specified as integers,
1171float and double as floating point values, memory/buffer/image2d/image3d 1398float and double as floating point values, memory/buffer/image2d/image3d
1172must be an object of that type or C<undef>, and sampler and event must be 1399must be an object of that type or C<undef>, local-memory arguments are
1173objects of that type. 1400set by specifying the size, and sampler and event must be objects of that
1401type.
1174 1402
1175L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html> 1403L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html>
1176 1404
1177=back 1405=back
1178 1406
1195 1423
1196L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetEventInfo.html> 1424L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetEventInfo.html>
1197 1425
1198=for gengetinfo begin event 1426=for gengetinfo begin event
1199 1427
1200
1201=item $queue = $event->command_queue 1428=item $queue = $event->command_queue
1202 1429
1203Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_QUEUE> and returns the result(s). 1430Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_QUEUE> and returns the result.
1204 1431
1205=item $command_type = $event->command_type 1432=item $command_type = $event->command_type
1206 1433
1207Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_TYPE> and returns the result(s). 1434Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_TYPE> and returns the result.
1208 1435
1209=item $uint = $event->reference_count 1436=item $uint = $event->reference_count
1210 1437
1211Calls C<clGetEventInfo> with C<CL_EVENT_REFERENCE_COUNT> and returns the result(s). 1438Calls C<clGetEventInfo> with C<CL_EVENT_REFERENCE_COUNT> and returns the result.
1212 1439
1213=item $uint = $event->command_execution_status 1440=item $uint = $event->command_execution_status
1214 1441
1215Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_EXECUTION_STATUS> and returns the result(s). 1442Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_EXECUTION_STATUS> and returns the result.
1216 1443
1217=item $ctx = $event->context 1444=item $ctx = $event->context
1218 1445
1219Calls C<clGetEventInfo> with C<CL_EVENT_CONTEXT> and returns the result(s). 1446Calls C<clGetEventInfo> with C<CL_EVENT_CONTEXT> and returns the result.
1220 1447
1221=for gengetinfo end event 1448=for gengetinfo end event
1222 1449
1223=item $packed_value = $ev->profiling_info ($name) 1450=item $packed_value = $ev->profiling_info ($name)
1224 1451
1229 1456
1230L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProfilingInfo.html> 1457L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProfilingInfo.html>
1231 1458
1232=for gengetinfo begin profiling 1459=for gengetinfo begin profiling
1233 1460
1234
1235=item $ulong = $event->profiling_command_queued 1461=item $ulong = $event->profiling_command_queued
1236 1462
1237Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_QUEUED> and returns the result(s). 1463Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_QUEUED> and returns the result.
1238 1464
1239=item $ulong = $event->profiling_command_submit 1465=item $ulong = $event->profiling_command_submit
1240 1466
1241Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_SUBMIT> and returns the result(s). 1467Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_SUBMIT> and returns the result.
1242 1468
1243=item $ulong = $event->profiling_command_start 1469=item $ulong = $event->profiling_command_start
1244 1470
1245Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_START> and returns the result(s). 1471Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_START> and returns the result.
1246 1472
1247=item $ulong = $event->profiling_command_end 1473=item $ulong = $event->profiling_command_end
1248 1474
1249Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_END> and returns the result(s). 1475Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_END> and returns the result.
1250 1476
1251=for gengetinfo end profiling 1477=for gengetinfo end profiling
1252 1478
1253=back 1479=back
1254 1480
1269package OpenCL; 1495package OpenCL;
1270 1496
1271use common::sense; 1497use common::sense;
1272 1498
1273BEGIN { 1499BEGIN {
1274 our $VERSION = '0.55'; 1500 our $VERSION = '0.96';
1275 1501
1276 require XSLoader; 1502 require XSLoader;
1277 XSLoader::load (__PACKAGE__, $VERSION); 1503 XSLoader::load (__PACKAGE__, $VERSION);
1278 1504
1279 @OpenCL::Buffer::ISA = 1505 @OpenCL::Buffer::ISA =
1280 @OpenCL::Image::ISA = OpenCL::Memory::; 1506 @OpenCL::Image::ISA = OpenCL::Memory::;
1281 1507
1508 @OpenCL::BufferObj::ISA = OpenCL::Buffer::;
1509
1282 @OpenCL::Image2D::ISA = 1510 @OpenCL::Image2D::ISA =
1511 @OpenCL::Image3D::ISA =
1512 @OpenCL::Image2DArray::ISA =
1513 @OpenCL::Image1D::ISA =
1514 @OpenCL::Image1DArray::ISA =
1283 @OpenCL::Image3D::ISA = OpenCL::Image::; 1515 @OpenCL::Image1DBuffer::ISA = OpenCL::Image::;
1284 1516
1285 @OpenCL::UserEvent::ISA = OpenCL::Event::; 1517 @OpenCL::UserEvent::ISA = OpenCL::Event::;
1286} 1518}
1287 1519
12881; 15201;
1289 1521
1290=head1 AUTHOR 1522=head1 AUTHOR

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines