Bug 1217290 - Remove WebGLContext impl members
MozReview-Commit-ID: DPrjaf9QHfP
--- a/dom/canvas/WebGL2ContextState.cpp
+++ b/dom/canvas/WebGL2ContextState.cpp
@@ -92,20 +92,20 @@ WebGL2Context::GetParameter(JSContext* c
case LOCAL_GL_UNPACK_SKIP_PIXELS:
return JS::Int32Value(mPixelStore_UnpackSkipPixels);
case LOCAL_GL_UNPACK_SKIP_ROWS:
return JS::Int32Value(mPixelStore_UnpackSkipRows);
case LOCAL_GL_MAX_3D_TEXTURE_SIZE:
- return JS::Int32Value(mImplMax3DTextureSize);
+ return JS::Int32Value(mGLMax3DTextureSize);
case LOCAL_GL_MAX_ARRAY_TEXTURE_LAYERS:
- return JS::Int32Value(mImplMaxArrayTextureLayers);
+ return JS::Int32Value(mGLMaxArrayTextureLayers);
case LOCAL_GL_MAX_VARYING_COMPONENTS: {
// On OS X Core Profile this is buggy. The spec says that the
// value is 4 * GL_MAX_VARYING_VECTORS
GLint val;
gl->fGetIntegerv(LOCAL_GL_MAX_VARYING_VECTORS, &val);
return JS::Int32Value(4*val);
}
--- a/dom/canvas/WebGLContext.cpp
+++ b/dom/canvas/WebGLContext.cpp
@@ -2451,16 +2451,28 @@ WebGLContext::ValidateArrayBufferView(co
*out_byteLen = elemCount * elemSize;
return true;
}
////////////////////////////////////////////////////////////////////////////////
// XPCOM goop
void
+WebGLContext::UpdateMaxDrawBuffers()
+{
+ mGLMaxColorAttachments = gl->GetIntAs<uint32_t>(LOCAL_GL_MAX_COLOR_ATTACHMENTS);
+ mGLMaxDrawBuffers = gl->GetIntAs<uint32_t>(LOCAL_GL_MAX_DRAW_BUFFERS);
+
+ // WEBGL_draw_buffers:
+ // "The value of the MAX_COLOR_ATTACHMENTS_WEBGL parameter must be greater than or
+ // equal to that of the MAX_DRAW_BUFFERS_WEBGL parameter."
+ mGLMaxDrawBuffers = std::min(mGLMaxDrawBuffers, mGLMaxColorAttachments);
+}
+
+void
ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& callback,
const std::vector<IndexedBufferBinding>& field,
const char* name, uint32_t flags)
{
for (const auto& cur : field) {
ImplCycleCollectionTraverse(callback, cur.mBufferBinding, name, flags);
}
}
--- a/dom/canvas/WebGLContext.h
+++ b/dom/canvas/WebGLContext.h
@@ -1471,41 +1471,37 @@ protected:
int32_t mGLMaxTextureImageUnits;
int32_t mGLMaxVertexTextureImageUnits;
int32_t mGLMaxVaryingVectors;
int32_t mGLMaxFragmentUniformVectors;
int32_t mGLMaxVertexUniformVectors;
uint32_t mGLMaxTransformFeedbackSeparateAttribs;
GLuint mGLMaxUniformBufferBindings;
- // What is supported:
uint32_t mGLMaxColorAttachments;
uint32_t mGLMaxDrawBuffers;
- // What we're allowing:
- uint32_t mImplMaxColorAttachments;
- uint32_t mImplMaxDrawBuffers;
- uint32_t mImplMaxViewportDims[2];
+ uint32_t mGLMaxViewportDims[2];
public:
GLenum LastColorAttachmentEnum() const {
- return LOCAL_GL_COLOR_ATTACHMENT0 + mImplMaxColorAttachments - 1;
+ return LOCAL_GL_COLOR_ATTACHMENT0 + mGLMaxColorAttachments - 1;
}
const decltype(mOptions)& Options() const { return mOptions; }
protected:
// Texture sizes are often not actually the GL values. Let's be explicit that these
// are implementation limits.
- uint32_t mImplMaxTextureSize;
- uint32_t mImplMaxCubeMapTextureSize;
- uint32_t mImplMax3DTextureSize;
- uint32_t mImplMaxArrayTextureLayers;
- uint32_t mImplMaxRenderbufferSize;
+ uint32_t mGLMaxTextureSize;
+ uint32_t mGLMaxCubeMapTextureSize;
+ uint32_t mGLMax3DTextureSize;
+ uint32_t mGLMaxArrayTextureLayers;
+ uint32_t mGLMaxRenderbufferSize;
public:
GLuint MaxVertexAttribs() const {
return mGLMaxVertexAttribs;
}
GLuint GLMaxTextureUnits() const {
return mGLMaxTextureUnits;
@@ -2073,16 +2069,18 @@ public:
UniquePtr<webgl::FormatUsageAuthority> mFormatUsage;
virtual UniquePtr<webgl::FormatUsageAuthority>
CreateFormatUsage(gl::GLContext* gl) const = 0;
const decltype(mBound2DTextures)* TexListForElemType(GLenum elemType) const;
+ void UpdateMaxDrawBuffers();
+
// Friend list
friend class ScopedCopyTexImageSource;
friend class ScopedResolveTexturesForDraw;
friend class ScopedUnpackReset;
friend class webgl::TexUnpackBlob;
friend class webgl::TexUnpackBytes;
friend class webgl::TexUnpackImage;
friend class webgl::TexUnpackSurface;
--- a/dom/canvas/WebGLContextGL.cpp
+++ b/dom/canvas/WebGLContextGL.cpp
@@ -2252,18 +2252,18 @@ void
WebGLContext::Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
if (IsContextLost())
return;
if (width < 0 || height < 0)
return ErrorInvalidValue("viewport: negative size");
- width = std::min(width, (GLsizei)mImplMaxViewportDims[0]);
- height = std::min(height, (GLsizei)mImplMaxViewportDims[1]);
+ width = std::min(width, (GLsizei)mGLMaxViewportDims[0]);
+ height = std::min(height, (GLsizei)mGLMaxViewportDims[1]);
MakeContextCurrent();
gl->fViewport(x, y, width, height);
mViewportX = x;
mViewportY = y;
mViewportWidth = width;
mViewportHeight = height;
--- a/dom/canvas/WebGLContextState.cpp
+++ b/dom/canvas/WebGLContextState.cpp
@@ -178,23 +178,23 @@ WebGLContext::GetParameter(JSContext* cx
if (IsContextLost())
return JS::NullValue();
MakeContextCurrent();
if (IsWebGL2() || IsExtensionEnabled(WebGLExtensionID::WEBGL_draw_buffers)) {
if (pname == LOCAL_GL_MAX_COLOR_ATTACHMENTS) {
- return JS::Int32Value(mImplMaxColorAttachments);
+ return JS::Int32Value(mGLMaxColorAttachments);
} else if (pname == LOCAL_GL_MAX_DRAW_BUFFERS) {
- return JS::Int32Value(mImplMaxDrawBuffers);
+ return JS::Int32Value(mGLMaxDrawBuffers);
} else if (pname >= LOCAL_GL_DRAW_BUFFER0 &&
- pname < GLenum(LOCAL_GL_DRAW_BUFFER0 + mImplMaxDrawBuffers))
+ pname < GLenum(LOCAL_GL_DRAW_BUFFER0 + mGLMaxDrawBuffers))
{
GLint ret = LOCAL_GL_NONE;
if (!mBoundDrawFramebuffer) {
if (pname == LOCAL_GL_DRAW_BUFFER0) {
ret = gl->Screen()->GetDrawBufferMode();
}
} else {
gl->fGetIntegerv(pname, &ret);
@@ -401,23 +401,23 @@ WebGLContext::GetParameter(JSContext* cx
GLint val;
if (!GetChannelBits(funcName, pname, &val))
return JS::NullValue();
return JS::Int32Value(val);
}
case LOCAL_GL_MAX_TEXTURE_SIZE:
- return JS::Int32Value(mImplMaxTextureSize);
+ return JS::Int32Value(mGLMaxTextureSize);
case LOCAL_GL_MAX_CUBE_MAP_TEXTURE_SIZE:
- return JS::Int32Value(mImplMaxCubeMapTextureSize);
+ return JS::Int32Value(mGLMaxCubeMapTextureSize);
case LOCAL_GL_MAX_RENDERBUFFER_SIZE:
- return JS::Int32Value(mImplMaxRenderbufferSize);
+ return JS::Int32Value(mGLMaxRenderbufferSize);
case LOCAL_GL_MAX_VERTEX_UNIFORM_VECTORS:
return JS::Int32Value(mGLMaxVertexUniformVectors);
case LOCAL_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
return JS::Int32Value(mGLMaxFragmentUniformVectors);
case LOCAL_GL_MAX_VARYING_VECTORS:
@@ -519,18 +519,17 @@ WebGLContext::GetParameter(JSContext* cx
if (!obj) {
rv = NS_ERROR_OUT_OF_MEMORY;
}
return JS::ObjectOrNullValue(obj);
}
// 2 ints
case LOCAL_GL_MAX_VIEWPORT_DIMS: {
- GLint iv[2] = { 0 };
- gl->fGetIntegerv(pname, iv);
+ GLint iv[2] = { GLint(mGLMaxViewportDims[0]), GLint(mGLMaxViewportDims[1]) };
JSObject* obj = dom::Int32Array::Create(cx, this, 2, iv);
if (!obj) {
rv = NS_ERROR_OUT_OF_MEMORY;
}
return JS::ObjectOrNullValue(obj);
}
// 4 ints
--- a/dom/canvas/WebGLContextValidate.cpp
+++ b/dom/canvas/WebGLContextValidate.cpp
@@ -463,46 +463,39 @@ WebGLContext::InitAndValidateGL(FailureR
}
mBound2DTextures.SetLength(mGLMaxTextureUnits);
mBoundCubeMapTextures.SetLength(mGLMaxTextureUnits);
mBound3DTextures.SetLength(mGLMaxTextureUnits);
mBound2DArrayTextures.SetLength(mGLMaxTextureUnits);
mBoundSamplers.SetLength(mGLMaxTextureUnits);
- gl->fGetIntegerv(LOCAL_GL_MAX_VIEWPORT_DIMS, (GLint*)mImplMaxViewportDims);
+ gl->fGetIntegerv(LOCAL_GL_MAX_VIEWPORT_DIMS, (GLint*)mGLMaxViewportDims);
////////////////
- gl->fGetIntegerv(LOCAL_GL_MAX_TEXTURE_SIZE, (GLint*)&mImplMaxTextureSize);
- gl->fGetIntegerv(LOCAL_GL_MAX_CUBE_MAP_TEXTURE_SIZE, (GLint*)&mImplMaxCubeMapTextureSize);
- gl->fGetIntegerv(LOCAL_GL_MAX_RENDERBUFFER_SIZE, (GLint*)&mImplMaxRenderbufferSize);
+ gl->fGetIntegerv(LOCAL_GL_MAX_TEXTURE_SIZE, (GLint*)&mGLMaxTextureSize);
+ gl->fGetIntegerv(LOCAL_GL_MAX_CUBE_MAP_TEXTURE_SIZE, (GLint*)&mGLMaxCubeMapTextureSize);
+ gl->fGetIntegerv(LOCAL_GL_MAX_RENDERBUFFER_SIZE, (GLint*)&mGLMaxRenderbufferSize);
- if (!gl->GetPotentialInteger(LOCAL_GL_MAX_3D_TEXTURE_SIZE, (GLint*)&mImplMax3DTextureSize))
- mImplMax3DTextureSize = 0;
- if (!gl->GetPotentialInteger(LOCAL_GL_MAX_ARRAY_TEXTURE_LAYERS, (GLint*)&mImplMaxArrayTextureLayers))
- mImplMaxArrayTextureLayers = 0;
+ if (!gl->GetPotentialInteger(LOCAL_GL_MAX_3D_TEXTURE_SIZE, (GLint*)&mGLMax3DTextureSize))
+ mGLMax3DTextureSize = 0;
+ if (!gl->GetPotentialInteger(LOCAL_GL_MAX_ARRAY_TEXTURE_LAYERS, (GLint*)&mGLMaxArrayTextureLayers))
+ mGLMaxArrayTextureLayers = 0;
gl->fGetIntegerv(LOCAL_GL_MAX_TEXTURE_IMAGE_UNITS, &mGLMaxTextureImageUnits);
gl->fGetIntegerv(LOCAL_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &mGLMaxVertexTextureImageUnits);
////////////////
mGLMaxColorAttachments = 1;
mGLMaxDrawBuffers = 1;
- gl->GetPotentialInteger(LOCAL_GL_MAX_COLOR_ATTACHMENTS,
- (GLint*)&mGLMaxColorAttachments);
- gl->GetPotentialInteger(LOCAL_GL_MAX_DRAW_BUFFERS, (GLint*)&mGLMaxDrawBuffers);
if (IsWebGL2()) {
- mImplMaxColorAttachments = mGLMaxColorAttachments;
- mImplMaxDrawBuffers = std::min(mGLMaxDrawBuffers, mImplMaxColorAttachments);
- } else {
- mImplMaxColorAttachments = 1;
- mImplMaxDrawBuffers = 1;
+ UpdateMaxDrawBuffers();
}
////////////////
if (gl->IsSupported(gl::GLFeature::ES2_compatibility)) {
gl->fGetIntegerv(LOCAL_GL_MAX_FRAGMENT_UNIFORM_VECTORS, &mGLMaxFragmentUniformVectors);
gl->fGetIntegerv(LOCAL_GL_MAX_VERTEX_UNIFORM_VECTORS, &mGLMaxVertexUniformVectors);
gl->fGetIntegerv(LOCAL_GL_MAX_VARYING_VECTORS, &mGLMaxVaryingVectors);
--- a/dom/canvas/WebGLExtensionDrawBuffers.cpp
+++ b/dom/canvas/WebGLExtensionDrawBuffers.cpp
@@ -15,22 +15,17 @@
namespace mozilla {
WebGLExtensionDrawBuffers::WebGLExtensionDrawBuffers(WebGLContext* webgl)
: WebGLExtensionBase(webgl)
{
MOZ_ASSERT(IsSupported(webgl), "Don't construct extension if unsupported.");
- // WEBGL_draw_buffers:
- // "The value of the MAX_COLOR_ATTACHMENTS_WEBGL parameter must be greater than or
- // equal to that of the MAX_DRAW_BUFFERS_WEBGL parameter."
- webgl->mImplMaxColorAttachments = webgl->mGLMaxColorAttachments;
- webgl->mImplMaxDrawBuffers = std::min(webgl->mGLMaxDrawBuffers,
- webgl->mImplMaxColorAttachments);
+ webgl->UpdateMaxDrawBuffers();
}
WebGLExtensionDrawBuffers::~WebGLExtensionDrawBuffers()
{
}
void
WebGLExtensionDrawBuffers::DrawBuffersWEBGL(const dom::Sequence<GLenum>& buffers)
--- a/dom/canvas/WebGLFramebuffer.cpp
+++ b/dom/canvas/WebGLFramebuffer.cpp
@@ -673,18 +673,18 @@ WebGLFramebuffer::GetColorAttachPoint(GL
if (attachPoint == LOCAL_GL_NONE)
return Some<WebGLFBAttachPoint*>(nullptr);
if (attachPoint < LOCAL_GL_COLOR_ATTACHMENT0)
return Nothing();
const size_t colorId = attachPoint - LOCAL_GL_COLOR_ATTACHMENT0;
- MOZ_ASSERT(mContext->mImplMaxColorAttachments <= kMaxColorAttachments);
- if (colorId >= mContext->mImplMaxColorAttachments)
+ MOZ_ASSERT(mContext->mGLMaxColorAttachments <= kMaxColorAttachments);
+ if (colorId >= mContext->mGLMaxColorAttachments)
return Nothing();
return Some(&mColorAttachments[colorId]);
}
Maybe<WebGLFBAttachPoint*>
WebGLFramebuffer::GetAttachPoint(GLenum attachPoint)
{
@@ -978,17 +978,17 @@ WebGLFramebuffer::ValidateForRead(const
void
WebGLFramebuffer::ResolveAttachments() const
{
const auto& gl = mContext->gl;
////
// Nuke attachment points.
- for (uint32_t i = 0; i < mContext->mImplMaxColorAttachments; i++) {
+ for (uint32_t i = 0; i < mContext->mGLMaxColorAttachments; i++) {
const GLenum attachEnum = LOCAL_GL_COLOR_ATTACHMENT0 + i;
gl->fFramebufferRenderbuffer(LOCAL_GL_FRAMEBUFFER, attachEnum,
LOCAL_GL_RENDERBUFFER, 0);
}
gl->fFramebufferRenderbuffer(LOCAL_GL_FRAMEBUFFER, LOCAL_GL_DEPTH_ATTACHMENT,
LOCAL_GL_RENDERBUFFER, 0);
gl->fFramebufferRenderbuffer(LOCAL_GL_FRAMEBUFFER, LOCAL_GL_STENCIL_ATTACHMENT,
@@ -1249,17 +1249,17 @@ WebGLFramebuffer::RefreshDrawBuffers() c
const auto& gl = mContext->gl;
if (!gl->IsSupported(gl::GLFeature::draw_buffers))
return;
// Prior to GL4.1, having a no-image FB attachment that's selected by DrawBuffers
// yields a framebuffer status of FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER.
// We could workaround this only on affected versions, but it's easier be
// unconditional.
- std::vector<GLenum> driverBuffers(mContext->mImplMaxDrawBuffers, LOCAL_GL_NONE);
+ std::vector<GLenum> driverBuffers(mContext->mGLMaxDrawBuffers, LOCAL_GL_NONE);
for (const auto& attach : mColorDrawBuffers) {
if (attach->HasImage()) {
const uint32_t index = attach->mAttachmentPoint - LOCAL_GL_COLOR_ATTACHMENT0;
driverBuffers[index] = attach->mAttachmentPoint;
}
}
gl->fDrawBuffers(driverBuffers.size(), driverBuffers.data());
@@ -1284,17 +1284,17 @@ WebGLFramebuffer::RefreshReadBuffer() co
gl->fReadBuffer(driverBuffer);
}
////
void
WebGLFramebuffer::DrawBuffers(const char* funcName, const dom::Sequence<GLenum>& buffers)
{
- if (buffers.Length() > mContext->mImplMaxDrawBuffers) {
+ if (buffers.Length() > mContext->mGLMaxDrawBuffers) {
// "An INVALID_VALUE error is generated if `n` is greater than MAX_DRAW_BUFFERS."
mContext->ErrorInvalidValue("%s: `buffers` must have a length <="
" MAX_DRAW_BUFFERS.", funcName);
return;
}
std::vector<const WebGLFBAttachPoint*> newColorDrawBuffers;
newColorDrawBuffers.reserve(buffers.Length());
@@ -1471,23 +1471,23 @@ WebGLFramebuffer::FramebufferTexture2D(c
* than or equal to zero and less than or equal to log2 of the
* value of MAX_CUBE_MAP_TEXTURE_SIZE. If textarget is TEXTURE_2D,
* level must be greater than or equal to zero and no larger than
* log2 of the value of MAX_TEXTURE_SIZE. Otherwise, an
* INVALID_VALUE error is generated.
*/
if (texImageTarget == LOCAL_GL_TEXTURE_2D) {
- if (uint32_t(level) > FloorLog2(mContext->mImplMaxTextureSize))
+ if (uint32_t(level) > FloorLog2(mContext->mGLMaxTextureSize))
return mContext->ErrorInvalidValue("%s: `level` is too large.", funcName);
} else {
MOZ_ASSERT(texImageTarget >= LOCAL_GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
texImageTarget <= LOCAL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z);
- if (uint32_t(level) > FloorLog2(mContext->mImplMaxCubeMapTextureSize))
+ if (uint32_t(level) > FloorLog2(mContext->mGLMaxCubeMapTextureSize))
return mContext->ErrorInvalidValue("%s: `level` is too large.", funcName);
}
} else if (level != 0) {
return mContext->ErrorInvalidValue("%s: `level` must be 0.", funcName);
}
// End of validation.
@@ -1533,37 +1533,37 @@ WebGLFramebuffer::FramebufferTextureLaye
mContext->ErrorInvalidOperation("%s: `texture` has never been bound.",
funcName);
return;
}
texImageTarget = tex->Target().get();
switch (texImageTarget) {
case LOCAL_GL_TEXTURE_3D:
- if (uint32_t(layer) >= mContext->mImplMax3DTextureSize) {
+ if (uint32_t(layer) >= mContext->mGLMax3DTextureSize) {
mContext->ErrorInvalidValue("%s: `layer` must be < %s.", funcName,
"MAX_3D_TEXTURE_SIZE");
return;
}
- if (uint32_t(level) > FloorLog2(mContext->mImplMax3DTextureSize)) {
+ if (uint32_t(level) > FloorLog2(mContext->mGLMax3DTextureSize)) {
mContext->ErrorInvalidValue("%s: `level` must be <= log2(%s).", funcName,
"MAX_3D_TEXTURE_SIZE");
return;
}
break;
case LOCAL_GL_TEXTURE_2D_ARRAY:
- if (uint32_t(layer) >= mContext->mImplMaxArrayTextureLayers) {
+ if (uint32_t(layer) >= mContext->mGLMaxArrayTextureLayers) {
mContext->ErrorInvalidValue("%s: `layer` must be < %s.", funcName,
"MAX_ARRAY_TEXTURE_LAYERS");
return;
}
- if (uint32_t(level) > FloorLog2(mContext->mImplMaxTextureSize)) {
+ if (uint32_t(level) > FloorLog2(mContext->mGLMaxTextureSize)) {
mContext->ErrorInvalidValue("%s: `level` must be <= log2(%s).", funcName,
"MAX_TEXTURE_SIZE");
return;
}
break;
default:
mContext->ErrorInvalidOperation("%s: `texture` must be a TEXTURE_3D or"
--- a/dom/canvas/WebGLProgram.cpp
+++ b/dom/canvas/WebGLProgram.cpp
@@ -693,17 +693,17 @@ WebGLProgram::GetFragDataLocation(const
// OSX doesn't return locs for indexed names, just the base names.
// Indicated by failure in: conformance2/programs/gl-get-frag-data-location.html
bool isArray;
size_t arrayIndex;
nsCString baseUserName;
if (!ParseName(userName, &baseUserName, &isArray, &arrayIndex))
return -1;
- if (arrayIndex >= mContext->mImplMaxDrawBuffers)
+ if (arrayIndex >= mContext->mGLMaxDrawBuffers)
return -1;
const auto baseLoc = GetFragDataByUserName(this, baseUserName);
const auto loc = baseLoc + GLint(arrayIndex);
return loc;
}
#endif
return GetFragDataByUserName(this, userName);
--- a/dom/canvas/WebGLRenderbuffer.cpp
+++ b/dom/canvas/WebGLRenderbuffer.cpp
@@ -183,18 +183,18 @@ WebGLRenderbuffer::RenderbufferStorage(c
{
const auto usage = mContext->mFormatUsage->GetRBUsage(internalFormat);
if (!usage) {
mContext->ErrorInvalidEnum("%s: Invalid `internalFormat`: 0x%04x.", funcName,
internalFormat);
return;
}
- if (width > mContext->mImplMaxRenderbufferSize ||
- height > mContext->mImplMaxRenderbufferSize)
+ if (width > mContext->mGLMaxRenderbufferSize ||
+ height > mContext->mGLMaxRenderbufferSize)
{
mContext->ErrorInvalidValue("%s: Width or height exceeds maximum renderbuffer"
" size.",
funcName);
return;
}
mContext->MakeContextCurrent();
--- a/dom/canvas/WebGLTextureUpload.cpp
+++ b/dom/canvas/WebGLTextureUpload.cpp
@@ -536,54 +536,54 @@ WebGLTexture::ValidateTexImageSpecificat
/* GLES 3.0.4, p133-134:
* GL_MAX_TEXTURE_SIZE is *not* the max allowed texture size. Rather, it is the
* max (width/height) size guaranteed not to generate an INVALID_VALUE for too-large
* dimensions. Sizes larger than GL_MAX_TEXTURE_SIZE *may or may not* result in an
* INVALID_VALUE, or possibly GL_OOM.
*
* However, we have needed to set our maximums lower in the past to prevent resource
- * corruption. Therefore we have mImplMaxTextureSize, which is neither necessarily
+ * corruption. Therefore we have mGLMaxTextureSize, which is neither necessarily
* lower nor higher than MAX_TEXTURE_SIZE.
*
- * Note that mImplMaxTextureSize must be >= than the advertized MAX_TEXTURE_SIZE.
- * For simplicity, we advertize MAX_TEXTURE_SIZE as mImplMaxTextureSize.
+ * Note that mGLMaxTextureSize must be >= than the advertized MAX_TEXTURE_SIZE.
+ * For simplicity, we advertize MAX_TEXTURE_SIZE as mGLMaxTextureSize.
*/
uint32_t maxWidthHeight = 0;
uint32_t maxDepth = 0;
uint32_t maxLevel = 0;
MOZ_ASSERT(level <= 31);
switch (target.get()) {
case LOCAL_GL_TEXTURE_2D:
- maxWidthHeight = mContext->mImplMaxTextureSize >> level;
+ maxWidthHeight = mContext->mGLMaxTextureSize >> level;
maxDepth = 1;
- maxLevel = CeilingLog2(mContext->mImplMaxTextureSize);
+ maxLevel = CeilingLog2(mContext->mGLMaxTextureSize);
break;
case LOCAL_GL_TEXTURE_3D:
- maxWidthHeight = mContext->mImplMax3DTextureSize >> level;
+ maxWidthHeight = mContext->mGLMax3DTextureSize >> level;
maxDepth = maxWidthHeight;
- maxLevel = CeilingLog2(mContext->mImplMax3DTextureSize);
+ maxLevel = CeilingLog2(mContext->mGLMax3DTextureSize);
break;
case LOCAL_GL_TEXTURE_2D_ARRAY:
- maxWidthHeight = mContext->mImplMaxTextureSize >> level;
+ maxWidthHeight = mContext->mGLMaxTextureSize >> level;
// "The maximum number of layers for two-dimensional array textures (depth)
// must be at least MAX_ARRAY_TEXTURE_LAYERS for all levels."
- maxDepth = mContext->mImplMaxArrayTextureLayers;
- maxLevel = CeilingLog2(mContext->mImplMaxTextureSize);
+ maxDepth = mContext->mGLMaxArrayTextureLayers;
+ maxLevel = CeilingLog2(mContext->mGLMaxTextureSize);
break;
default: // cube maps
MOZ_ASSERT(IsCubeMap());
- maxWidthHeight = mContext->mImplMaxCubeMapTextureSize >> level;
+ maxWidthHeight = mContext->mGLMaxCubeMapTextureSize >> level;
maxDepth = 1;
- maxLevel = CeilingLog2(mContext->mImplMaxCubeMapTextureSize);
+ maxLevel = CeilingLog2(mContext->mGLMaxCubeMapTextureSize);
break;
}
if (level > maxLevel) {
mContext->ErrorInvalidValue("%s: Requested level is not supported for target.",
funcName);
return false;
}