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

Comparing OpenCL/OpenCL.xs (file contents):
Revision 1.58 by root, Sun Apr 29 18:39:31 2012 UTC vs.
Revision 1.59 by root, Sun Apr 29 19:38:05 2012 UTC

2193 cl_sampler ca; 2193 cl_sampler ca;
2194 size_t cz; 2194 size_t cz;
2195 cl_event ce; 2195 cl_event ce;
2196 } arg; 2196 } arg;
2197 size_t size; 2197 size_t size;
2198 int nullarg = 0;
2198 2199
2199 switch (type) 2200 switch (type)
2200 { 2201 {
2201 case 'c': arg.cc = SvIV (sv); size = sizeof (arg.cc); break; 2202 case 'c': arg.cc = SvIV (sv); size = sizeof (arg.cc); break;
2202 case 'C': arg.cC = SvUV (sv); size = sizeof (arg.cC); break; 2203 case 'C': arg.cC = SvUV (sv); size = sizeof (arg.cC); break;
2208 case 'L': arg.cL = SvUV (sv); size = sizeof (arg.cL); break; 2209 case 'L': arg.cL = SvUV (sv); size = sizeof (arg.cL); break;
2209 2210
2210 case 'h': arg.ch = SvUV (sv); size = sizeof (arg.ch); break; 2211 case 'h': arg.ch = SvUV (sv); size = sizeof (arg.ch); break;
2211 case 'f': arg.cf = SvNV (sv); size = sizeof (arg.cf); break; 2212 case 'f': arg.cf = SvNV (sv); size = sizeof (arg.cf); break;
2212 case 'd': arg.cd = SvNV (sv); size = sizeof (arg.cd); break; 2213 case 'd': arg.cd = SvNV (sv); size = sizeof (arg.cd); break;
2213 case 'z': arg.cz = SvUV (sv); size = sizeof (arg.cz); break;
2214 2214
2215 case 'z': nullarg = 1; size = SvIV (sv); break;
2216
2215 case 'm': arg.cm = SvCLOBJ ("OpenCL::Kernel::setf", "m", sv, "OpenCL::Memory" ); size = sizeof (arg.cm); break; 2217 case 'm': nullarg = !SvOK (sv); arg.cm = SvCLOBJ ("OpenCL::Kernel::setf", "m", sv, "OpenCL::Memory" ); size = sizeof (arg.cm); break;
2216 case 'a': arg.ca = SvCLOBJ ("OpenCL::Kernel::setf", "a", sv, "OpenCL::Sampler"); size = sizeof (arg.ca); break; 2218 case 'a': nullarg = !SvOK (sv); arg.ca = SvCLOBJ ("OpenCL::Kernel::setf", "a", sv, "OpenCL::Sampler"); size = sizeof (arg.ca); break;
2217 case 'e': arg.ca = SvCLOBJ ("OpenCL::Kernel::setf", "e", sv, "OpenCL::Event" ); size = sizeof (arg.ce); break; 2219 case 'e': nullarg = !SvOK (sv); arg.ca = SvCLOBJ ("OpenCL::Kernel::setf", "e", sv, "OpenCL::Event" ); size = sizeof (arg.ce); break;
2218 2220
2219 default: 2221 default:
2220 croak ("OpenCL::Kernel::setf format character '%c' not supported", type); 2222 croak ("OpenCL::Kernel::setf format character '%c' not supported", type);
2221 } 2223 }
2222 2224
2223 clSetKernelArg (self, i - 2, size, &arg); 2225 res = clSetKernelArg (self, i - 2, size, nullarg ? 0 : &arg);
2226 if (res)
2227 croak ("OpenCL::Kernel::setf kernel parameter '%c' (#%d): %s", type, i - 2, err2str (res));
2224 } 2228 }
2225 2229
2226 if (i != items) 2230 if (i != items)
2227 croak ("OpenCL::Kernel::setf format string too short (too many arguments)"); 2231 croak ("OpenCL::Kernel::setf format string too short (too many arguments)");
2228 2232
2282 clSetKernelArg (self, idx, sizeof (value), &value); 2286 clSetKernelArg (self, idx, sizeof (value), &value);
2283 2287
2284void 2288void
2285set_memory (OpenCL::Kernel self, cl_uint idx, OpenCL::Memory_ornull value) 2289set_memory (OpenCL::Kernel self, cl_uint idx, OpenCL::Memory_ornull value)
2286 CODE: 2290 CODE:
2287 clSetKernelArg (self, idx, sizeof (value), &value); 2291 clSetKernelArg (self, idx, sizeof (value), value ? &value : 0);
2288 2292
2289void 2293void
2290set_buffer (OpenCL::Kernel self, cl_uint idx, OpenCL::Buffer_ornull value) 2294set_buffer (OpenCL::Kernel self, cl_uint idx, OpenCL::Buffer_ornull value)
2291 CODE: 2295 CODE:
2292 clSetKernelArg (self, idx, sizeof (value), &value); 2296 clSetKernelArg (self, idx, sizeof (value), value ? &value : 0);
2293 2297
2294void 2298void
2295set_image (OpenCL::Kernel self, cl_uint idx, OpenCL::Image_ornull value) 2299set_image (OpenCL::Kernel self, cl_uint idx, OpenCL::Image_ornull value)
2296 ALIAS: 2300 ALIAS:
2297 set_image2d = 0 2301 set_image2d = 0
2298 set_image3d = 0 2302 set_image3d = 0
2299 CODE: 2303 CODE:
2300 clSetKernelArg (self, idx, sizeof (value), &value); 2304 clSetKernelArg (self, idx, sizeof (value), value ? &value : 0);
2301 2305
2302void 2306void
2303set_sampler (OpenCL::Kernel self, cl_uint idx, OpenCL::Sampler value) 2307set_sampler (OpenCL::Kernel self, cl_uint idx, OpenCL::Sampler value)
2304 CODE: 2308 CODE:
2305 clSetKernelArg (self, idx, sizeof (value), &value); 2309 clSetKernelArg (self, idx, sizeof (value), &value);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines