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

Comparing OpenCL/OpenCL.pm (file contents):
Revision 1.80 by root, Sat May 5 13:55:59 2012 UTC vs.
Revision 1.86 by root, Mon May 7 01:00:31 2012 UTC

213 $ev->wait; 213 $ev->wait;
214 214
215=head2 Use the OpenGL module to share a texture between OpenCL and OpenGL and draw some julia 215=head2 Use the OpenGL module to share a texture between OpenCL and OpenGL and draw some julia
216set flight effect. 216set flight effect.
217 217
218This is quite a long example to get you going - you can download it from 218This is quite a long example to get you going - you can also download it
219L<http://cvs.schmorp.de/OpenCL/examples/juliaflight>. 219from L<http://cvs.schmorp.de/OpenCL/examples/juliaflight>.
220 220
221 use OpenGL ":all"; 221 use OpenGL ":all";
222 use OpenCL; 222 use OpenCL;
223 223
224 my $S = $ARGV[0] || 256; # window/texture size, smaller is faster 224 my $S = $ARGV[0] || 256; # window/texture size, smaller is faster
398 398
399=head2 CONSTANTS 399=head2 CONSTANTS
400 400
401All C<CL_xxx> constants that this module supports are always available 401All C<CL_xxx> constants that this module supports are always available
402in the C<OpenCL> namespace as C<OpenCL::xxx> (i.e. without the C<CL_> 402in the C<OpenCL> namespace as C<OpenCL::xxx> (i.e. without the C<CL_>
403prefix). Constants which are not defined in the heaer files used during 403prefix). Constants which are not defined in the header files used during
404compilation, or otherwise are not available, will have the value C<-1>. 404compilation, or otherwise are not available, will have the value C<0> (in
405some cases, this will make them indistinguishable from real constants,
406sorry).
407
408The latest version of this module knows and exports the constants
409listed in L<http://cvs.schmorp.de/OpenCL/constiv.h>.
405 410
406=head2 OPENCL 1.1 VS. OPENCL 1.2 411=head2 OPENCL 1.1 VS. OPENCL 1.2
407 412
408This module supports both OpenCL version 1.1 and 1.2, although the OpenCL 413This module supports both OpenCL version 1.1 and 1.2, although the OpenCL
4091.2 interface hasn't been tested much for lack of availability of an 4141.2 interface hasn't been tested much for lack of availability of an
413particular OpenCL function has a link to the its C manual page. 418particular OpenCL function has a link to the its C manual page.
414 419
415If the link contains a F<1.1>, then this function is an OpenCL 1.1 420If the link contains a F<1.1>, then this function is an OpenCL 1.1
416function. Most but not all also exist in OpenCL 1.2, and this module 421function. Most but not all also exist in OpenCL 1.2, and this module
417tries to emulate the missing ones for you, when told to do so at 422tries to emulate the missing ones for you, when told to do so at
418compiletime. You cna check whether a function was removed in OpenCL 1.2 by 423compiletime. You can check whether a function was removed in OpenCL 1.2 by
419replacing the F<1.1> component in the URL by F<1.2>. 424replacing the F<1.1> component in the URL by F<1.2>.
420 425
421If the link contains a F<1.2>, then this is a OpenCL 1.2-only 426If the link contains a F<1.2>, then this is a OpenCL 1.2-only
422function. Even if the module was compiled with OpenCL 1.2 header files 427function. Even if the module was compiled with OpenCL 1.2 header files
423and has an 1.2 OpenCL library, calling such a function on a platform that 428and has an 1.2 OpenCL library, calling such a function on a platform that
592use Async::Interrupt (); 597use Async::Interrupt ();
593 598
594our $POLL_FUNC; # set by XS 599our $POLL_FUNC; # set by XS
595 600
596BEGIN { 601BEGIN {
597 our $VERSION = '0.99'; 602 our $VERSION = '1.0';
598 603
599 require XSLoader; 604 require XSLoader;
600 XSLoader::load (__PACKAGE__, $VERSION); 605 XSLoader::load (__PACKAGE__, $VERSION);
601 606
602 @OpenCL::Platform::ISA = 607 @OpenCL::Platform::ISA =
638The last error returned by a function - it's only valid after an error occured 643The last error returned by a function - it's only valid after an error occured
639and before calling another OpenCL function. 644and before calling another OpenCL function.
640 645
641=item $str = OpenCL::err2str [$errval] 646=item $str = OpenCL::err2str [$errval]
642 647
643Converts an error value into a human readable string. IF no error value is 648Converts an error value into a human readable string. If no error value is
644given, then the last error will be used (as returned by OpenCL::errno). 649given, then the last error will be used (as returned by OpenCL::errno).
650
651The latest version of this module knows the error constants
652listed in L<http://cvs.schmorp.de/OpenCL/errstr.h>.
645 653
646=item $str = OpenCL::enum2str $enum 654=item $str = OpenCL::enum2str $enum
647 655
648Converts most enum values (of parameter names, image format constants, 656Converts most enum values (of parameter names, image format constants,
649object types, addressing and filter modes, command types etc.) into a 657object types, addressing and filter modes, command types etc.) into a
650human readable string. When confronted with some random integer it can be 658human readable string. When confronted with some random integer it can be
651very helpful to pass it through this function to maybe get some readable 659very helpful to pass it through this function to maybe get some readable
652string out of it. 660string out of it.
661
662The latest version of this module knows the enumaration constants
663listed in L<http://cvs.schmorp.de/OpenCL/enumstr.h>.
653 664
654=item @platforms = OpenCL::platforms 665=item @platforms = OpenCL::platforms
655 666
656Returns all available OpenCL::Platform objects. 667Returns all available OpenCL::Platform objects.
657 668
1413 1424
1414=item $ev = $queue->copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...) 1425=item $ev = $queue->copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...)
1415 1426
1416L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html> 1427L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html>
1417 1428
1418=item $ev = $queue->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...) 1429$eue->read_buffer_rect ($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...)
1419 1430
1420http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadBufferRect.html 1431http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadBufferRect.html
1421 1432
1422=item $ev = $queue->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...) 1433=item $ev = $queue->write_buffer_rect ($buf, $blocking, $buf_y, $host_x, $host_z, $height, $buf_row_pitch, $host_row_pitch, $data, $wait_events...)
1423 1434
1424http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteBufferRect.html 1435http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteBufferRect.html
1425 1436
1426=item $ev = $queue->copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...) 1437=item $ev = $queue->copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
1427 1438
1611it. You are not necessarily meant to do it this way, this example just 1622it. You are not necessarily meant to do it this way, this example just
1612shows you the accessors to use :) 1623shows you the accessors to use :)
1613 1624
1614 my $mapped = $queue->map_image ($image, 1, OpenCL::MAP_WRITE); 1625 my $mapped = $queue->map_image ($image, 1, OpenCL::MAP_WRITE);
1615 1626
1616 $mapped->set ($_ * $mapped->row_pitch, pack "C", 5) 1627 $mapped->write ($_ * $mapped->row_pitch, pack "C", 5)
1617 for 0..$image->height; 1628 for 0 .. $mapped->height - 1;
1618 1629
1619 $mapped->unmap;. 1630 $mapped->unmap;.
1620 $mapped->wait; # only needed for out of order queues normally 1631 $mapped->wait; # only needed for out of order queues normally
1621 1632
1622=item $ev = $queue->unmap ($mapped, $wait_events...) 1633=item $ev = $queue->unmap ($mapped, $wait_events...)
1641=item $packed_value = $memory->info ($name) 1652=item $packed_value = $memory->info ($name)
1642 1653
1643See C<< $platform->info >> for details. 1654See C<< $platform->info >> for details.
1644 1655
1645L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html> 1656L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html>
1657
1658=item $memory->destructor_callback ($cb->())
1659
1660Sets a callback that will be invoked after the memory object is destructed.
1661
1662L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetMemObjectDestructorCallback.html>
1646 1663
1647=for gengetinfo begin mem 1664=for gengetinfo begin mem
1648 1665
1649=item $mem_object_type = $mem->type 1666=item $mem_object_type = $mem->type
1650 1667
2328 2345
2329This is a subclass of OpenCL::Mapped, representing mapped images. 2346This is a subclass of OpenCL::Mapped, representing mapped images.
2330 2347
2331=over 4 2348=over 4
2332 2349
2350=item $pixels = $mapped->width
2351
2352=item $pixels = $mapped->height
2353
2354=item $pixels = $mapped->depth
2355
2356Return the width/height/depth of the mapped image region, in pixels.
2357
2333=item $bytes = $mapped->row_pitch 2358=item $bytes = $mapped->row_pitch
2334 2359
2335=item $bytes = $mapped->slice_pitch 2360=item $bytes = $mapped->slice_pitch
2336 2361
2337Return the row or slice pitch of the image that has been mapped. 2362Return the row or slice pitch of the image that has been mapped.
2338 2363
2364=item $bytes = $mapped->element_size
2365
2366Return the size of a single pixel.
2367
2368=item $data = $mapped->get_row ($count, $x=0, $y=0, $z=0)
2369
2370Return C<$count> pixels from the given coordinates. The pixel data must
2371be completely contained within a single row.
2372
2373If C<$count> is C<undef>, then all the remaining pixels in that row are
2374returned.
2375
2376=item $mapped->set_row ($data, $x=0, $y=0, $z=0)
2377
2378Write the given pixel data at the given coordinate. The pixel data must
2379be completely contained within a single row.
2380
2339=back 2381=back
2340
2341 2382
2342=cut 2383=cut
2343 2384
23441; 23851;
2345 2386

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines