☠☠ backed out by 862dd46b819f ☠ ☠ | |
author | Dan Glastonbury <dglastonbury@mozilla.com> |
Fri, 05 Jun 2015 15:12:11 +1000 | |
changeset 248210 | c666d71f48999437e2c3a71a946fdb3862070b5e |
parent 248209 | 046422ea849f465e4c409ad293134837bcb53cc6 |
child 248211 | 4ee1883ffc6506ac415757c496b9b9a04d9e5d32 |
push id | 28893 |
push user | kwierso@gmail.com |
push date | Fri, 12 Jun 2015 00:02:58 +0000 |
treeherder | autoland@8cf9d3e497f9 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jgilbert |
bugs | 1170855 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/canvas/WebGLContextState.cpp +++ b/dom/canvas/WebGLContextState.cpp @@ -133,51 +133,48 @@ WebGLContext::GetParameter(JSContext* cx return JS::Int32Value(mGLMaxColorAttachments); } else if (pname == LOCAL_GL_MAX_DRAW_BUFFERS) { return JS::Int32Value(mGLMaxDrawBuffers); } else if (pname >= LOCAL_GL_DRAW_BUFFER0 && pname < GLenum(LOCAL_GL_DRAW_BUFFER0 + mGLMaxDrawBuffers)) { - if (mBoundDrawFramebuffer) { - GLint iv = 0; - gl->fGetIntegerv(pname, &iv); - return JS::Int32Value(iv); - } - GLint iv = 0; gl->fGetIntegerv(pname, &iv); - if (iv == GLint(LOCAL_GL_COLOR_ATTACHMENT0 + pname - LOCAL_GL_DRAW_BUFFER0)) { + if (mBoundDrawFramebuffer) + return JS::Int32Value(iv); + + const GLint index = (pname - LOCAL_GL_DRAW_BUFFER0); + if (iv == LOCAL_GL_COLOR_ATTACHMENT0 + index) return JS::Int32Value(LOCAL_GL_BACK); - } return JS::Int32Value(LOCAL_GL_NONE); } } if (IsExtensionEnabled(WebGLExtensionID::OES_vertex_array_object)) { if (pname == LOCAL_GL_VERTEX_ARRAY_BINDING) { - if (mBoundVertexArray == mDefaultVertexArray){ - return WebGLObjectAsJSValue(cx, (WebGLVertexArray *) nullptr, rv); - } - - return WebGLObjectAsJSValue(cx, mBoundVertexArray.get(), rv); + WebGLVertexArray* vao = + (mBoundVertexArray != mDefaultVertexArray) ? mBoundVertexArray.get() : nullptr; + return WebGLObjectAsJSValue(cx, vao, rv); } } if (IsExtensionEnabled(WebGLExtensionID::EXT_disjoint_timer_query)) { if (pname == LOCAL_GL_TIMESTAMP_EXT) { GLuint64 iv = 0; gl->fGetInteger64v(pname, (GLint64*) &iv); - return JS::NumberValue(uint64_t(iv)); + // TODO: JS doesn't support 64-bit integers. Be lossy and + // cast to double (53 bits) + return JS::NumberValue(static_cast<double>(iv)); } else if (pname == LOCAL_GL_GPU_DISJOINT_EXT) { // When disjoint isn't supported, leave as false. - realGLboolean disjoint = 0; + realGLboolean disjoint = LOCAL_GL_FALSE; if (gl->IsExtensionSupported(gl::GLContext::EXT_disjoint_timer_query)) { gl->fGetBooleanv(pname, &disjoint); } return JS::BooleanValue(bool(disjoint)); } } // Privileged string params exposed by WEBGL_debug_renderer_info: @@ -360,28 +357,27 @@ WebGLContext::GetParameter(JSContext* cx if (!obj) { rv = NS_ERROR_OUT_OF_MEMORY; } return JS::ObjectOrNullValue(obj); } // unsigned int. here we may have to return very large values like 2^32-1 that can't be represented as // javascript integer values. We just return them as doubles and javascript doesn't care. - case LOCAL_GL_STENCIL_BACK_VALUE_MASK: { + case LOCAL_GL_STENCIL_BACK_VALUE_MASK: return JS::DoubleValue(mStencilValueMaskBack); // pass as FP value to allow large values such as 2^32-1. - } - case LOCAL_GL_STENCIL_BACK_WRITEMASK: { + + case LOCAL_GL_STENCIL_BACK_WRITEMASK: return JS::DoubleValue(mStencilWriteMaskBack); - } - case LOCAL_GL_STENCIL_VALUE_MASK: { + + case LOCAL_GL_STENCIL_VALUE_MASK: return JS::DoubleValue(mStencilValueMaskFront); - } - case LOCAL_GL_STENCIL_WRITEMASK: { + + case LOCAL_GL_STENCIL_WRITEMASK: return JS::DoubleValue(mStencilWriteMaskFront); - } // float case LOCAL_GL_DEPTH_CLEAR_VALUE: case LOCAL_GL_LINE_WIDTH: case LOCAL_GL_POLYGON_OFFSET_FACTOR: case LOCAL_GL_POLYGON_OFFSET_UNITS: case LOCAL_GL_SAMPLE_COVERAGE_VALUE: { GLfloat f = 0.f;