@@ -234,16 +234,19 @@ def _visit_function(self, node):
234234 lines .append ('function %s( %s, __offset ) {' % (glsl_wrapper_name , ',' .join (args )) )
235235 lines .append (' __offset = __offset || 0' ) ## note by default: 0 allows 0-1.0
236236 lines .append (' var __webclgl = new WebCLGL()' )
237- lines .append (' var __kernel = __webclgl.createKernel( __shader__ );' )
237+ lines .append (' var __kernel = __webclgl.createKernel( "\\ n".join(__shader__) );' )
238+ lines .append (' var __return_length = 1' )
238239
239- lines .append (' var return_buffer = __webclgl.createBuffer(1, "FLOAT", __offset)' ) ## TODO length of return buffer
240240 for i ,arg in enumerate (args ):
241241 lines .append (' if (%s instanceof Array) {' % arg )
242+ lines .append (' __return_length = %s.length' % arg )
242243 lines .append (' var %s_buffer = __webclgl.createBuffer(%s.length, "FLOAT", __offset)' % (arg ,arg ))
243244 lines .append (' __webclgl.enqueueWriteBuffer(%s_buffer, %s)' % (arg , arg ))
244245 lines .append (' __kernel.setKernelArg(%s, %s_buffer)' % (i , arg ))
245246 lines .append (' } else { __kernel.setKernelArg(%s, %s) }' % (i , arg ))
246247
248+ lines .append (' var return_buffer = __webclgl.createBuffer(__return_length, "FLOAT", __offset)' )
249+
247250 lines .append (' __kernel.compile()' )
248251 lines .append (' __webclgl.enqueueNDRangeKernel(__kernel, return_buffer)' )
249252 lines .append (' return __webclgl.enqueueReadBuffer_Float( return_buffer )' )
@@ -430,7 +433,7 @@ def inline_helper_return_id(self, return_id):
430433 return "var __returns__%s = null;" % return_id
431434
432435 def _visit_call_helper_numpy_array (self , node ):
433- raise NotImplementedError ('TODO numpy.array' )
436+ # raise NotImplementedError('TODO numpy.array')
434437 return self .visit (node .args [0 ]) ## TODO typed arrays
435438
436439 def _visit_call_helper_list (self , node ):
0 commit comments