Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(867)

Unified Diff: Source/modules/webgl/WebGLRenderingContextBase.cpp

Issue 1310003006: WebGL Code Refactoring: remove redundant validations for texImage2D and texSubImage2D (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: remove unnecessary validations in texImage2D/texImage2DBase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/webgl/WebGLRenderingContextBase.cpp
diff --git a/Source/modules/webgl/WebGLRenderingContextBase.cpp b/Source/modules/webgl/WebGLRenderingContextBase.cpp
index 6e2e716e43a1eb68dddf9295ec1247d6d12bc217..d343f6da8301e70e4195c4d8d9d466fd0090403d 100644
--- a/Source/modules/webgl/WebGLRenderingContextBase.cpp
+++ b/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -4012,13 +4012,8 @@ GLenum WebGLRenderingContextBase::convertTexInternalFormat(GLenum internalformat
void WebGLRenderingContextBase::texImage2DBase(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels)
{
// All calling functions check isContextLost, so a duplicate check is not needed here.
- // FIXME: Handle errors.
WebGLTexture* tex = validateTextureBinding("texImage2D", target, true);
- ASSERT(validateTexFuncLevel("texImage2D", target, level));
- ASSERT(validateTexFuncParameters("texImage2D", NotTexSubImage2D, target, level, internalformat, width, height, border, format, type));
ASSERT(tex);
- ASSERT(!isNPOTStrict() || !level || !WebGLTexture::isNPOT(width, height));
- ASSERT(!pixels || validateSettableTexFormat("texImage2D", internalformat));
webContext()->texImage2D(target, level, convertTexInternalFormat(internalformat, type), width, height, border, format, type, pixels);
tex->setLevelInfo(target, level, internalformat, width, height, 1, type);
}
@@ -4075,7 +4070,7 @@ bool WebGLRenderingContextBase::validateTexFunc(const char* functionName, TexIma
if (functionType == NotTexSubImage2D) {
if (texture->isImmutable()) {
- synthesizeGLError(GL_INVALID_OPERATION, "texImage2DBase", "attempted to modify immutable texture");
+ synthesizeGLError(GL_INVALID_OPERATION, "texImage2D", "attempted to modify immutable texture");
return false;
}
@@ -4170,7 +4165,11 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in
void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum internalformat,
GLenum format, GLenum type, ImageData* pixels)
{
- if (isContextLost() || !pixels || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageData, target, level, internalformat, pixels->width(), pixels->height(), 0, format, type, 0, 0))
+ if (!pixels) {
+ synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "no image data");
+ return;
+ }
+ if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageData, target, level, internalformat, pixels->width(), pixels->height(), 0, format, type, 0, 0))
return;
Vector<uint8_t> data;
bool needConversion = true;
@@ -4415,27 +4414,6 @@ void WebGLRenderingContextBase::texParameteri(GLenum target, GLenum pname, GLint
texParameter(target, pname, 0, param, false);
}
-void WebGLRenderingContextBase::texSubImage2DBase(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
-{
- // FIXME: Handle errors.
- ASSERT(!isContextLost());
- WebGLTexture* tex = validateTextureBinding("texSubImage2D", target, true);
- if (!tex) {
- ASSERT_NOT_REACHED();
- return;
- }
- ASSERT(validateTexFuncLevel("texSubImage2D", target, level));
- ASSERT(validateTexFuncParameters("texSubImage2D", TexSubImage2D, target, level, tex->getInternalFormat(target, level), width, height, 0, format, type));
- ASSERT(validateSize("texSubImage2D", xoffset, yoffset));
- ASSERT(validateSettableTexFormat("texSubImage2D", format));
- ASSERT((xoffset + width) >= 0);
- ASSERT((yoffset + height) >= 0);
- ASSERT(tex->getWidth(target, level) >= (xoffset + width));
- ASSERT(tex->getHeight(target, level) >= (yoffset + height));
- ASSERT(tex->getType(target, level) == type);
- webContext()->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
-}
-
void WebGLRenderingContextBase::texSubImage2DImpl(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, Image* image, WebGLImageConversion::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha)
{
// All calling functions check isContextLost, so a duplicate check is not needed here.
@@ -4461,7 +4439,7 @@ void WebGLRenderingContextBase::texSubImage2DImpl(GLenum target, GLint level, GL
if (m_unpackAlignment != 1)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
- texSubImage2DBase(target, level, xoffset, yoffset, imageExtractor.imageWidth(), imageExtractor.imageHeight(), format, type, needConversion ? data.data() : imagePixelData);
+ webContext()->texSubImage2D(target, level, xoffset, yoffset, imageExtractor.imageWidth(), imageExtractor.imageHeight(), format, type, needConversion ? data.data() : imagePixelData);
if (m_unpackAlignment != 1)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
}
@@ -4470,10 +4448,6 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
GLsizei width, GLsizei height,
GLenum format, GLenum type, DOMArrayBufferView* pixels)
{
- WebGLTexture* texture = validateTextureBinding("texSubImage2D", target, true);
- if (!texture)
- return;
-
if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceArrayBufferView, target, level, 0, width, height, 0, format, type, xoffset, yoffset)
|| !validateTexFuncData("texSubImage2D", level, width, height, format, type, pixels, NullNotAllowed))
return;
@@ -4492,7 +4466,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
}
if (changeUnpackAlignment)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
- texSubImage2DBase(target, level, xoffset, yoffset, width, height, format, type, data);
+ webContext()->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data);
if (changeUnpackAlignment)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
}
@@ -4500,7 +4474,11 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, ImageData* pixels)
{
- if (isContextLost() || !pixels || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageData, target, level, 0, pixels->width(), pixels->height(), 0, format, type, xoffset, yoffset))
+ if (!pixels) {
+ synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "no image data");
+ return;
+ }
+ if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageData, target, level, 0, pixels->width(), pixels->height(), 0, format, type, xoffset, yoffset))
return;
Vector<uint8_t> data;
@@ -4517,7 +4495,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
}
if (m_unpackAlignment != 1)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
- texSubImage2DBase(target, level, xoffset, yoffset, pixels->width(), pixels->height(), format, type, needConversion ? data.data() : pixels->data()->data());
+ webContext()->texSubImage2D(target, level, xoffset, yoffset, pixels->width(), pixels->height(), format, type, needConversion ? data.data() : pixels->data()->data());
if (m_unpackAlignment != 1)
webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698