webcl-nodep
Version:
A fork of node-webcl without dependencies other than OpenCL
804 lines (716 loc) • 36.2 kB
JavaScript
// Copyright (c) 2011-2012, Motorola Mobility, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the Motorola Mobility, Inc. nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"use strict";
var cl = require('./build/Release/webcl.node');
module.exports = cl;
cl.size = {};
cl.size.CHAR = cl.size_CHAR;
cl.size.SHORT = cl.size_SHORT;
cl.size.INT = cl.size_INT;
cl.size.LONG = cl.size_LONG;
cl.size.FLOAT = cl.size_FLOAT;
cl.size.DOUBLE = cl.size_DOUBLE;
cl.size.HALF = cl.size_HALF;
cl.type = {};
cl.type.CHAR = 0;
cl.type.UCHAR = 1;
cl.type.SHORT = 2;
cl.type.USHORT = 3;
cl.type.INT = 4;
cl.type.UINT = 5;
cl.type.LONG = 6;
cl.type.ULONG = 7;
cl.type.FLOAT = 8;
cl.type.HALF = 9;
cl.type.DOUBLE = 10;
cl.type.QUAD = 11;
cl.type.LONG_LONG = 12;
cl.type.VEC2 = 1 << 16;
cl.type.VEC3 = 1 << 17;
cl.type.VEC4 = 1 << 18;
cl.type.VEC8 = 1 << 19;
cl.type.VEC16 = 1 << 20;
cl.type.LOCAL_MEMORY_SIZE = 0xFF;
//////////////////////////////
// WebCL object
//////////////////////////////
function checkObjectType(obj, type) {
//console.log('checking object: '+obj+' type: '+Object.prototype.toString.call(obj)+' for type '+type);
return Object.prototype.toString.call(obj) === '[object '+type+']';
}
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
var _getPlatforms = cl.getPlatforms;
cl.getPlatforms = function () {
if (!(arguments.length === 0)) {
throw new TypeError('Expected getPlatforms()');
}
return _getPlatforms();
}
var _createContext = cl.createContext;
cl.createContext = function (properties, data, callback) {
if (!((properties===null || typeof properties === 'undefined' || typeof properties === 'object') &&
(callback===null || typeof callback === 'undefined' || typeof callback === 'function')
)) {
throw new TypeError('Expected createContext(optional WebCLContextProperties properties, optional any data, optional function callback)');
}
return _createContext(properties, data, callback);
}
var _waitForEvents = cl.waitForEvents;
cl.waitForEvents = function (events) {
if (!(arguments.length === 1 && typeof events === 'object' )) {
throw new TypeError('Expected waitForEvents(WebCLEvent[] events)');
}
return _waitForEvents(events);
}
var _releaseAll = cl.releaseAll;
cl.releaseAll = function () {
return _releaseAll();
}
//////////////////////////////
//WebCLCommandQueue object
//////////////////////////////
cl.WebCLCommandQueue.prototype.release=function () {
return this._release();
}
cl.WebCLCommandQueue.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLCommandQueue.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLCommandQueue.prototype.enqueueNDRangeKernel=function (kernel, offsets, globals, locals, event_list, event) {
if (!(arguments.length>= 4 && checkObjectType(kernel, 'WebCLKernel') &&
typeof offsets === 'object' && typeof globals === 'object' && typeof locals === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueNDRangeKernel(WebCLKernel kernel, int[3] offsets, int[3] globals, int[3] locals, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueNDRangeKernel(kernel, offsets, globals, locals, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueTask=function (kernel, event_list, event) {
if (!(arguments.length >= 1 && checkObjectType(kernel, 'WebCLKernel') &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueTask(WebCLKernel kernel, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueTask(kernel, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueWriteBuffer=function (buffer, blocking_write, offset, cb, ptr, event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(buffer, 'WebCLBuffer') &&
(typeof blocking_write === 'boolean' || typeof blocking_write === 'number') &&
typeof offset === 'number' && typeof cb === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueWriteBuffer(WebCLBuffer buffer, boolean blocking_write, ' +
'uint offset, uint cb, ArrayBuffer ptr, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueWriteBuffer(buffer, blocking_write, offset, cb, ptr, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueReadBuffer=function (buffer, blocking_read, offset, cb, ptr, event_list, event) {
//console.log('checking object: type: '+Object.prototype.toString.call(ptr)+' for typeof: '+typeof(ptr));
if (!(arguments.length >= 5 &&
checkObjectType(buffer, 'WebCLBuffer') &&
(typeof blocking_read === 'boolean' || typeof blocking_read === 'number') &&
typeof offset === 'number' && typeof cb === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueReadBuffer(WebCLBuffer buffer, boolean blocking_read, ' +
'uint offset, uint cb, ArrayBuffer ptr, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueReadBuffer(buffer, blocking_read, offset, cb, ptr, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueCopyBuffer=function (src_buffer, dst_buffer,
src_offset, dst_offset, size,
event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(src_buffer, 'WebCLBuffer') &&
checkObjectType(dst_buffer, 'WebCLBuffer') &&
typeof src_offset === 'number' && typeof dst_offset === 'number' && typeof size === 'number' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueCopyBuffer(WebCLBuffer src_buffer, WebCLBuffer dst_buffer, ' +
'int src_offset, int dst_offset, int size, ' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueCopyBuffer(src_buffer, dst_buffer,
src_offset, dst_offset, size,
event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueWriteBufferRect=function (buffer, blocking_write,
buffer_origin, host_origin, region,
buffer_row_pitch, buffer_slice_pitch,
host_row_pitch, host_slice_pitch,
ptr,
event_list, event) {
if (!(arguments.length >= 9 &&
checkObjectType(buffer, 'WebCLBuffer') &&
(typeof blocking_write === 'boolean' || typeof blocking_write === 'number') &&
typeof buffer_origin === 'object' && typeof host_origin === 'object' && typeof region === 'object' &&
typeof host_row_pitch === 'number' && typeof host_slice_pitch === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueWriteBufferRect(WebCLBuffer memory_object, ' +
'boolean blocking_write, uint[3] buffer_origin, uint[3] host_origin, uint[3] region, ' +
'uint buffer_row_pitch, uint buffer_slice_pitch, uint host_row_pitch, uint host_slice_pitch, ' +
'ArrayBuffer ptr,' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueWriteBufferRect(buffer, blocking_write,
buffer_origin, host_origin, region,
buffer_row_pitch, buffer_slice_pitch,
host_row_pitch, host_slice_pitch,
ptr,
event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueReadBufferRect=function (buffer, blocking_read,
buffer_origin, host_origin, region,
buffer_row_pitch, buffer_slice_pitch,
host_row_pitch, host_slice_pitch,
ptr,
event_list, event) {
if (!(arguments.length >= 9 &&
checkObjectType(buffer, 'WebCLBuffer') &&
(typeof blocking_read === 'boolean' || typeof blocking_read === 'number') &&
typeof buffer_origin === 'object' && typeof host_origin === 'object' && typeof region === 'object' &&
typeof host_row_pitch === 'number' && typeof host_slice_pitch === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueReadBufferRect(WebCLBuffer buffer, ' +
'boolean blocking_write, uint[3] buffer_origin, uint[3] host_origin, uint[3] region, ' +
'uint buffer_row_pitch, uint buffer_slice_pitch, uint host_row_pitch, uint host_slice_pitch, ' +
'ArrayBuffer ptr,' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueReadBufferRect(buffer, blocking_read,
buffer_origin, host_origin, region,
buffer_row_pitch, buffer_slice_pitch,
host_row_pitch, host_slice_pitch,
ptr,
event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueCopyBufferRect=function (src_buffer, dst_buffer,
src_origin, dst_origin, region,
src_row_pitch, src_slice_pitch,
dst_row_pitch, dst_slice_pitch,
event_list, event) {
if (!(arguments.length >= 9 &&
checkObjectType(src_buffer, 'WebCLBuffer') && checkObjectType(dst_buffer, 'WebCLBuffer') &&
typeof src_origin === 'object' && typeof dst_origin === 'object' && typeof region === 'object' &&
typeof src_row_pitch === 'number' && typeof src_slice_pitch === 'number' &&
typeof dst_row_pitch === 'number' && typeof dst_slice_pitch === 'number' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueCopyBufferRect(WebCLBuffer src_buffer, WebCLBuffer dst_buffer, ' +
'uint[3] src_origin, uint[3] dst_origin, uint[3] region, ' +
'uint src_row_pitch, uint src_slice_pitch, ' +
'uint dst_row_pitch, uint dst_slice_pitch, ' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueCopyBufferRect(src_buffer, dst_buffer,
src_origin, dst_origin, region,
src_row_pitch, src_slice_pitch,
dst_row_pitch, dst_slice_pitch,
event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueWriteImage=function (image, blocking_write, origin, region, row_pitch, slice_pitch, ptr, event_list, event) {
//console.log('checking object: type: '+Object.prototype.toString.call(ptr)+' for typeof: '+typeof(ptr));
if (!(arguments.length >= 7 &&
checkObjectType(image, 'WebCLImage') &&
typeof origin === 'object' &&
typeof region === 'object' &&
typeof row_pitch === 'number' &&
typeof slice_pitch === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueWriteImage(WebCLImage image, boolean blocking_write, ' +
'int[3] origin, int[3] region, int row_pitch, int slice_pitch, ArrayBuffer ptr, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueWriteImage(image, blocking_write, origin, region, row_pitch, slice_pitch, ptr, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueReadImage=function (image, blocking_read, origin, region, row_pitch, slice_pitch,
ptr, event_list, event) {
if (!(arguments.length >= 7 &&
checkObjectType(image, 'WebCLImage') &&
typeof origin === 'object' &&
typeof region === 'object' &&
typeof row_pitch === 'number' &&
typeof slice_pitch === 'number' &&
typeof ptr === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueReadImage(WebCLImage image, boolean blocking_write, ' +
'uint[3] region, uint row_pitch, uint slice_pitch, ' +
'ArrayBuffer ptr, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueReadImage(image, blocking_read, origin, region, row_pitch, slice_pitch, ptr, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueCopyImage=function (src_image, dst_image, src_origin, dst_origin, region,
event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(src_image, 'WebCLImage') &&
checkObjectType(dst_image, 'WebCLImage') &&
typeof src_origin === 'object' &&
typeof dst_origin === 'object' &&
typeof region === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueCopyImage(WebCLImage src_image, WebCLImage dst_image, ' +
'uint[3] src_origin, uint[3] dst_origin, uint[3] region, ' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueCopyImage(src_image, dst_image, src_origin, dst_origin, region, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueCopyImageToBuffer=function (src_image, dst_buffer, src_origin, region, dst_offset,
event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(src_image, 'WebCLImage') &&
checkObjectType(dst_buffer, 'WebCLBuffer') &&
typeof src_origin === 'object' &&
typeof region === 'object' &&
typeof dst_offset === 'number' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueCopyImageToBuffer(WebCLImage src_image, WebCLBuffer dst_buffer, ' +
'uint[3] src_origin, uint[3] region, uint dst_offset, ' +
'WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueCopyImageToBuffer(src_image, dst_buffer, src_origin, region, dst_offset, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueCopyBufferToImage=function (src_buffer, dst_image, src_offset, dst_origin,
region, event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(src_buffer, 'WebCLBuffer') &&
checkObjectType(dst_image, 'WebCLImage') &&
typeof src_offset === 'number' &&
typeof dst_origin === 'object' &&
typeof region === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueCopyBufferToImage(WebCLBuffer src_buffer, WebCLImage dst_image, ' +
'uint src_offset, uint[3] dst_origin, uint[4] region, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueCopyBufferToImage(src_buffer, dst_image, src_offset, dst_origin, region, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueMapBuffer=function (memory_object, blocking, flags, offset, size, event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(memory_object, 'WebCLBuffer') &&
(typeof blocking === 'boolean' || typeof blocking === 'number') &&
typeof flags === 'number' &&
typeof offset === 'number' &&
typeof size === 'number' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueMapBuffer(WebCLBuffer memory_object, boolean blocking, CLenum flags, uint offset, uint size, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueMapBuffer(memory_object, blocking, flags, offset, size, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueMapImage=function (memory_object, blocking, flags, origin, region, event_list, event) {
if (!(arguments.length >= 5 &&
checkObjectType(memory_object, 'WebCLImage') &&
(typeof blocking === 'boolean' || typeof blocking === 'number') &&
typeof flags === 'number' &&
typeof origin === 'number' &&
typeof region === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueMapImage(WebCLImage memory_object, boolean blocking, CLenum flags, uint origin, WebCLRegion region, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueMapImage(memory_object, blocking, flags, origin, region, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueUnmapMemObject=function (memory_object, region, event_list, event) {
if (!(arguments.length >= 2 &&
(checkObjectType(memory_object, 'WebCLBuffer') || checkObjectType(memory_object, 'WebCLImage')) &&
typeof region === 'object' &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueUnmapMemObject(WebCLMemoryObject memory_object, ArrayBuffer region, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueUnmapMemObject(memory_object, region, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueMarker=function (event_list, event) {
if (!(arguments.length >= 0 &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueMarker(WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueMarker(event_list, event);
}
/*cl.WebCLCommandQueue.prototype.enqueueWaitForEvents=function (event_wait_list) {
if (!(arguments.length >=0 &&
(typeof event_list === 'undefined' || typeof event_list === 'object') )) {
throw new TypeError('Expected WebCLCommandQueue.enqueueWaitForEvents(WebCLEvent[] event_wait_list)');
}
return this._enqueueWaitForEvents(event_wait_list);
}*/
cl.WebCLCommandQueue.prototype.enqueueBarrier=function (event_list, event) {
if (!(arguments.length >= 0 &&
(typeof event_list === 'undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLCommandQueue.enqueueBarrier(WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueBarrier(event_list, event);
}
cl.WebCLCommandQueue.prototype.flush=function () {
if (!(arguments.length === 0)) {
throw new TypeError('Expected WebCLCommandQueue.flush()');
}
return this._flush();
}
cl.WebCLCommandQueue.prototype.finish=function () {
if (!(arguments.length === 0)) {
throw new TypeError('Expected WebCLCommandQueue.finish()');
}
return this._finish();
}
cl.WebCLCommandQueue.prototype.enqueueAcquireGLObjects=function (mem_objects, event_list, event) {
if (!(arguments.length >= 1 &&
typeof mem_objects === 'object' &&
(typeof event_list==='undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLEvent WebCLGL.enqueueAcquireGLObjects(WebCLMemoryObject[] mem_objects, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueAcquireGLObjects(mem_objects, event_list, event);
}
cl.WebCLCommandQueue.prototype.enqueueReleaseGLObjects=function (mem_objects, event_list, event) {
if (!(arguments.length >= 1 &&
typeof mem_objects === 'object' &&
(typeof event_list==='undefined' || typeof event_list === 'object') &&
(typeof event === 'undefined' || checkObjectType(event, 'WebCLEvent'))
)) {
throw new TypeError('Expected WebCLEvent WebCLGL.enqueueReleaseGLObjects(WebCLMemoryObject[] mem_objects, WebCLEvent[] event_list, WebCLEvent event)');
}
return this._enqueueReleaseGLObjects(mem_objects, event_list, event);
}
//////////////////////////////
//WebCLContext object
//////////////////////////////
cl.WebCLContext.prototype.release=function () {
return this._release();
}
cl.WebCLContext.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLContext.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLContext.prototype.createProgram=function (sources) {
if (!(arguments.length === 1 && typeof sources === 'string')) {
throw new TypeError('Expected WebCLContext.createProgram(string sources)');
}
return this._createProgram(sources);
}
// TODO
cl.WebCLContext.prototype.createProgramWithBinaries=function (devices, binaries) {
if (!(arguments.length === 2 && typeof devices === 'object' && typeof binaries === 'object')) {
throw new TypeError('Expected WebCLContext.createProgramWithBinaries(WebCLDevice[] devices, Object[] binaries)');
}
return this._createProgramWithBinaries(devices, binaries);
}
cl.WebCLContext.prototype.createCommandQueue=function (device, properties) {
if (!(arguments.length >=1 && checkObjectType(device, 'WebCLDevice') &&
(properties==null || typeof properties === 'number' || typeof properties === 'object'))) {
throw new TypeError('Expected WebCLContext.createCommandQueue(WebCLDevice device, CLenum[] properties)');
}
return this._createCommandQueue(device, properties);
}
cl.WebCLContext.prototype.createBuffer=function (flags, size, host_ptr) {
if (!(arguments.length >= 2 && typeof flags === 'number' && typeof size === 'number' &&
(host_ptr === null || typeof host_ptr === 'undefined' || typeof host_ptr === 'object') )) {
throw new TypeError('Expected WebCLContext.createBuffer(CLenum flags, int size, optional ArrayBuffer host_ptr)');
}
return this._createBuffer(flags, size, host_ptr);
}
cl.WebCLContext.prototype.createImage=function (flags, descriptor, host_ptr) {
if (!(arguments.length === 3 && typeof flags === 'number' &&
typeof descriptor === 'object' &&
typeof host_ptr === 'object')) {
throw new TypeError('Expected WebCLContext.createImage3D(CLenum flags, cl.WebCLImageDescriptor descriptor, ' +
'ArrayBuffer host_ptr)');
}
return this._createImage(flags, descriptor, host_ptr);
}
cl.WebCLContext.prototype.createSampler=function (normalized_coords, addressing_mode, filter_mode) {
if (!(arguments.length === 3 &&
(typeof normalized_coords === 'number' || typeof normalized_coords === 'boolean') &&
typeof addressing_mode === 'number' &&
typeof filter_mode === 'number')) {
throw new TypeError('Expected WebCLContext.createSampler(bool normalized_coords, CLenum addressing_mode, CLenum filter_mode)');
}
return this._createSampler(normalized_coords, addressing_mode, filter_mode);
}
cl.WebCLContext.prototype.createUserEvent=function () {
if (!(arguments.length === 0)) {
throw new TypeError('Expected WebCLContext.createUserEvent()');
}
return this._createUserEvent();
}
cl.WebCLContext.prototype.getSupportedImageFormats=function (flags, image_type) {
if (!(arguments.length === 2 && typeof flags === 'number' && typeof image_type === 'number')) {
throw new TypeError('Expected WebCLContext.getSupportedImageFormats(CLenum flags, CLenum image_type)');
}
return this._getSupportedImageFormats(flags, image_type);
}
cl.WebCLContext.prototype.createFromGLBuffer=function (flags, buffer) {
if (!(arguments.length === 2 && typeof flags === 'number' && typeof buffer ==='object')) {
throw new TypeError('Expected WebCLContext.createFromGLBuffer(CLenum flags, WebGLBuffer buffer)');
}
return this._createFromGLBuffer(flags, buffer ? buffer._ : 0);
}
cl.WebCLContext.prototype.createFromGLRenderbuffer=function (flags, buffer) {
if (!(arguments.length === 2 && typeof flags === 'number' && typeof buffer ==='object')) {
throw new TypeError('Expected WebCLContext.createFromGLRenderbuffer(CLenum flags, WebGLRenderbuffer buffer)');
}
return this._createFromGLRenderbuffer(flags, buffer ? buffer._ : 0);
}
cl.WebCLContext.prototype.createFromGLTexture=function (flags, texture_target, miplevel, texture) {
if (!(arguments.length === 4 && typeof flags === 'number' &&
typeof texture_target ==='number' &&
typeof miplevel ==='number' &&
typeof texture ==='object'
)) {
throw new TypeError('Expected WebCLContext.createFromGLTexture(CLenum flags, GLenum texture_target, GLint miplevel, WebGLTexture2D texture)');
}
return this._createFromGLTexture(flags, texture_target, miplevel, texture ? texture._ : 0);
}
//////////////////////////////
//WebCLDevice object
//////////////////////////////
cl.WebCLDevice.prototype.release=function () {
return this._release();
}
cl.WebCLDevice.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLDevice.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLDevice.prototype.getExtension=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLDevice.getExtension(CLenum param_name)');
}
return this._getExtension(param_name);
}
//////////////////////////////
//WebCLEvent object
//////////////////////////////
cl.WebCLEvent.prototype.release=function () {
return this._release();
}
cl.WebCLEvent.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLEvent.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLEvent.prototype.getProfilingInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLEvent.getProfilingInfo(CLenum param_name)');
}
return this._getProfilingInfo(param_name);
}
cl.WebCLEvent.prototype.setUserEventStatus=function (execution_status) {
if (!(arguments.length === 1 && typeof execution_status === 'number')) {
throw new TypeError('Expected WebCLEvent.setUserEventStatus(CLenum execution_status)');
}
return this._setUserEventStatus(execution_status);
}
cl.WebCLEvent.prototype.setCallback=function (execution_status, fct, args) {
if (!(arguments.length >= 2 && typeof execution_status === 'number' &&
typeof fct === 'function')) {
throw new TypeError('Expected WebCLEvent.setCallback(CLenum execution_status, function callback, any args)');
}
return this._setCallback(execution_status, fct, args);
}
//////////////////////////////
//WebCLKernel object
//////////////////////////////
cl.WebCLKernel.prototype.release=function () {
return this._release();
}
cl.WebCLKernel.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLKernel.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLKernel.prototype.getWorkGroupInfo=function (device, param_name) {
if (!(arguments.length === 2 && checkObjectType(device, 'WebCLDevice') && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLKernel.getWorkGroupInfo(WebCLDevice device, CLenum param_name)');
}
return this._getWorkGroupInfo(device, param_name);
}
cl.WebCLKernel.prototype.setArg=function (index, value, type) {
if (!(arguments.length >= 2 && typeof index === 'number' &&
(typeof value === 'number' || typeof value === 'object') &&
(typeof type == 'undefined' || typeof type === 'number') )) {
throw new TypeError('Expected WebCLKernel.setArg(int index, any value, optional WebCL.types type)');
}
return this._setArg(index, value, type);
}
//////////////////////////////
//WebCLMappedRegion object
//////////////////////////////
//static JS_METHOD(getBuffer);
//////////////////////////////
//WebCLMemoryObject object
//////////////////////////////
cl.WebCLMemoryObject.prototype.release=function () {
return this._release();
}
cl.WebCLMemoryObject.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLMemoryObject.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLMemoryObject.prototype.getGLObjectInfo=function (object_type, param_name) {
if (!(arguments.length === 1 && typeof object_type === 'number' && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLMemoryObject.getGLObjectInfo(CLenum object_type, GLenum param_name)');
}
return this._getGLObjectInfo(object_type, param_name);
}
//////////////////////////////
//WebCLBuffer object
//////////////////////////////
cl.WebCLBuffer.prototype.release=function () {
return this._release();
}
cl.WebCLBuffer.prototype.createSubBuffer=function (flags, type, region) {
if (!(arguments.length === 3 && typeof flags === 'number' && typeof type === 'number' && typeof region === 'object')) {
throw new TypeError('Expected WebCLMemoryObject.createSubBuffer(CLenum flags, CLenum type, WebCLRegion region)');
}
return this._createSubBuffer(flags, type, region);
}
//////////////////////////////
//WebCLImage object
//////////////////////////////
cl.WebCLImage.prototype.release=function () {
return this._release();
}
cl.WebCLImage.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLImage.getInfo(CLenum param_name)');
}
return this._getImageInfo(param_name);
}
cl.WebCLImage.prototype.getGLTextureInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLImage.getGLTextureInfo(CLenum param_name)');
}
return this._getGLTextureInfo(param_name);
}
//////////////////////////////
//WebCLPlatform object
//////////////////////////////
cl.WebCLPlatform.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLPlatform.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLPlatform.prototype.getDevices=function (device_type) {
if (!(arguments.length === 1 && typeof device_type === 'number')) {
throw new TypeError('Expected WebCLPlatform.getDevices(CLenum device_type)');
}
return this._getDevices(device_type);
}
//////////////////////////////
//WebCLProgram object
//////////////////////////////
cl.WebCLProgram.prototype.release=function () {
return this._release();
}
cl.WebCLProgram.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLProgram.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
cl.WebCLProgram.prototype.getBuildInfo=function (device, param_name) {
if (!(arguments.length === 2 && checkObjectType(device, 'WebCLDevice') && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLProgram.getBuildInfo(WebCLDevice device, CLenum param_name)');
}
return this._getBuildInfo(device, param_name);
}
cl.WebCLProgram.prototype.build=function (devices, options, data, callback) {
if ( !(arguments.length === 1 && typeof devices === 'object') &&
!(arguments.length >= 2 && typeof devices === 'object' &&
(options==null || typeof options==='undefined' || typeof options === 'string')) &&
!(typeof data === 'undefined' || typeof data === 'object') &&
!(typeof callback === 'undefined' || callback==null || typeof callback === 'function')
) {
throw new TypeError('Expected WebCLProgram.build(WebCLDevice[] devices, String options, any data, function callback)');
}
return this._build(devices, options, data, callback);
}
cl.WebCLProgram.prototype.createKernel=function (name) {
if (!(arguments.length === 1 && typeof name === 'string')) {
throw new TypeError('Expected WebCLProgram.createKernel(String name)');
}
return this._createKernel(name);
}
//////////////////////////////
//WebCLSampler object
//////////////////////////////
cl.WebCLSampler.prototype.release=function () {
return this._release();
}
cl.WebCLSampler.prototype.getInfo=function (param_name) {
if (!(arguments.length === 1 && typeof param_name === 'number')) {
throw new TypeError('Expected WebCLSampler.getInfo(CLenum param_name)');
}
return this._getInfo(param_name);
}
//////////////////////////////
// extensions
//////////////////////////////