[racket] OpenCL module macro errors
Hi all,
I'm a little new to Racket (and Lispy languages in general). I'm working
on extending the OpenCL module to add support for OpenGL context sharing.
My questions are somewhat specific to the OpenCL module, but hopefully I
can provide enough context to minimize that.
Right now I'm working on clGetGLContextInfoKHR in, and it's been a bit
more challenging than I anticipated. It's a CL extension function, so
get-ffi-obj fails to find it. This hasn't been a huge problem. I ended
up creating an alternate version of define-opencl (
https://github.com/jeapostrophe/opencl/blob/master/opencl/c/lib.rkt#L17)
which I've called define-opencl-extension. Rather than calling
get-ffi-obj, it calls clGetExtensionFunctionAddress. That part works great.
The big problem that I'm having right now is with define-opencl-info (
https://github.com/jeapostrophe/opencl/blob/master/opencl/c/syntax.rkt#L18),
which essentially provides a convenient interface for the clGet*Info
functions (which all have similar arguments). clGetGLContextInfoKHR
follows that pattern with one exception. It's primary input argument
takes a vector of values, rather than a single value.
A call to define-opencl-info looks like this:
https://github.com/jeapostrophe/opencl/blob/master/opencl/c/5-3.rkt#L76
I thought I had the correct syntax by essentially replacing line 79 with
the following:
(args [properties : (_vector i _cl_context_properties)
_cl_context_properties_vector/c])
(I've also replaced the other types and argument names and whatnot, but
that all seems to work).
Anyway, with the (_vector ...) call, I get the following error:
; c/9-7.rkt:26:22: define: not an identifier, identifier with default, or
; keyword for procedure argument
; at: (_vector i _cl_context_properties)
; in: (define (clGetGLContextInfoKHR:generic (_vector i
; _cl_context_properties) _cl_gl_context_info) (case (hash-ref
; id-selector-map _cl_gl_context_info #f) ((_cl_device_id*) (local
((define
; len (clGetGLContextInfoKHR:length (_vector i
_cl_context_properties)...
; [,bt for context]
I'm not sure what that error is referring to, or how to fix it.
Here's the backtrack, but it's not terribly helpful (that I can see,
anyway):
; c/9-7.rkt:26:22: define: not an identifier, identifier with default,
or keyword for procedure argument
; at: (_vector i _cl_context_properties)
; in: (define (clGetGLContextInfoKHR:generic (_vector i
_cl_context_properties) _cl_gl_context_info) (case (hash-ref
id-selector-map _cl_gl_context_info #f) ((_cl_device_id*) (local
((define len (clGetGLContextInfoKHR:length (_vector i
_cl_context_properties)...
; context...:
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/norm-define.rkt:46:33:
simple-proto
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/norm-define.rkt:134:33:
general-proto
; try-next
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/kw.rkt:804:2
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/modbeg.rkt:46:4
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0
; standard-module-name-resolver
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0
; standard-module-name-resolver
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0
; standard-module-name-resolver
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0
;
/home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/misc.rkt:87:7
In addition, when I replace the (_vector ...) stuff with a plain old
_cl_context_properties, everything works fine (but the contract fails
when I actually try to call clGetGLContextInfoKHR, as expected).
What am I doing wrong? It looks like (_vector i _cl_context_properties)
is just as much of a ctype as _cl_context_properties, so why does it
fail when I make it a vector?
Thanks a ton,
Dane Larsen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130822/279b26c3/attachment.html>