… | |
… | |
376 | |
376 | |
377 | For this to work, the OpenGL library must be loaded, a GLX context must |
377 | For this to work, the OpenGL library must be loaded, a GLX context must |
378 | have been created and be made current, and C<dlsym> must be available and |
378 | have been created and be made current, and C<dlsym> must be available and |
379 | capable of finding the function via C<RTLD_DEFAULT>. |
379 | capable of finding the function via C<RTLD_DEFAULT>. |
380 | |
380 | |
|
|
381 | =cut |
|
|
382 | |
|
|
383 | package OpenCL; |
|
|
384 | |
|
|
385 | use common::sense; |
|
|
386 | |
|
|
387 | BEGIN { |
|
|
388 | our $VERSION = '0.96'; |
|
|
389 | |
|
|
390 | require XSLoader; |
|
|
391 | XSLoader::load (__PACKAGE__, $VERSION); |
|
|
392 | |
|
|
393 | @OpenCL::Platform::ISA = |
|
|
394 | @OpenCL::Device::ISA = |
|
|
395 | @OpenCL::Context::ISA = |
|
|
396 | @OpenCL::Queue::ISA = |
|
|
397 | @OpenCL::Memory::ISA = |
|
|
398 | @OpenCL::Sampler::ISA = |
|
|
399 | @OpenCL::Program::ISA = |
|
|
400 | @OpenCL::Kernel::ISA = |
|
|
401 | @OpenCL::Event::ISA = OpenCL::Object::; |
|
|
402 | |
|
|
403 | @OpenCL::Buffer::ISA = |
|
|
404 | @OpenCL::Image::ISA = OpenCL::Memory::; |
|
|
405 | |
|
|
406 | @OpenCL::BufferObj::ISA = OpenCL::Buffer::; |
|
|
407 | |
|
|
408 | @OpenCL::Image2D::ISA = |
|
|
409 | @OpenCL::Image3D::ISA = |
|
|
410 | @OpenCL::Image2DArray::ISA = |
|
|
411 | @OpenCL::Image1D::ISA = |
|
|
412 | @OpenCL::Image1DArray::ISA = |
|
|
413 | @OpenCL::Image1DBuffer::ISA = OpenCL::Image::; |
|
|
414 | |
|
|
415 | @OpenCL::UserEvent::ISA = OpenCL::Event::; |
|
|
416 | } |
|
|
417 | |
381 | =head2 THE OpenCL PACKAGE |
418 | =head2 THE OpenCL PACKAGE |
382 | |
419 | |
383 | =over 4 |
420 | =over 4 |
384 | |
421 | |
385 | =item $int = OpenCL::errno |
422 | =item $int = OpenCL::errno |
… | |
… | |
414 | =item OpenCL::wait_for_events $wait_events... |
451 | =item OpenCL::wait_for_events $wait_events... |
415 | |
452 | |
416 | Waits for all events to complete. |
453 | Waits for all events to complete. |
417 | |
454 | |
418 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clWaitForEvents.html> |
455 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clWaitForEvents.html> |
|
|
456 | |
|
|
457 | =back |
|
|
458 | |
|
|
459 | =head2 THE OpenCL::Object CLASS |
|
|
460 | |
|
|
461 | This is the base class for all objects in the OpenCL module. The only |
|
|
462 | method it implements is the C<id> method, which is only useful if you want |
|
|
463 | to interface to OpenCL on the C level. |
|
|
464 | |
|
|
465 | =over 4 |
|
|
466 | |
|
|
467 | =item $iv = $obj->id |
|
|
468 | |
|
|
469 | OpenCL objects are represented by pointers or integers on the C level. If |
|
|
470 | you want to interface to an OpenCL object directly on the C level, then |
|
|
471 | you need this value, which is returned by this method. You should use an |
|
|
472 | C<IV> type in your code and cast that to the correct type. |
|
|
473 | |
|
|
474 | =cut |
|
|
475 | |
|
|
476 | sub OpenCL::Object::id { |
|
|
477 | ${$_[0]} |
|
|
478 | } |
419 | |
479 | |
420 | =back |
480 | =back |
421 | |
481 | |
422 | =head2 THE OpenCL::Platform CLASS |
482 | =head2 THE OpenCL::Platform CLASS |
423 | |
483 | |
… | |
… | |
1000 | |
1060 | |
1001 | Yeah. |
1061 | Yeah. |
1002 | |
1062 | |
1003 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>. |
1063 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>. |
1004 | |
1064 | |
|
|
1065 | =item $ev = $queue->enqueue_fill_buffer ($mem, $pattern, $offset, $size, ...) |
|
|
1066 | |
|
|
1067 | Fills the given buffer object with repeated applications of C<$pattern>, |
|
|
1068 | starting at C<$offset> for C<$size> octets. |
|
|
1069 | |
|
|
1070 | L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueFillBuffer.html> |
|
|
1071 | |
|
|
1072 | =item $ev = $queue->enqueue_fill_image ($img, $r, $g, $b, $a, $x, $y, $z, $width, $height, $depth, ...) |
|
|
1073 | |
|
|
1074 | Fills the given image area with the given rgba colour components. The |
|
|
1075 | components are normally floating point values between C<0> and C<1>, |
|
|
1076 | except when the image channel data type is a signe dor unsigned |
|
|
1077 | unnormalised format, in which case the range is determined by the format. |
|
|
1078 | |
|
|
1079 | L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueFillImage.html> |
|
|
1080 | |
1005 | =item $ev = $queue->enqueue_task ($kernel, $wait_events...) |
1081 | =item $ev = $queue->enqueue_task ($kernel, $wait_events...) |
1006 | |
1082 | |
1007 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html> |
1083 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html> |
1008 | |
1084 | |
1009 | =item $ev = $queue->enqueue_nd_range_kernel ($kernel, @$global_work_offset, @$global_work_size, @$local_work_size, $wait_events...) |
1085 | =item $ev = $queue->enqueue_nd_range_kernel ($kernel, @$global_work_offset, @$global_work_size, @$local_work_size, $wait_events...) |
… | |
… | |
1535 | |
1611 | |
1536 | =back |
1612 | =back |
1537 | |
1613 | |
1538 | =cut |
1614 | =cut |
1539 | |
1615 | |
1540 | package OpenCL; |
|
|
1541 | |
|
|
1542 | use common::sense; |
|
|
1543 | |
|
|
1544 | BEGIN { |
|
|
1545 | our $VERSION = '0.96'; |
|
|
1546 | |
|
|
1547 | require XSLoader; |
|
|
1548 | XSLoader::load (__PACKAGE__, $VERSION); |
|
|
1549 | |
|
|
1550 | @OpenCL::Buffer::ISA = |
|
|
1551 | @OpenCL::Image::ISA = OpenCL::Memory::; |
|
|
1552 | |
|
|
1553 | @OpenCL::BufferObj::ISA = OpenCL::Buffer::; |
|
|
1554 | |
|
|
1555 | @OpenCL::Image2D::ISA = |
|
|
1556 | @OpenCL::Image3D::ISA = |
|
|
1557 | @OpenCL::Image2DArray::ISA = |
|
|
1558 | @OpenCL::Image1D::ISA = |
|
|
1559 | @OpenCL::Image1DArray::ISA = |
|
|
1560 | @OpenCL::Image1DBuffer::ISA = OpenCL::Image::; |
|
|
1561 | |
|
|
1562 | @OpenCL::UserEvent::ISA = OpenCL::Event::; |
|
|
1563 | } |
|
|
1564 | |
|
|
1565 | 1; |
1616 | 1; |
1566 | |
1617 | |
1567 | =head1 AUTHOR |
1618 | =head1 AUTHOR |
1568 | |
1619 | |
1569 | Marc Lehmann <schmorp@schmorp.de> |
1620 | Marc Lehmann <schmorp@schmorp.de> |