Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| index 15ef8b59221f6a124757d4a8dcc3a649ea1041d8..90e88c166d8005efedabc22a97c9597ec8e8cc93 100644 |
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| @@ -4206,7 +4206,7 @@ void WebGLRenderingContextBase::texImage2DImpl(GLenum target, GLint level, GLenu |
| restoreUnpackParameters(); |
| } |
| -bool WebGLRenderingContextBase::validateTexFunc(const char* functionName, TexImageFunctionType functionType, TexFuncValidationSourceType sourceType, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLint xoffset, GLint yoffset) |
| +bool WebGLRenderingContextBase::validateTexFunc(const char* functionName, TexImageFunctionType functionType, TexFuncValidationSourceType sourceType, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLint xoffset, GLint yoffset) |
|
Zhenyao Mo
2015/12/28 19:30:27
It is weird that you upgrade to depth but didn't d
qiankun
2015/12/29 16:16:58
Added depth now. It will be used when validating t
|
| { |
| if (!validateTexFuncLevel(functionName, target, level)) |
| return false; |
| @@ -4223,7 +4223,7 @@ bool WebGLRenderingContextBase::validateTexFunc(const char* functionName, TexIma |
| if (internalformat == 0) |
| internalformat = texture->getInternalFormat(target, level); |
| - if (!validateTexFuncParameters(functionName, functionType, target, level, internalformat, width, height, 1, border, format, type)) |
| + if (!validateTexFuncParameters(functionName, functionType, target, level, internalformat, width, height, depth, border, format, type)) |
| return false; |
| if (functionType == NotTexSubImage2D) { |
| @@ -4309,7 +4309,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| GLsizei width, GLsizei height, GLint border, |
| GLenum format, GLenum type, DOMArrayBufferView* pixels) |
| { |
| - if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceArrayBufferView, target, level, internalformat, width, height, border, format, type, 0, 0) |
| + if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceArrayBufferView, target, level, internalformat, width, height, 1, border, format, type, 0, 0) |
| || !validateTexFuncData("texImage2D", level, width, height, 1, format, type, pixels, NullAllowed)) |
| return; |
| void* data = pixels ? pixels->baseAddress() : 0; |
| @@ -4339,7 +4339,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "The source data has been neutered."); |
| return; |
| } |
| - if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageData, target, level, internalformat, pixels->width(), pixels->height(), 0, format, type, 0, 0)) |
| + if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageData, target, level, internalformat, pixels->width(), pixels->height(), 1, 0, format, type, 0, 0)) |
| return; |
| if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { |
| // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. |
| @@ -4376,7 +4376,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| if (imageForRender && imageForRender->isSVGImage()) |
| imageForRender = drawImageIntoBuffer(imageForRender.release(), image->width(), image->height(), "texImage2D"); |
| - if (!imageForRender || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLImageElement, target, level, internalformat, imageForRender->width(), imageForRender->height(), 0, format, type, 0, 0)) |
| + if (!imageForRender || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLImageElement, target, level, internalformat, imageForRender->width(), imageForRender->height(), 1, 0, format, type, 0, 0)) |
| return; |
| texImage2DImpl(target, level, internalformat, format, type, imageForRender.get(), WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha); |
| @@ -4455,7 +4455,7 @@ void WebGLRenderingContextBase::texImageCanvasByGPU(TexImageByGPUType functionTy |
| void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum internalformat, |
| GLenum format, GLenum type, HTMLCanvasElement* canvas, ExceptionState& exceptionState) |
| { |
| - if (isContextLost() || !validateHTMLCanvasElement("texImage2D", canvas, exceptionState) || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLCanvasElement, target, level, internalformat, canvas->width(), canvas->height(), 0, format, type, 0, 0)) |
| + if (isContextLost() || !validateHTMLCanvasElement("texImage2D", canvas, exceptionState) || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLCanvasElement, target, level, internalformat, canvas->width(), canvas->height(), 1, 0, format, type, 0, 0)) |
| return; |
| WebGLTexture* texture = validateTextureBinding("texImage2D", target, true); |
| @@ -4491,7 +4491,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| GLenum format, GLenum type, HTMLVideoElement* video, ExceptionState& exceptionState) |
| { |
| if (isContextLost() || !validateHTMLVideoElement("texImage2D", video, exceptionState) |
| - || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLVideoElement, target, level, internalformat, video->videoWidth(), video->videoHeight(), 0, format, type, 0, 0)) |
| + || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceHTMLVideoElement, target, level, internalformat, video->videoWidth(), video->videoHeight(), 1, 0, format, type, 0, 0)) |
| return; |
| // Go through the fast path doing a GPU-GPU textures copy without a readback to system memory if possible. |
| @@ -4540,7 +4540,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "The source data has been neutered."); |
| return; |
| } |
| - if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 0, format, type, 0, 0)) |
| + if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0)) |
| return; |
| StaticBitmapImage* imageForRender = bitmap->bitmapImage(); |
| texImage2DImpl(target, level, internalformat, format, type, imageForRender, WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha); |
| @@ -4647,7 +4647,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| GLsizei width, GLsizei height, |
| GLenum format, GLenum type, DOMArrayBufferView* pixels) |
| { |
| - if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceArrayBufferView, target, level, 0, width, height, 0, format, type, xoffset, yoffset) |
| + if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceArrayBufferView, target, level, 0, width, height, 1, 0, format, type, xoffset, yoffset) |
| || !validateTexFuncData("texSubImage2D", level, width, height, 1, format, type, pixels, NullNotAllowed)) |
| return; |
| void* data = pixels->baseAddress(); |
| @@ -4678,7 +4678,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "The source data has been neutered."); |
| return; |
| } |
| - if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageData, target, level, 0, pixels->width(), pixels->height(), 0, format, type, xoffset, yoffset)) |
| + if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageData, target, level, 0, pixels->width(), pixels->height(), 1, 0, format, type, xoffset, yoffset)) |
| return; |
| if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { |
| // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. |
| @@ -4716,7 +4716,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| if (imageForRender && imageForRender->isSVGImage()) |
| imageForRender = drawImageIntoBuffer(imageForRender.release(), image->width(), image->height(), "texSubImage2D"); |
| - if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLImageElement, target, level, 0, imageForRender->width(), imageForRender->height(), 0, format, type, xoffset, yoffset)) |
| + if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLImageElement, target, level, 0, imageForRender->width(), imageForRender->height(), 1, 0, format, type, xoffset, yoffset)) |
| return; |
| texSubImage2DImpl(target, level, xoffset, yoffset, format, type, imageForRender.get(), WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha); |
| @@ -4726,7 +4726,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| GLenum format, GLenum type, HTMLCanvasElement* canvas, ExceptionState& exceptionState) |
| { |
| if (isContextLost() || !validateHTMLCanvasElement("texSubImage2D", canvas, exceptionState) |
| - || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLCanvasElement, target, level, 0, canvas->width(), canvas->height(), 0, format, type, xoffset, yoffset)) |
| + || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLCanvasElement, target, level, 0, canvas->width(), canvas->height(), 1, 0, format, type, xoffset, yoffset)) |
| return; |
| WebGLTexture* texture = validateTextureBinding("texSubImage2D", target, true); |
| @@ -4749,7 +4749,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| GLenum format, GLenum type, HTMLVideoElement* video, ExceptionState& exceptionState) |
| { |
| if (isContextLost() || !validateHTMLVideoElement("texSubImage2D", video, exceptionState) |
| - || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLVideoElement, target, level, 0, video->videoWidth(), video->videoHeight(), 0, format, type, xoffset, yoffset)) |
| + || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLVideoElement, target, level, 0, video->videoWidth(), video->videoHeight(), 1, 0, format, type, xoffset, yoffset)) |
| return; |
| RefPtr<Image> image = videoFrameToImage(video); |
| @@ -4766,7 +4766,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint |
| synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "The source data has been neutered."); |
| return; |
| } |
| - if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 0, format, type, 0, 0)) |
| + if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceImageBitmap, target, level, 0, bitmap->width(), bitmap->height(), 1, 0, format, type, 0, 0)) |
| return; |
| StaticBitmapImage* imageForRender = bitmap->bitmapImage(); |
| texSubImage2DImpl(target, level, xoffset, yoffset, format, type, imageForRender, WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackPremultiplyAlpha); |