зеркало из https://github.com/mozilla/gecko-dev.git
Bug 722154 - Part e: Remove custom quickstubs for uniform[1-4][i,f]v and uniformMatrix[2-4]fv; r=bjacob
This commit is contained in:
Родитель
9d5622d081
Коммит
75d516dac5
|
@ -336,227 +336,6 @@ nsIDOMWebGLRenderingContext_TexSubImage2D(JSContext *cx, unsigned argc, jsval *v
|
|||
return JS_TRUE;
|
||||
}
|
||||
|
||||
/* NOTE: There is a TN version of this below, update it as well */
|
||||
static inline JSBool
|
||||
helper_nsIDOMWebGLRenderingContext_Uniform_x_iv(JSContext *cx, unsigned argc, jsval *vp, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
JSObject *obj = JS_THIS_OBJECT(cx, vp);
|
||||
if (!obj)
|
||||
return JS_FALSE;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsIDOMWebGLRenderingContext *self;
|
||||
xpc_qsSelfRef selfref;
|
||||
JS::AutoValueRooter tvr(cx);
|
||||
if (!xpc_qsUnwrapThis(cx, obj, &self, &selfref.ptr, tvr.jsval_addr(), nsnull))
|
||||
return JS_FALSE;
|
||||
|
||||
if (argc < 2)
|
||||
return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
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_PRIMITIVE(argv[1])) {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JSObject *arg1 = JSVAL_TO_OBJECT(argv[1]);
|
||||
|
||||
JS::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
JSObject *wa = 0;
|
||||
|
||||
if (helper_isInt32Array(arg1)) {
|
||||
wa = js::TypedArray::getTypedArray(arg1);
|
||||
} else if (JS_IsArrayObject(cx, arg1)) {
|
||||
JSObject *nobj = js_CreateTypedArrayWithArray(cx, js::TypedArray::TYPE_INT32, arg1);
|
||||
if (!nobj) {
|
||||
// XXX this will likely return a strange error message if it goes wrong
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
*obj_tvr.jsval_addr() = OBJECT_TO_JSVAL(nobj);
|
||||
wa = js::TypedArray::getTypedArray(nobj);
|
||||
} else {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
if (nElements == 1) {
|
||||
rv = self->Uniform1iv_array(location, wa);
|
||||
} else if (nElements == 2) {
|
||||
rv = self->Uniform2iv_array(location, wa);
|
||||
} else if (nElements == 3) {
|
||||
rv = self->Uniform3iv_array(location, wa);
|
||||
} else if (nElements == 4) {
|
||||
rv = self->Uniform4iv_array(location, wa);
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return xpc_qsThrowMethodFailed(cx, rv, vp);
|
||||
|
||||
*vp = JSVAL_VOID;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
/* NOTE: There is a TN version of this below, update it as well */
|
||||
static inline JSBool
|
||||
helper_nsIDOMWebGLRenderingContext_Uniform_x_fv(JSContext *cx, unsigned argc, jsval *vp, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
JSObject *obj = JS_THIS_OBJECT(cx, vp);
|
||||
if (!obj)
|
||||
return JS_FALSE;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsIDOMWebGLRenderingContext *self;
|
||||
xpc_qsSelfRef selfref;
|
||||
JS::AutoValueRooter tvr(cx);
|
||||
if (!xpc_qsUnwrapThis(cx, obj, &self, &selfref.ptr, tvr.jsval_addr(), nsnull))
|
||||
return JS_FALSE;
|
||||
|
||||
if (argc < 2)
|
||||
return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
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_PRIMITIVE(argv[1])) {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JSObject *arg1 = JSVAL_TO_OBJECT(argv[1]);
|
||||
|
||||
JS::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
JSObject *wa = 0;
|
||||
|
||||
if (helper_isFloat32Array(arg1)) {
|
||||
wa = js::TypedArray::getTypedArray(arg1);
|
||||
} else if (JS_IsArrayObject(cx, arg1)) {
|
||||
JSObject *nobj = js_CreateTypedArrayWithArray(cx, js::TypedArray::TYPE_FLOAT32, arg1);
|
||||
if (!nobj) {
|
||||
// XXX this will likely return a strange error message if it goes wrong
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
*obj_tvr.jsval_addr() = OBJECT_TO_JSVAL(nobj);
|
||||
wa = js::TypedArray::getTypedArray(nobj);
|
||||
} else {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 1);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
if (nElements == 1) {
|
||||
rv = self->Uniform1fv_array(location, wa);
|
||||
} else if (nElements == 2) {
|
||||
rv = self->Uniform2fv_array(location, wa);
|
||||
} else if (nElements == 3) {
|
||||
rv = self->Uniform3fv_array(location, wa);
|
||||
} else if (nElements == 4) {
|
||||
rv = self->Uniform4fv_array(location, wa);
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return xpc_qsThrowMethodFailed(cx, rv, vp);
|
||||
|
||||
*vp = JSVAL_VOID;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
/* NOTE: There is a TN version of this below, update it as well */
|
||||
static inline JSBool
|
||||
helper_nsIDOMWebGLRenderingContext_UniformMatrix_x_fv(JSContext *cx, unsigned argc, jsval *vp, int nElements)
|
||||
{
|
||||
XPC_QS_ASSERT_CONTEXT_OK(cx);
|
||||
JSObject *obj = JS_THIS_OBJECT(cx, vp);
|
||||
if (!obj)
|
||||
return JS_FALSE;
|
||||
|
||||
nsIDOMWebGLRenderingContext *self;
|
||||
xpc_qsSelfRef selfref;
|
||||
JS::AutoValueRooter tvr(cx);
|
||||
if (!xpc_qsUnwrapThis(cx, obj, &self, &selfref.ptr, tvr.jsval_addr(), nsnull))
|
||||
return JS_FALSE;
|
||||
|
||||
if (argc < 3)
|
||||
return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
|
||||
jsval *argv = JS_ARGV(cx, vp);
|
||||
|
||||
nsIWebGLUniformLocation *location;
|
||||
xpc_qsSelfRef location_selfref;
|
||||
nsresult 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;
|
||||
}
|
||||
|
||||
JSBool transpose;
|
||||
MOZ_ALWAYS_TRUE(JS_ValueToBoolean(cx, argv[1], &transpose));
|
||||
|
||||
if (JSVAL_IS_PRIMITIVE(argv[2])) {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 2);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
JSObject *arg2 = JSVAL_TO_OBJECT(argv[2]);
|
||||
|
||||
JS::AutoValueRooter obj_tvr(cx);
|
||||
|
||||
JSObject *wa = 0;
|
||||
|
||||
if (helper_isFloat32Array(arg2)) {
|
||||
wa = js::TypedArray::getTypedArray(arg2);
|
||||
} else if (JS_IsArrayObject(cx, arg2)) {
|
||||
JSObject *nobj = js_CreateTypedArrayWithArray(cx, js::TypedArray::TYPE_FLOAT32, arg2);
|
||||
if (!nobj) {
|
||||
// XXX this will likely return a strange error message if it goes wrong
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
*obj_tvr.jsval_addr() = OBJECT_TO_JSVAL(nobj);
|
||||
wa = js::TypedArray::getTypedArray(nobj);
|
||||
} else {
|
||||
xpc_qsThrowBadArg(cx, NS_ERROR_FAILURE, vp, 2);
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
if (nElements == 2) {
|
||||
rv = self->UniformMatrix2fv_array(location, transpose, wa);
|
||||
} else if (nElements == 3) {
|
||||
rv = self->UniformMatrix3fv_array(location, transpose, wa);
|
||||
} else if (nElements == 4) {
|
||||
rv = self->UniformMatrix4fv_array(location, transpose, wa);
|
||||
}
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
return xpc_qsThrowMethodFailed(cx, rv, vp);
|
||||
|
||||
*vp = JSVAL_VOID;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
static inline JSBool
|
||||
helper_nsIDOMWebGLRenderingContext_VertexAttrib_x_fv(JSContext *cx, unsigned argc, jsval *vp, int nElements)
|
||||
{
|
||||
|
@ -625,72 +404,6 @@ helper_nsIDOMWebGLRenderingContext_VertexAttrib_x_fv(JSContext *cx, unsigned arg
|
|||
return JS_TRUE;
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform1iv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_iv(cx, argc, vp, 1);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform2iv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_iv(cx, argc, vp, 2);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform3iv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_iv(cx, argc, vp, 3);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform4iv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_iv(cx, argc, vp, 4);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform1fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_fv(cx, argc, vp, 1);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform2fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_fv(cx, argc, vp, 2);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform3fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_fv(cx, argc, vp, 3);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_Uniform4fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_Uniform_x_fv(cx, argc, vp, 4);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_UniformMatrix2fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_UniformMatrix_x_fv(cx, argc, vp, 2);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_UniformMatrix3fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_UniformMatrix_x_fv(cx, argc, vp, 3);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_UniformMatrix4fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
return helper_nsIDOMWebGLRenderingContext_UniformMatrix_x_fv(cx, argc, vp, 4);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
nsIDOMWebGLRenderingContext_VertexAttrib1fv(JSContext *cx, unsigned argc, jsval *vp)
|
||||
{
|
||||
|
|
|
@ -4058,6 +4058,33 @@ WebGLContext::DOMElementToImageSurface(Element* imageOrCanvas,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
template<size_t type>
|
||||
static JSObject*
|
||||
GetTypedArray(JSContext* aCx, const JS::Value& aValue)
|
||||
{
|
||||
if (!aValue.isObject()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
JSObject& value = aValue.toObject();
|
||||
|
||||
if (js::GetObjectClass(&value) == &js::TypedArray::fastClasses[type]) {
|
||||
return &value;
|
||||
}
|
||||
|
||||
if (JS_IsArrayObject(aCx, &value)) {
|
||||
return js_CreateTypedArrayWithArray(aCx, type, &value);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static JSObject*
|
||||
GetFloat32Array(JSContext* aCx, const JS::Value& aValue)
|
||||
{
|
||||
return GetTypedArray<js::TypedArray::TYPE_FLOAT32>(aCx, aValue);
|
||||
}
|
||||
|
||||
#define OBTAIN_UNIFORM_LOCATION(info) \
|
||||
WebGLUniformLocation *location_object; \
|
||||
bool isNull; \
|
||||
|
@ -4074,46 +4101,70 @@ WebGLContext::DOMElementToImageSurface(Element* imageOrCanvas,
|
|||
return ErrorInvalidOperation("%s: This uniform location is obsolete since the program has been relinked", info); \
|
||||
GLint location = location_object->Location();
|
||||
|
||||
#define SIMPLE_ARRAY_METHOD_UNIFORM(name, cnt, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(PRInt32) { \
|
||||
return NS_ERROR_NOT_IMPLEMENTED; \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name##_array(nsIWebGLUniformLocation *ploc, JSObject *wa) \
|
||||
{ \
|
||||
if (!IsContextStable()) \
|
||||
return NS_OK; \
|
||||
OBTAIN_UNIFORM_LOCATION(#name ": location") \
|
||||
if (!wa || JS_GetTypedArrayType(wa) != js::TypedArray::arrayType) \
|
||||
#define SIMPLE_ARRAY_METHOD_UNIFORM(name, cnt, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(nsIWebGLUniformLocation *aLocation, const JS::Value& aValue, \
|
||||
JSContext* aCx) \
|
||||
{ \
|
||||
JSObject* wa = GetTypedArray<js::TypedArray::arrayType>(aCx, aValue); \
|
||||
if (!wa) { \
|
||||
return NS_ERROR_FAILURE; \
|
||||
} \
|
||||
\
|
||||
if (!IsContextStable()) { \
|
||||
return NS_OK; \
|
||||
} \
|
||||
\
|
||||
nsIWebGLUniformLocation* ploc = aLocation; \
|
||||
OBTAIN_UNIFORM_LOCATION(#name ": location") \
|
||||
if (JS_GetTypedArrayType(wa) != js::TypedArray::arrayType) { \
|
||||
return ErrorInvalidOperation(#name ": array must be " #arrayType); \
|
||||
if (JS_GetTypedArrayLength(wa) == 0 || JS_GetTypedArrayLength(wa) % cnt != 0)\
|
||||
return ErrorInvalidValue(#name ": array must be > 0 elements and have a length multiple of %d", cnt); \
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(location, JS_GetTypedArrayLength(wa) / cnt, (ptrType *)JS_GetTypedArrayData(wa)); \
|
||||
return NS_OK; \
|
||||
} \
|
||||
if (JS_GetTypedArrayLength(wa) == 0 || \
|
||||
JS_GetTypedArrayLength(wa) % cnt != 0) { \
|
||||
return ErrorInvalidValue(#name ": array must be > 0 elements and have " \
|
||||
"a length multiple of %d", cnt); \
|
||||
} \
|
||||
\
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(location, JS_GetTypedArrayLength(wa) / cnt, \
|
||||
static_cast<ptrType*>(JS_GetTypedArrayData(wa))); \
|
||||
return NS_OK; \
|
||||
}
|
||||
|
||||
#define SIMPLE_MATRIX_METHOD_UNIFORM(name, dim, arrayType, ptrType) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(PRInt32) { \
|
||||
return NS_ERROR_NOT_IMPLEMENTED; \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name##_array(nsIWebGLUniformLocation *ploc, WebGLboolean transpose, JSObject *wa) \
|
||||
{ \
|
||||
if (!IsContextStable()) \
|
||||
return NS_OK; \
|
||||
OBTAIN_UNIFORM_LOCATION(#name ": location") \
|
||||
if (!wa || JS_GetTypedArrayType(wa) != js::TypedArray::arrayType) \
|
||||
return ErrorInvalidValue(#name ": array must be " #arrayType); \
|
||||
if (JS_GetTypedArrayLength(wa) == 0 || JS_GetTypedArrayLength(wa) % (dim*dim) != 0) \
|
||||
return ErrorInvalidValue(#name ": array length must be >0 and multiple of %d", dim*dim); \
|
||||
if (transpose) \
|
||||
return ErrorInvalidValue(#name ": transpose must be FALSE as per the OpenGL ES 2.0 spec"); \
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(location, JS_GetTypedArrayLength(wa) / (dim*dim), transpose, (ptrType *)JS_GetTypedArrayData(wa)); \
|
||||
return NS_OK; \
|
||||
#define SIMPLE_MATRIX_METHOD_UNIFORM(name, dim) \
|
||||
NS_IMETHODIMP \
|
||||
WebGLContext::name(nsIWebGLUniformLocation* aLocation, bool aTranspose, \
|
||||
const JS::Value& aValue, JSContext* aCx) \
|
||||
{ \
|
||||
JSObject* wa = GetFloat32Array(aCx, aValue); \
|
||||
if (!wa) { \
|
||||
return NS_ERROR_FAILURE; \
|
||||
} \
|
||||
\
|
||||
if (!IsContextStable()) { \
|
||||
return NS_OK; \
|
||||
} \
|
||||
\
|
||||
nsIWebGLUniformLocation* ploc = aLocation; \
|
||||
OBTAIN_UNIFORM_LOCATION(#name ": location") \
|
||||
if (JS_GetTypedArrayType(wa) != js::TypedArray::TYPE_FLOAT32) { \
|
||||
return ErrorInvalidValue(#name ": array must be TYPE_FLOAT32"); \
|
||||
} \
|
||||
if (JS_GetTypedArrayLength(wa) == 0 || \
|
||||
JS_GetTypedArrayLength(wa) % (dim*dim) != 0) { \
|
||||
return ErrorInvalidValue(#name ": array length must be >0 and " \
|
||||
"multiple of %d", dim*dim); \
|
||||
} \
|
||||
if (aTranspose) { \
|
||||
return ErrorInvalidValue(#name ": transpose must be FALSE as per the " \
|
||||
"OpenGL ES 2.0 spec"); \
|
||||
} \
|
||||
\
|
||||
MakeContextCurrent(); \
|
||||
gl->f##name(location, JS_GetTypedArrayLength(wa) / (dim*dim), false, \
|
||||
static_cast<WebGLfloat*>(JS_GetTypedArrayData(wa))); \
|
||||
return NS_OK; \
|
||||
}
|
||||
|
||||
#define SIMPLE_METHOD_UNIFORM_1(glname, name, t1) \
|
||||
|
@ -4168,9 +4219,9 @@ 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)
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix2fv, 2)
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix3fv, 3)
|
||||
SIMPLE_MATRIX_METHOD_UNIFORM(UniformMatrix4fv, 4)
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::VertexAttrib1f(PRUint32 index, WebGLfloat x0)
|
||||
|
|
|
@ -177,7 +177,7 @@ interface nsIWebGLExtensionTextureFilterAnisotropic : nsIWebGLExtension
|
|||
const WebGLenum MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
|
||||
};
|
||||
|
||||
[scriptable, builtinclass, uuid(aae55fc4-b650-4178-920a-c985b720d9bb)]
|
||||
[scriptable, builtinclass, uuid(77c303b8-9d86-48d4-a118-0c32358520ee)]
|
||||
interface nsIDOMWebGLRenderingContext : nsISupports
|
||||
{
|
||||
//
|
||||
|
@ -807,32 +807,18 @@ interface nsIDOMWebGLRenderingContext : nsISupports
|
|||
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);
|
||||
void uniform2fv([optional] in long dummy);
|
||||
void uniform2iv([optional] in long dummy);
|
||||
void uniform3fv([optional] in long dummy);
|
||||
void uniform3iv([optional] in long dummy);
|
||||
void uniform4fv([optional] in long dummy);
|
||||
void uniform4iv([optional] in long dummy);
|
||||
[implicit_jscontext] void uniform1fv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform1iv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform2fv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform2iv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform3fv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform3iv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform4fv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
[implicit_jscontext] void uniform4iv(in nsIWebGLUniformLocation location, in jsval v);
|
||||
|
||||
[noscript] void uniform1fv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform1iv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform2fv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform2iv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform3fv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform3iv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform4fv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
[noscript] void uniform4iv_array (in nsIWebGLUniformLocation location, in WebGLJSObjectPtr v);
|
||||
|
||||
// Modified. These are modified by replacing 'count' and 'value' with a WebGLJSObjectPtr
|
||||
void uniformMatrix2fv([optional] in long dummy);
|
||||
void uniformMatrix3fv([optional] in long dummy);
|
||||
void uniformMatrix4fv([optional] in long dummy);
|
||||
|
||||
[noscript] void uniformMatrix2fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLJSObjectPtr value);
|
||||
[noscript] void uniformMatrix3fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLJSObjectPtr value);
|
||||
[noscript] void uniformMatrix4fv_array (in nsIWebGLUniformLocation location, in WebGLboolean transpose, in WebGLJSObjectPtr value);
|
||||
[implicit_jscontext] void uniformMatrix2fv(in nsIWebGLUniformLocation location, in boolean transpose, in jsval value);
|
||||
[implicit_jscontext] void uniformMatrix3fv(in nsIWebGLUniformLocation location, in boolean transpose, in jsval value);
|
||||
[implicit_jscontext] void uniformMatrix4fv(in nsIWebGLUniformLocation location, in boolean transpose, in jsval value);
|
||||
|
||||
// Added API using top entry from the passed nsIWebGLMatrixStack
|
||||
//ZZ void glUniformMatrix(in WebGLint location, in WebGLboolean transpose, in nsIWebGLMatrixStack value);
|
||||
|
|
|
@ -980,17 +980,6 @@ customMethodCalls = {
|
|||
# WebGL
|
||||
'nsIDOMWebGLRenderingContext_TexImage2D': CUSTOM_QS,
|
||||
'nsIDOMWebGLRenderingContext_TexSubImage2D': CUSTOM_QS,
|
||||
'nsIDOMWebGLRenderingContext_Uniform1iv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform2iv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform3iv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform4iv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform1fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform2fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform3fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_Uniform4fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_UniformMatrix2fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_UniformMatrix3fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_UniformMatrix4fv': CUSTOM_QS_TN,
|
||||
'nsIDOMWebGLRenderingContext_VertexAttrib1fv': CUSTOM_QS,
|
||||
'nsIDOMWebGLRenderingContext_VertexAttrib2fv': CUSTOM_QS,
|
||||
'nsIDOMWebGLRenderingContext_VertexAttrib3fv': CUSTOM_QS,
|
||||
|
|
Загрузка…
Ссылка в новой задаче