mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 22:07:41 +00:00
b=565404; add WebGLUniformLocation object; r=vlad
This commit is contained in:
parent
723eb61a5d
commit
4268806ff0
@ -408,9 +408,13 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_iv(JSContext *cx, uintN argc, js
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
uint32 location;
|
||||
if (!JS_ValueToECMAUint32(cx, argv[0], &location))
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
rv = xpc_qsUnwrapArg(cx, argv[0], &location, &location_selfref.ptr, &argv[0]);
|
||||
if (NS_FAILED(rv)) {
|
||||
xpc_qsThrowBadArg(cx, rv, vp, 0);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
if (!JSVAL_IS_OBJECT(argv[1])) {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
@ -478,9 +482,13 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_fv(JSContext *cx, uintN argc, js
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
uint32 location;
|
||||
if (!JS_ValueToECMAUint32(cx, argv[0], &location))
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
rv = xpc_qsUnwrapArg(cx, argv[0], &location, &location_selfref.ptr, &argv[0]);
|
||||
if (NS_FAILED(rv)) {
|
||||
xpc_qsThrowBadArg(cx, rv, vp, 0);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
if (!JSVAL_IS_OBJECT(argv[1])) {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
@ -548,11 +556,15 @@ helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv(JSContext *cx, uintN ar
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
uint32 location;
|
||||
int32 transpose;
|
||||
if (!JS_ValueToECMAUint32(cx, argv[0], &location))
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
rv = xpc_qsUnwrapArg(cx, argv[0], &location, &location_selfref.ptr, &argv[0]);
|
||||
if (NS_FAILED(rv)) {
|
||||
xpc_qsThrowBadArg(cx, rv, vp, 0);
|
||||
return JS_FALSE;
|
||||
|
||||
}
|
||||
|
||||
int32 transpose;
|
||||
if (!JS_ValueToECMAInt32(cx, argv[1], &transpose))
|
||||
return JS_FALSE;
|
||||
|
||||
@ -760,7 +772,8 @@ nsICanvasRenderingContextWebGL_VertexAttrib4fv(JSContext *cx, uintN argc, jsval
|
||||
#ifdef JS_TRACER
|
||||
|
||||
static inline jsval FASTCALL
|
||||
helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg, int nElements)
|
||||
helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(JSContext *cx, JSObject *obj, JSObject *locationobj,
|
||||
JSObject *arg, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
|
||||
@ -774,6 +787,15 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(JSContext *cx, JSObject *o
|
||||
|
||||
js::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
nsresult rv_convert_arg0
|
||||
= xpc_qsUnwrapThis(cx, locationobj, nsnull, &location, &location_selfref.ptr, &vp.array[1], nsnull);
|
||||
if (NS_FAILED(rv_convert_arg0)) {
|
||||
js_SetTraceableNativeFailed(cx);
|
||||
return JSVAL_VOID;
|
||||
}
|
||||
|
||||
js::TypedArray *wa = 0;
|
||||
|
||||
if (helper_isInt32Array(arg)) {
|
||||
@ -815,7 +837,8 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(JSContext *cx, JSObject *o
|
||||
}
|
||||
|
||||
static inline jsval FASTCALL
|
||||
helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg, int nElements)
|
||||
helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(JSContext *cx, JSObject *obj, JSObject *locationobj,
|
||||
JSObject *arg, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
|
||||
@ -829,6 +852,15 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(JSContext *cx, JSObject *o
|
||||
|
||||
js::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
nsresult rv_convert_arg0
|
||||
= xpc_qsUnwrapThis(cx, locationobj, nsnull, &location, &location_selfref.ptr, &vp.array[1], nsnull);
|
||||
if (NS_FAILED(rv_convert_arg0)) {
|
||||
js_SetTraceableNativeFailed(cx);
|
||||
return JSVAL_VOID;
|
||||
}
|
||||
|
||||
js::TypedArray *wa = 0;
|
||||
|
||||
if (helper_isFloat32Array(arg)) {
|
||||
@ -870,7 +902,8 @@ helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(JSContext *cx, JSObject *o
|
||||
}
|
||||
|
||||
static inline jsval FASTCALL
|
||||
helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSBool transpose, JSObject *arg, int nElements)
|
||||
helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(JSContext *cx, JSObject *obj, JSObject *locationobj,
|
||||
JSBool transpose, JSObject *arg, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
|
||||
@ -884,6 +917,15 @@ helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(JSContext *cx, JSObj
|
||||
|
||||
js::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
nsresult rv_convert_arg0
|
||||
= xpc_qsUnwrapThis(cx, locationobj, nsnull, &location, &location_selfref.ptr, &vp.array[1], nsnull);
|
||||
if (NS_FAILED(rv_convert_arg0)) {
|
||||
js_SetTraceableNativeFailed(cx);
|
||||
return JSVAL_VOID;
|
||||
}
|
||||
|
||||
js::TypedArray *wa = 0;
|
||||
|
||||
if (helper_isFloat32Array(arg)) {
|
||||
@ -922,102 +964,102 @@ helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(JSContext *cx, JSObj
|
||||
}
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform1iv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform1iv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(cx, obj, location, arg, 1);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform1iv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform1iv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform1iv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform2iv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform2iv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(cx, obj, location, arg, 2);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform2iv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform2iv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform2iv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform3iv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform3iv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(cx, obj, location, arg, 3);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform3iv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform3iv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform3iv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform4iv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform4iv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_iv_tn(cx, obj, location, arg, 4);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform4iv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform4iv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform4iv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform1fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform1fv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(cx, obj, location, arg, 1);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform1fv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform1fv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform1fv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform2fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform2fv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(cx, obj, location, arg, 2);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform2fv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform2fv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform2fv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform3fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform3fv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(cx, obj, location, arg, 3);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform3fv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform3fv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform3fv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_Uniform4fv_tn(JSContext *cx, JSObject *obj, uint32 location, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_Uniform4fv_tn(JSContext *cx, JSObject *obj, JSObject *location, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_Uniform_x_fv_tn(cx, obj, location, arg, 4);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_Uniform4fv,
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform4fv_tn, CONTEXT, THIS, UINT32, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(4, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_Uniform4fv_tn, CONTEXT, THIS, OBJECT, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix2fv_tn(JSContext *cx, JSObject *obj, uint32 loc, JSBool transpose, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix2fv_tn(JSContext *cx, JSObject *obj, JSObject *loc, JSBool transpose, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(cx, obj, loc, transpose, arg, 2);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_UniformMatrix2fv,
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix2fv_tn, CONTEXT, THIS, UINT32, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix2fv_tn, CONTEXT, THIS, OBJECT, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix3fv_tn(JSContext *cx, JSObject *obj, uint32 loc, JSBool transpose, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix3fv_tn(JSContext *cx, JSObject *obj, JSObject *loc, JSBool transpose, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(cx, obj, loc, transpose, arg, 3);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_UniformMatrix3fv,
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix3fv_tn, CONTEXT, THIS, UINT32, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix3fv_tn, CONTEXT, THIS, OBJECT, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
static jsval FASTCALL
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix4fv_tn(JSContext *cx, JSObject *obj, uint32 loc, JSBool transpose, JSObject *arg)
|
||||
nsICanvasRenderingContextWebGL_UniformMatrix4fv_tn(JSContext *cx, JSObject *obj, JSObject *loc, JSBool transpose, JSObject *arg)
|
||||
{
|
||||
return helper_nsICanvasRenderingContextWebGL_UniformMatrix_x_fv_tn(cx, obj, loc, transpose, arg, 4);
|
||||
}
|
||||
|
||||
JS_DEFINE_TRCINFO_1(nsICanvasRenderingContextWebGL_UniformMatrix4fv,
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix4fv_tn, CONTEXT, THIS, UINT32, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
(5, (static, JSVAL_FAIL, nsICanvasRenderingContextWebGL_UniformMatrix4fv_tn, CONTEXT, THIS, OBJECT, BOOL, OBJECT, 0, nanojit::ACC_STORE_ANY)))
|
||||
|
||||
#endif /* JS_TRACER */
|
||||
|
@ -418,6 +418,18 @@ NS_INTERFACE_MAP_BEGIN(WebGLRenderbuffer)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(WebGLRenderbuffer)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_ADDREF(WebGLUniformLocation)
|
||||
NS_IMPL_RELEASE(WebGLUniformLocation)
|
||||
|
||||
DOMCI_DATA(WebGLUniformLocation, WebGLUniformLocation)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(WebGLUniformLocation)
|
||||
NS_INTERFACE_MAP_ENTRY(WebGLUniformLocation)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIWebGLUniformLocation)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(WebGLUniformLocation)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
#define NAME_NOT_SUPPORTED(base) \
|
||||
NS_IMETHODIMP base::GetName(WebGLuint *aName) \
|
||||
{ return NS_ERROR_NOT_IMPLEMENTED; } \
|
||||
@ -430,3 +442,13 @@ NAME_NOT_SUPPORTED(WebGLProgram)
|
||||
NAME_NOT_SUPPORTED(WebGLShader)
|
||||
NAME_NOT_SUPPORTED(WebGLFramebuffer)
|
||||
NAME_NOT_SUPPORTED(WebGLRenderbuffer)
|
||||
|
||||
/* [noscript] attribute WebGLint location; */
|
||||
NS_IMETHODIMP WebGLUniformLocation::GetLocation(WebGLint *aLocation)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
NS_IMETHODIMP WebGLUniformLocation::SetLocation(WebGLint aLocation)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
@ -69,6 +69,7 @@ class WebGLProgram;
|
||||
class WebGLShader;
|
||||
class WebGLFramebuffer;
|
||||
class WebGLRenderbuffer;
|
||||
class WebGLUniformLocation;
|
||||
|
||||
class WebGLZeroingObject;
|
||||
|
||||
@ -658,6 +659,33 @@ protected:
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(WebGLRenderbuffer, WEBGLRENDERBUFFER_PRIVATE_IID)
|
||||
|
||||
#define WEBGLUNIFORMLOCATION_PRIVATE_IID \
|
||||
{0x01a8a614, 0xb109, 0x42f1, {0xb4, 0x40, 0x8d, 0x8b, 0x87, 0x0b, 0x43, 0xa7}}
|
||||
class WebGLUniformLocation :
|
||||
public nsIWebGLUniformLocation,
|
||||
public WebGLZeroingObject
|
||||
{
|
||||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(WEBGLUNIFORMLOCATION_PRIVATE_IID)
|
||||
|
||||
WebGLUniformLocation(WebGLProgram *program, GLint location) :
|
||||
mProgram(program), mLocation(location) { }
|
||||
|
||||
WebGLProgram *Program() const { return mProgram; }
|
||||
GLint Location() const { return mLocation; }
|
||||
|
||||
// needed for our generic helpers to check nsIxxx parameters, see GetConcreteObject.
|
||||
PRBool Deleted() { return PR_FALSE; }
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIWEBGLUNIFORMLOCATION
|
||||
protected:
|
||||
WebGLObjectRefPtr<WebGLProgram> mProgram;
|
||||
GLint mLocation;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(WebGLUniformLocation, WEBGLUNIFORMLOCATION_PRIVATE_IID)
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -170,7 +170,7 @@ GetConcreteObjectAndGLName(BaseInterfaceType *aInterface,
|
||||
PRBool *isDeleted = 0)
|
||||
{
|
||||
PRBool result = GetConcreteObject(aInterface, aConcreteObject, isNull, isDeleted);
|
||||
if(result == PR_FALSE) return PR_FALSE;
|
||||
if (result == PR_FALSE) return PR_FALSE;
|
||||
*aGLObjectName = *aConcreteObject ? (*aConcreteObject)->GLName() : 0;
|
||||
return PR_TRUE;
|
||||
}
|
||||
@ -1782,31 +1782,52 @@ WebGLContext::GetTexParameter(WebGLenum target, WebGLenum pname)
|
||||
/* XXX fix */
|
||||
/* any getUniform(in WebGLProgram program, in WebGLUniformLocation location) raises(DOMException); */
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::GetUniform(nsIWebGLProgram *pobj, WebGLint location)
|
||||
WebGLContext::GetUniform(nsIWebGLProgram *pobj, nsIWebGLUniformLocation *ploc)
|
||||
{
|
||||
WebGLuint progname;
|
||||
if (!GetGLName<WebGLProgram>(pobj, &progname))
|
||||
WebGLProgram *prog;
|
||||
if (!GetConcreteObjectAndGLName(pobj, &prog, &progname))
|
||||
return ErrorInvalidOperation("GetUniform: invalid program");
|
||||
|
||||
WebGLUniformLocation *location;
|
||||
if (!GetConcreteObject(ploc, &location))
|
||||
return ErrorInvalidValue("GetUniform: invalid uniform location");
|
||||
|
||||
if (location->Program() != prog)
|
||||
return ErrorInvalidValue("GetUniform: this uniform location corresponds to another program");
|
||||
|
||||
NativeJSContext js;
|
||||
if (NS_FAILED(js.error))
|
||||
return js.error;
|
||||
|
||||
MakeContextCurrent();
|
||||
|
||||
GLint uArraySize = 0;
|
||||
GLenum uType = 0;
|
||||
GLint uniforms = 0;
|
||||
gl->fGetProgramiv(progname, LOCAL_GL_ACTIVE_UNIFORMS, &uniforms);
|
||||
|
||||
gl->fGetActiveUniform(progname, location, 0, NULL, &uArraySize, &uType, NULL);
|
||||
if (uArraySize == 0)
|
||||
// we now need the type info to switch between fGetUniformfv and fGetUniformiv
|
||||
// the only way to get that is to iterate through all active uniforms by index until
|
||||
// one matches the given uniform location.
|
||||
GLenum uniformType = 0;
|
||||
GLint uniformNameMaxLength = 0;
|
||||
gl->fGetProgramiv(progname, LOCAL_GL_ACTIVE_UNIFORM_MAX_LENGTH, &uniformNameMaxLength);
|
||||
nsAutoArrayPtr<GLchar> uniformName(new GLchar[uniformNameMaxLength+1]);
|
||||
GLint index;
|
||||
for (index = 0; index < uniforms; ++index) {
|
||||
GLsizei dummyLength;
|
||||
GLint dummySize;
|
||||
gl->fGetActiveUniform(progname, index, uniformNameMaxLength, &dummyLength,
|
||||
&dummySize, &uniformType, uniformName);
|
||||
if (gl->fGetUniformLocation(progname, uniformName) == location->Location())
|
||||
break;
|
||||
}
|
||||
|
||||
if (index == uniforms)
|
||||
return NS_ERROR_FAILURE; // XXX GL error? shouldn't happen.
|
||||
|
||||
// glGetUniform needs to be called for each element of an array separately, so we don't
|
||||
// have to deal with uArraySize at all.
|
||||
|
||||
GLenum baseType;
|
||||
GLint unitSize;
|
||||
if (!BaseTypeAndSizeFromUniformType(uType, &baseType, &unitSize))
|
||||
if (!BaseTypeAndSizeFromUniformType(uniformType, &baseType, &unitSize))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
// this should never happen
|
||||
@ -1815,11 +1836,11 @@ WebGLContext::GetUniform(nsIWebGLProgram *pobj, WebGLint location)
|
||||
|
||||
if (baseType == LOCAL_GL_FLOAT) {
|
||||
GLfloat fv[16];
|
||||
gl->fGetUniformfv(progname, location, fv);
|
||||
gl->fGetUniformfv(progname, location->Location(), fv);
|
||||
js.SetRetVal(fv, unitSize);
|
||||
} else if (baseType == LOCAL_GL_INT) {
|
||||
GLint iv[16];
|
||||
gl->fGetUniformiv(progname, location, iv);
|
||||
gl->fGetUniformiv(progname, location->Location(), iv);
|
||||
js.SetRetVal((PRInt32*)iv, unitSize);
|
||||
} else {
|
||||
js.SetRetValAsJSVal(JSVAL_NULL);
|
||||
@ -1829,14 +1850,20 @@ WebGLContext::GetUniform(nsIWebGLProgram *pobj, WebGLint location)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::GetUniformLocation(nsIWebGLProgram *pobj, const nsAString& name, WebGLint *retval)
|
||||
WebGLContext::GetUniformLocation(nsIWebGLProgram *pobj, const nsAString& name, nsIWebGLUniformLocation **retval)
|
||||
{
|
||||
WebGLuint progname;
|
||||
if (!GetGLName<WebGLProgram>(pobj, &progname))
|
||||
WebGLProgram *prog;
|
||||
if (!GetConcreteObjectAndGLName(pobj, &prog, &progname))
|
||||
return ErrorInvalidOperation("GetUniformLocation: invalid program");
|
||||
|
||||
MakeContextCurrent();
|
||||
*retval = gl->fGetUniformLocation(progname, NS_LossyConvertUTF16toASCII(name).get());
|
||||
|
||||
GLint intlocation = gl->fGetUniformLocation(progname, NS_LossyConvertUTF16toASCII(name).get());
|
||||
|
||||
nsCOMPtr<WebGLUniformLocation> uloc = new WebGLUniformLocation(prog, intlocation);
|
||||
*retval = uloc.forget().get();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -2230,24 +2257,33 @@ WebGLContext::DOMElementToImageSurface(nsIDOMElement *imageOrCanvas,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define GL_SIMPLE_ARRAY_METHOD(name, cnt, arrayType, ptrType) \
|
||||
#define OBTAIN_UNIFORM_LOCATION \
|
||||
WebGLUniformLocation *location_object; \
|
||||
if (!GetConcreteObject(ploc, &location_object)) \
|
||||
return ErrorInvalidValue("Invalid uniform location parameter"); \
|
||||
if(mCurrentProgram != location_object->Program()) \
|
||||
return ErrorInvalidValue("This uniform location corresponds to another program"); \
|
||||
GLint location = location_object->Location();
|
||||
|
||||
#define SIMPLE_ARRAY_METHOD_UNIFORM(name, cnt, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(PRInt32 dummy) { \
|
||||
return NS_ERROR_NOT_IMPLEMENTED; \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name##_array(WebGLint idx, js::TypedArray *wa) \
|
||||
WebGLContext::name##_array(nsIWebGLUniformLocation *ploc, js::TypedArray *wa) \
|
||||
{ \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
if (!wa || wa->type != js::TypedArray::arrayType) \
|
||||
return ErrorInvalidOperation("array must be " #arrayType); \
|
||||
if (wa->length == 0 || wa->length % cnt != 0) \
|
||||
return ErrorInvalidOperation("array must be > 0 elements and have a length multiple of %d", cnt); \
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(idx, wa->length / cnt, (ptrType *)wa->data); \
|
||||
gl->f##name(location, wa->length / cnt, (ptrType *)wa->data); \
|
||||
return NS_OK; \
|
||||
}
|
||||
|
||||
#define GL_SIMPLE_ARRAY_METHOD_NO_COUNT(name, cnt, arrayType, ptrType) \
|
||||
#define SIMPLE_ARRAY_METHOD_NO_COUNT(name, cnt, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(PRInt32 dummy) { \
|
||||
return NS_ERROR_NOT_IMPLEMENTED; \
|
||||
@ -2264,56 +2300,81 @@ WebGLContext::name##_array(WebGLuint idx, js::TypedArray *wa) \
|
||||
return NS_OK; \
|
||||
}
|
||||
|
||||
#define GL_SIMPLE_MATRIX_METHOD(name, dim, arrayType, ptrType) \
|
||||
#define SIMPLE_MATRIX_METHOD_UNIFORM(name, dim, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(PRInt32 dummy) { \
|
||||
return NS_ERROR_NOT_IMPLEMENTED; \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name##_array(WebGLint idx, WebGLboolean transpose, js::TypedArray *wa) \
|
||||
WebGLContext::name##_array(nsIWebGLUniformLocation *ploc, WebGLboolean transpose, js::TypedArray *wa) \
|
||||
{ \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
if (!wa || wa->type != js::TypedArray::arrayType) \
|
||||
return ErrorInvalidOperation("array must be " #arrayType); \
|
||||
if (wa->length == 0 || wa->length % (dim*dim) != 0) \
|
||||
return ErrorInvalidOperation("array must be > 0 elements and have a length multiple of %d", dim*dim); \
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(idx, wa->length / (dim*dim), transpose, (ptrType *)wa->data); \
|
||||
gl->f##name(location, wa->length / (dim*dim), transpose, (ptrType *)wa->data); \
|
||||
return NS_OK; \
|
||||
}
|
||||
|
||||
GL_SAME_METHOD_2(Uniform1i, Uniform1i, WebGLint, WebGLint)
|
||||
GL_SAME_METHOD_3(Uniform2i, Uniform2i, WebGLint, WebGLint, WebGLint)
|
||||
GL_SAME_METHOD_4(Uniform3i, Uniform3i, WebGLint, WebGLint, WebGLint, WebGLint)
|
||||
GL_SAME_METHOD_5(Uniform4i, Uniform4i, WebGLint, WebGLint, WebGLint, WebGLint, WebGLint)
|
||||
#define SIMPLE_METHOD_UNIFORM_1(glname, name, t1) \
|
||||
NS_IMETHODIMP WebGLContext::name(nsIWebGLUniformLocation *ploc, t1 a1) { \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
MakeContextCurrent(); gl->f##glname(location, a1); return NS_OK; \
|
||||
}
|
||||
|
||||
GL_SAME_METHOD_2(Uniform1f, Uniform1f, WebGLint, WebGLfloat)
|
||||
GL_SAME_METHOD_3(Uniform2f, Uniform2f, WebGLint, WebGLfloat, WebGLfloat)
|
||||
GL_SAME_METHOD_4(Uniform3f, Uniform3f, WebGLint, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
GL_SAME_METHOD_5(Uniform4f, Uniform4f, WebGLint, WebGLfloat, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
#define SIMPLE_METHOD_UNIFORM_2(glname, name, t1, t2) \
|
||||
NS_IMETHODIMP WebGLContext::name(nsIWebGLUniformLocation *ploc, t1 a1, t2 a2) { \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
MakeContextCurrent(); gl->f##glname(location, a1, a2); return NS_OK; \
|
||||
}
|
||||
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform1iv, 1, TYPE_INT32, WebGLint)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform2iv, 2, TYPE_INT32, WebGLint)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform3iv, 3, TYPE_INT32, WebGLint)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform4iv, 4, TYPE_INT32, WebGLint)
|
||||
#define SIMPLE_METHOD_UNIFORM_3(glname, name, t1, t2, t3) \
|
||||
NS_IMETHODIMP WebGLContext::name(nsIWebGLUniformLocation *ploc, t1 a1, t2 a2, t3 a3) { \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
MakeContextCurrent(); gl->f##glname(location, a1, a2, a3); return NS_OK; \
|
||||
}
|
||||
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform1fv, 1, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD(Uniform4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
#define SIMPLE_METHOD_UNIFORM_4(glname, name, t1, t2, t3, t4) \
|
||||
NS_IMETHODIMP WebGLContext::name(nsIWebGLUniformLocation *ploc, t1 a1, t2 a2, t3 a3, t4 a4) { \
|
||||
OBTAIN_UNIFORM_LOCATION \
|
||||
MakeContextCurrent(); gl->f##glname(location, a1, a2, a3, a4); return NS_OK; \
|
||||
}
|
||||
|
||||
GL_SIMPLE_MATRIX_METHOD(UniformMatrix2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_MATRIX_METHOD(UniformMatrix3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_MATRIX_METHOD(UniformMatrix4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_METHOD_UNIFORM_1(Uniform1i, Uniform1i, WebGLint)
|
||||
SIMPLE_METHOD_UNIFORM_2(Uniform2i, Uniform2i, WebGLint, WebGLint)
|
||||
SIMPLE_METHOD_UNIFORM_3(Uniform3i, Uniform3i, WebGLint, WebGLint, WebGLint)
|
||||
SIMPLE_METHOD_UNIFORM_4(Uniform4i, Uniform4i, WebGLint, WebGLint, WebGLint, WebGLint)
|
||||
|
||||
SIMPLE_METHOD_UNIFORM_1(Uniform1f, Uniform1f, WebGLfloat)
|
||||
SIMPLE_METHOD_UNIFORM_2(Uniform2f, Uniform2f, WebGLfloat, WebGLfloat)
|
||||
SIMPLE_METHOD_UNIFORM_3(Uniform3f, Uniform3f, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
SIMPLE_METHOD_UNIFORM_4(Uniform4f, Uniform4f, WebGLfloat, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform1iv, 1, TYPE_INT32, WebGLint)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform2iv, 2, TYPE_INT32, WebGLint)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform3iv, 3, TYPE_INT32, WebGLint)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform4iv, 4, TYPE_INT32, WebGLint)
|
||||
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform1fv, 1, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_UNIFORM(Uniform4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
|
||||
GL_SAME_METHOD_2(VertexAttrib1f, VertexAttrib1f, PRUint32, WebGLfloat)
|
||||
GL_SAME_METHOD_3(VertexAttrib2f, VertexAttrib2f, PRUint32, WebGLfloat, WebGLfloat)
|
||||
GL_SAME_METHOD_4(VertexAttrib3f, VertexAttrib3f, PRUint32, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
GL_SAME_METHOD_5(VertexAttrib4f, VertexAttrib4f, PRUint32, WebGLfloat, WebGLfloat, WebGLfloat, WebGLfloat)
|
||||
|
||||
GL_SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib1fv, 1, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
GL_SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib1fv, 1, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib2fv, 2, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib3fv, 3, TYPE_FLOAT32, WebGLfloat)
|
||||
SIMPLE_ARRAY_METHOD_NO_COUNT(VertexAttrib4fv, 4, TYPE_FLOAT32, WebGLfloat)
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::UseProgram(nsIWebGLProgram *pobj)
|
||||
|
@ -1372,6 +1372,8 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(WebGLRenderbuffer, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(WebGLUniformLocation, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(PaintRequest, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
@ -3813,7 +3815,11 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(WebGLRenderbuffer, nsIWebGLRenderbuffer)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIWebGLRenderbuffer)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIWebGLRenderbuffer)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(WebGLUniformLocation, nsIWebGLUniformLocation)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIWebGLUniformLocation)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(PaintRequest, nsIDOMPaintRequest)
|
||||
|
@ -457,6 +457,7 @@ DOMCI_CLASS(WebGLProgram)
|
||||
DOMCI_CLASS(WebGLShader)
|
||||
DOMCI_CLASS(WebGLFramebuffer)
|
||||
DOMCI_CLASS(WebGLRenderbuffer)
|
||||
DOMCI_CLASS(WebGLUniformLocation)
|
||||
|
||||
// WebGL Buffers
|
||||
DOMCI_CLASS(PaintRequest)
|
||||
|
@ -120,6 +120,12 @@ interface nsIWebGLActiveInfo : nsISupports
|
||||
readonly attribute DOMString name;
|
||||
};
|
||||
|
||||
[scriptable, uuid(d38b0467-623e-4c82-9140-5f14a3bd1bad)]
|
||||
interface nsIWebGLUniformLocation : nsISupports
|
||||
{
|
||||
[noscript] attribute WebGLint location;
|
||||
};
|
||||
|
||||
|
||||
[scriptable, uuid(f02c85e0-8305-11de-abe2-000c29206271)]
|
||||
interface nsICanvasRenderingContextWebGL : nsISupports
|
||||
@ -688,14 +694,9 @@ interface nsICanvasRenderingContextWebGL : nsISupports
|
||||
|
||||
void getTexParameter(in WebGLenum target, in WebGLenum pname);
|
||||
|
||||
// FIXME: This is problematic. We don't implicitly know how big the returned data buffer
|
||||
// needs to be like in the other glGet* calls. The only way to find out is to iterate
|
||||
// through all the active uniforms with glGetActiveUniform() looking for the corresponding
|
||||
// 'location'. This will give us the type and size of the data. Since this is a get call
|
||||
// maybe that's ok?
|
||||
void getUniform(in nsIWebGLProgram program, in WebGLint location);
|
||||
void getUniform (in nsIWebGLProgram program, in nsIWebGLUniformLocation location);
|
||||
|
||||
WebGLint getUniformLocation(in nsIWebGLProgram program, in DOMString name);
|
||||
nsIWebGLUniformLocation getUniformLocation (in nsIWebGLProgram program, in DOMString name);
|
||||
|
||||
void getVertexAttrib(in WebGLuint index, in WebGLenum pname);
|
||||
|
||||
@ -769,14 +770,14 @@ interface nsICanvasRenderingContextWebGL : nsISupports
|
||||
//void glTexParameter(in WebGLenum target, in WebGLenum pname, in nsIWebGLArray params);
|
||||
|
||||
// Modified: All the glUniform*v forms below are modified by replacing 'count' and 'v' with a nsIWebGLArray
|
||||
void uniform1f(in WebGLint location, in WebGLfloat x);
|
||||
void uniform1i(in WebGLint location, in WebGLint x);
|
||||
void uniform2f(in WebGLint location, in WebGLfloat x, in WebGLfloat y);
|
||||
void uniform2i(in WebGLint location, in WebGLint x, in WebGLint y);
|
||||
void uniform3f(in WebGLint location, in WebGLfloat x, in WebGLfloat y, in WebGLfloat z);
|
||||
void uniform3i(in WebGLint location, in WebGLint x, in WebGLint y, in WebGLint z);
|
||||
void uniform4f(in WebGLint location, in WebGLfloat x, in WebGLfloat y, in WebGLfloat z, in WebGLfloat w);
|
||||
void uniform4i(in WebGLint location, in WebGLint x, in WebGLint y, in WebGLint z, in WebGLint w);
|
||||
void uniform1f (in nsIWebGLUniformLocation location, in WebGLfloat x);
|
||||
void uniform1i (in nsIWebGLUniformLocation location, in WebGLint x);
|
||||
void uniform2f (in nsIWebGLUniformLocation location, in WebGLfloat x, in WebGLfloat y);
|
||||
void uniform2i (in nsIWebGLUniformLocation location, in WebGLint x, in WebGLint y);
|
||||
void uniform3f (in nsIWebGLUniformLocation location, in WebGLfloat x, in WebGLfloat y, in WebGLfloat z);
|
||||
void uniform3i (in nsIWebGLUniformLocation location, in WebGLint x, in WebGLint y, in WebGLint z);
|
||||
void uniform4f (in nsIWebGLUniformLocation location, in WebGLfloat x, in WebGLfloat y, in WebGLfloat z, in WebGLfloat w);
|
||||
void uniform4i (in nsIWebGLUniformLocation location, in WebGLint x, in WebGLint y, in WebGLint z, in WebGLint w);
|
||||
|
||||
void uniform1fv([optional] in long dummy);
|
||||
void uniform1iv([optional] in long dummy);
|
||||
@ -787,23 +788,23 @@ interface nsICanvasRenderingContextWebGL : nsISupports
|
||||
void uniform4fv([optional] in long dummy);
|
||||
void uniform4iv([optional] in long dummy);
|
||||
|
||||
[noscript] void uniform1fv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform1iv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform2fv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform2iv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform3fv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform3iv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform4fv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform4iv_array(in WebGLint location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform1fv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform1iv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform2fv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform2iv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform3fv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform3iv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform4fv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
[noscript] void uniform4iv_array (in nsIWebGLUniformLocation location, in WebGLArrayPtr v);
|
||||
|
||||
// Modified. These are modified by replacing 'count' and 'value' with a WebGLArrayPtr
|
||||
void uniformMatrix2fv([optional] in long dummy);
|
||||
void uniformMatrix3fv([optional] in long dummy);
|
||||
void uniformMatrix4fv([optional] in long dummy);
|
||||
|
||||
[noscript] void uniformMatrix2fv_array(in WebGLint location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
[noscript] void uniformMatrix3fv_array(in WebGLint location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
[noscript] void uniformMatrix4fv_array(in WebGLint location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
[noscript] void uniformMatrix2fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
[noscript] void uniformMatrix3fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
[noscript] void uniformMatrix4fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLArrayPtr value);
|
||||
|
||||
// Added API using top entry from the passed nsIWebGLMatrixStack
|
||||
//ZZ void glUniformMatrix(in WebGLint location, in WebGLboolean transpose, in nsIWebGLMatrixStack value);
|
||||
|
@ -493,6 +493,7 @@ irregularFilenames = {
|
||||
'nsIWebGLFramebuffer': 'nsICanvasRenderingContextWebGL',
|
||||
'nsIWebGLRenderbuffer': 'nsICanvasRenderingContextWebGL',
|
||||
'nsIWebGLActiveInfo': 'nsICanvasRenderingContextWebGL',
|
||||
'nsIWebGLUniformLocation': 'nsICanvasRenderingContextWebGL',
|
||||
}
|
||||
|
||||
customIncludes = [
|
||||
|
Loading…
x
Reference in New Issue
Block a user