]> gitweb.factorcode.org Git - factor.git/commitdiff
cuda.gl: cuda-buffer helper object that pairs a buffer with its attached CUDA resource
authorJoe Groff <arcata@gmail.com>
Tue, 25 May 2010 05:57:10 +0000 (22:57 -0700)
committerJoe Groff <arcata@gmail.com>
Tue, 25 May 2010 05:57:25 +0000 (22:57 -0700)
extra/cuda/gl/gl.factor

index 71a2689b0895ffa64c0e241b81e31173c19165d9..ea24dd0c72c3338ce4bab05d8a8b8d43b5d0692d 100644 (file)
@@ -1,5 +1,5 @@
 ! (c)2010 Joe Groff bsd license
-USING: accessors alien.c-types alien.data alien.destructors
+USING: accessors alien alien.c-types alien.data alien.destructors
 alien.enums continuations cuda cuda.contexts cuda.ffi
 cuda.gl.ffi destructors fry gpu.buffers kernel ;
 IN: cuda.gl
@@ -39,3 +39,14 @@ DESTRUCTOR: free-resource
 
 : with-mapped-resource ( ..a resource quot: ( ..a device-ptr size -- ..b ) -- ..b )
     over [ map-resource ] 2dip '[ _ unmap-resource ] [ ] cleanup ; inline
+
+TUPLE: cuda-buffer
+    { buffer buffer }
+    { resource pinned-c-ptr } ;
+
+: <cuda-buffer> ( upload usage kind size initial-data flags -- buffer )
+    [ <buffer> dup ] dip buffer>resource cuda-buffer boa ; inline
+
+M: cuda-buffer dispose
+    [ [ free-resource ] when* f ] change-resource
+    buffer>> dispose ; inline