From 05977e6cde3c3c1d0ccb64ff4a4b5ffbe9b28285 Mon Sep 17 00:00:00 2001 From: "Jeff Gilbert (:jgilbert)" Date: Thu, 17 Nov 2016 15:01:28 -0800 Subject: [PATCH] Bug 1318507 - Update sampler entrypoints to be non-nullable, and drop trivial WebGLContextUnchecked usages. - r=ethlin MozReview-Commit-ID: 2dWKDFbAK6a --- dom/canvas/WebGL2ContextSamplers.cpp | 142 +++++++-------------------- dom/canvas/WebGLContextUnchecked.cpp | 75 -------------- dom/canvas/WebGLContextUnchecked.h | 12 --- 3 files changed, 35 insertions(+), 194 deletions(-) diff --git a/dom/canvas/WebGL2ContextSamplers.cpp b/dom/canvas/WebGL2ContextSamplers.cpp index b5186f258849..7594ff22234d 100644 --- a/dom/canvas/WebGL2ContextSamplers.cpp +++ b/dom/canvas/WebGL2ContextSamplers.cpp @@ -80,140 +80,58 @@ WebGL2Context::BindSampler(GLuint unit, WebGLSampler* sampler) if (sampler && sampler->IsDeleted()) return ErrorInvalidOperation("bindSampler: binding deleted sampler"); - WebGLContextUnchecked::BindSampler(unit, sampler); - InvalidateResolveCacheForTextureWithTexUnit(unit); + //// + gl->MakeCurrent(); + gl->fBindSampler(unit, sampler ? sampler->mGLName : 0); + + InvalidateResolveCacheForTextureWithTexUnit(unit); mBoundSamplers[unit] = sampler; } void -WebGL2Context::SamplerParameteri(WebGLSampler* sampler, GLenum pname, GLint param) +WebGL2Context::SamplerParameteri(WebGLSampler& sampler, GLenum pname, GLint paramInt) { + const char funcName[] = "samplerParameteri"; if (IsContextLost()) return; - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameteri: invalid sampler"); - - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param), "samplerParameteri")) + if (!ValidateObjectRef(funcName, sampler)) return; - sampler->SamplerParameter1i(pname, param); - WebGLContextUnchecked::SamplerParameteri(sampler, pname, param); + sampler.SamplerParameter(funcName, pname, paramInt); } void -WebGL2Context::SamplerParameteriv(WebGLSampler* sampler, GLenum pname, const dom::Int32Array& param) +WebGL2Context::SamplerParameterf(WebGLSampler& sampler, GLenum pname, GLfloat paramFloat) { + const char funcName[] = "samplerParameterf"; if (IsContextLost()) return; - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameteriv: invalid sampler"); - - param.ComputeLengthAndData(); - if (param.Length() < 1) - return /* TODO(djg): Error message */; - - /* TODO(djg): All of these calls in ES3 only take 1 param */ - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param.Data()[0]), "samplerParameteriv")) + if (!ValidateObjectRef(funcName, sampler)) return; - sampler->SamplerParameter1i(pname, param.Data()[0]); - WebGLContextUnchecked::SamplerParameteriv(sampler, pname, param.Data()); + sampler.SamplerParameter(funcName, pname, WebGLIntOrFloat(paramFloat).AsInt()); } void -WebGL2Context::SamplerParameteriv(WebGLSampler* sampler, GLenum pname, const dom::Sequence& param) -{ - if (IsContextLost()) - return; - - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameteriv: invalid sampler"); - - if (param.Length() < 1) - return /* TODO(djg): Error message */; - - /* TODO(djg): All of these calls in ES3 only take 1 param */ - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param[0]), "samplerParameteriv")) - return; - - sampler->SamplerParameter1i(pname, param[0]); - WebGLContextUnchecked::SamplerParameteriv(sampler, pname, param.Elements()); -} - -void -WebGL2Context::SamplerParameterf(WebGLSampler* sampler, GLenum pname, GLfloat param) -{ - if (IsContextLost()) - return; - - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameterf: invalid sampler"); - - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param), "samplerParameterf")) - return; - - sampler->SamplerParameter1f(pname, param); - WebGLContextUnchecked::SamplerParameterf(sampler, pname, param); -} - -void -WebGL2Context::SamplerParameterfv(WebGLSampler* sampler, GLenum pname, const dom::Float32Array& param) -{ - if (IsContextLost()) - return; - - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameterfv: invalid sampler"); - - param.ComputeLengthAndData(); - if (param.Length() < 1) - return /* TODO(djg): Error message */; - - /* TODO(djg): All of these calls in ES3 only take 1 param */ - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param.Data()[0]), "samplerParameterfv")) - return; - - sampler->SamplerParameter1f(pname, param.Data()[0]); - WebGLContextUnchecked::SamplerParameterfv(sampler, pname, param.Data()); -} - -void -WebGL2Context::SamplerParameterfv(WebGLSampler* sampler, GLenum pname, const dom::Sequence& param) -{ - if (IsContextLost()) - return; - - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("samplerParameterfv: invalid sampler"); - - if (param.Length() < 1) - return /* TODO(djg): Error message */; - - /* TODO(djg): All of these calls in ES3 only take 1 param */ - if (!ValidateSamplerParameterParams(pname, WebGLIntOrFloat(param[0]), "samplerParameterfv")) - return; - - sampler->SamplerParameter1f(pname, param[0]); - WebGLContextUnchecked::SamplerParameterfv(sampler, pname, param.Elements()); -} - -void -WebGL2Context::GetSamplerParameter(JSContext*, WebGLSampler* sampler, GLenum pname, JS::MutableHandleValue retval) +WebGL2Context::GetSamplerParameter(JSContext*, const WebGLSampler& sampler, GLenum pname, + JS::MutableHandleValue retval) { + const char funcName[] = "getSamplerParameter"; retval.setNull(); if (IsContextLost()) return; - if (!sampler || sampler->IsDeleted()) - return ErrorInvalidOperation("getSamplerParameter: invalid sampler"); - - if (!ValidateSamplerParameterName(pname, "getSamplerParameter")) + if (!ValidateObjectRef(funcName, sampler)) return; + //// + + gl->MakeCurrent(); + switch (pname) { case LOCAL_GL_TEXTURE_MIN_FILTER: case LOCAL_GL_TEXTURE_MAG_FILTER: @@ -222,14 +140,24 @@ WebGL2Context::GetSamplerParameter(JSContext*, WebGLSampler* sampler, GLenum pna case LOCAL_GL_TEXTURE_WRAP_R: case LOCAL_GL_TEXTURE_COMPARE_MODE: case LOCAL_GL_TEXTURE_COMPARE_FUNC: - retval.set(JS::Int32Value( - WebGLContextUnchecked::GetSamplerParameteriv(sampler, pname))); + { + GLint param = 0; + gl->fGetSamplerParameteriv(sampler.mGLName, pname, ¶m); + retval.set(JS::Int32Value(param)); + } return; case LOCAL_GL_TEXTURE_MIN_LOD: case LOCAL_GL_TEXTURE_MAX_LOD: - retval.set(JS::Float32Value( - WebGLContextUnchecked::GetSamplerParameterfv(sampler, pname))); + { + GLfloat param = 0; + gl->fGetSamplerParameterfv(sampler.mGLName, pname, ¶m); + retval.set(JS::Float32Value(param)); + } + return; + + default: + ErrorInvalidEnum("%s: invalid pname: %s", funcName, EnumName(pname)); return; } } diff --git a/dom/canvas/WebGLContextUnchecked.cpp b/dom/canvas/WebGLContextUnchecked.cpp index 5b471f7b40dd..d00586f11571 100644 --- a/dom/canvas/WebGLContextUnchecked.cpp +++ b/dom/canvas/WebGLContextUnchecked.cpp @@ -16,79 +16,4 @@ WebGLContextUnchecked::WebGLContextUnchecked(gl::GLContext* _gl) , gl(mGL_OnlyClearInDestroyResourcesAndContext) // const reference { } -// ----------------------------------------------------------------------------- -// Sampler Objects - -void -WebGLContextUnchecked::BindSampler(GLuint unit, WebGLSampler* sampler) -{ - gl->MakeCurrent(); - gl->fBindSampler(unit, sampler ? sampler->mGLName : 0); -} - -GLint -WebGLContextUnchecked::GetSamplerParameteriv(WebGLSampler* sampler, - GLenum pname) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - - GLint param = 0; - gl->MakeCurrent(); - gl->fGetSamplerParameteriv(sampler->mGLName, pname, ¶m); - - return param; -} - -GLfloat -WebGLContextUnchecked::GetSamplerParameterfv(WebGLSampler* sampler, - GLenum pname) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - - GLfloat param = 0.0f; - gl->MakeCurrent(); - gl->fGetSamplerParameterfv(sampler->mGLName, pname, ¶m); - return param; -} - -void -WebGLContextUnchecked::SamplerParameteri(WebGLSampler* sampler, - GLenum pname, - GLint param) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - gl->MakeCurrent(); - gl->fSamplerParameteri(sampler->mGLName, pname, param); -} - -void -WebGLContextUnchecked::SamplerParameteriv(WebGLSampler* sampler, - GLenum pname, - const GLint* param) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - gl->MakeCurrent(); - gl->fSamplerParameteriv(sampler->mGLName, pname, param); -} - -void -WebGLContextUnchecked::SamplerParameterf(WebGLSampler* sampler, - GLenum pname, - GLfloat param) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - gl->MakeCurrent(); - gl->fSamplerParameterf(sampler->mGLName, pname, param); -} - -void -WebGLContextUnchecked::SamplerParameterfv(WebGLSampler* sampler, - GLenum pname, - const GLfloat* param) -{ - MOZ_ASSERT(sampler, "Did you validate?"); - gl->MakeCurrent(); - gl->fSamplerParameterfv(sampler->mGLName, pname, param); -} - } // namespace mozilla diff --git a/dom/canvas/WebGLContextUnchecked.h b/dom/canvas/WebGLContextUnchecked.h index 785ba7943cff..eb5736f15626 100644 --- a/dom/canvas/WebGLContextUnchecked.h +++ b/dom/canvas/WebGLContextUnchecked.h @@ -20,18 +20,6 @@ class WebGLContextUnchecked public: explicit WebGLContextUnchecked(gl::GLContext* gl); - // ------------------------------------------------------------------------- - // Sampler Objects - void BindSampler(GLuint unit, WebGLSampler* sampler); - - GLint GetSamplerParameteriv(WebGLSampler* sampler, GLenum pname); - GLfloat GetSamplerParameterfv(WebGLSampler* sampler, GLenum pname); - - void SamplerParameteri(WebGLSampler* sampler, GLenum pname, GLint param); - void SamplerParameteriv(WebGLSampler* sampler, GLenum pname, const GLint* param); - void SamplerParameterf(WebGLSampler* sampler, GLenum pname, GLfloat param); - void SamplerParameterfv(WebGLSampler* sampler, GLenum pname, const GLfloat* param); - protected: // We've had issues in the past with nulling `gl` without actually releasing // all of our resources. This construction ensures that we are aware that we