Index: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
index 317bc5951335980ac2a7f64c57327ec438c77f87..1c7f34570322ee4737cf3f6f674b437f6157b753 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
@@ -805,10 +805,6 @@ bool WebGL2RenderingContextBase::validateTexStorage(const char* functionName, GL |
} |
} |
- WebGLTexture* tex = validateTextureBinding(functionName, target, false); |
- if (!tex) |
- return false; |
- |
if (functionType == TexStorageType3D && target != GL_TEXTURE_2D_ARRAY && m_compressedTextureFormatsETC2EAC.find(internalformat) != m_compressedTextureFormatsETC2EAC.end()) { |
synthesizeGLError(GL_INVALID_OPERATION, functionName, "target for ETC2/EAC internal formats must be TEXTURE_2D_ARRAY"); |
return false; |
@@ -819,11 +815,6 @@ bool WebGL2RenderingContextBase::validateTexStorage(const char* functionName, GL |
return false; |
} |
- if (tex->isImmutable()) { |
- synthesizeGLError(GL_INVALID_OPERATION, functionName, "attempted to modify immutable texture"); |
- return false; |
- } |
- |
if (width <= 0 || height <= 0 || depth <= 0) { |
synthesizeGLError(GL_INVALID_VALUE, functionName, "invalid dimensions"); |
return false; |
@@ -854,9 +845,7 @@ void WebGL2RenderingContextBase::texStorage2D(GLenum target, GLsizei levels, GLe |
if (isContextLost() || !validateTexStorage("texStorage2D", target, levels, internalformat, width, height, 1, TexStorageType2D)) |
return; |
- WebGLTexture* tex = validateTextureBinding("texStorage2D", target, false); |
webContext()->texStorage2DEXT(target, levels, internalformat, width, height); |
- tex->setTexStorageInfo(target, levels, internalformat, width, height, 1); |
} |
void WebGL2RenderingContextBase::texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) |
@@ -864,9 +853,7 @@ void WebGL2RenderingContextBase::texStorage3D(GLenum target, GLsizei levels, GLe |
if (isContextLost() || !validateTexStorage("texStorage3D", target, levels, internalformat, width, height, depth, TexStorageType3D)) |
return; |
- WebGLTexture* tex = validateTextureBinding("texStorage3D", target, false); |
webContext()->texStorage3D(target, levels, internalformat, width, height, depth); |
- tex->setTexStorageInfo(target, levels, internalformat, width, height, depth); |
} |
void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, DOMArrayBufferView* pixels) |
@@ -884,10 +871,7 @@ void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in |
return; |
} |
- WebGLTexture* tex = validateTextureBinding("texImage3D", target, true); |
- ASSERT(tex); |
webContext()->texImage3D(target, level, convertTexInternalFormat(internalformat, type), width, height, depth, border, format, type, data); |
- tex->setLevelInfo(target, level, internalformat, width, height, depth, type); |
} |
void WebGL2RenderingContextBase::texSubImage3DImpl(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, Image* image, WebGLImageConversion::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha) |
@@ -1002,18 +986,9 @@ void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint |
|| !validateTexFunc("texSubImage3D", TexSubImage, SourceHTMLCanvasElement, target, level, 0, canvas->width(), canvas->height(), 1, 0, format, type, xoffset, yoffset, zoffset)) |
return; |
- WebGLTexture* texture = validateTextureBinding("texSubImage3D", target, false); |
- ASSERT(texture); |
- GLenum internalformat = texture->getInternalFormat(target, level); |
- |
- if (!canvas->renderingContext() || !canvas->renderingContext()->isAccelerated() || !canUseTexImageCanvasByGPU(internalformat, type)) { |
- // 2D canvas has only FrontBuffer. |
- texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, canvas->copiedImage(FrontBuffer, PreferAcceleration).get(), |
- WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha); |
- return; |
- } |
- |
- texImageCanvasByGPU(TexSubImage3DByGPU, texture, target, level, GL_RGBA, type, xoffset, yoffset, zoffset, canvas); |
+ // FIXME: Implement GPU-to-GPU copy path. |
Ken Russell (switch to Gerrit)
2016/02/11 01:25:01
Could you provide more details about exactly what'
Zhenyao Mo
2016/02/11 02:16:46
Sure, I'll create a bug with more details. But le
|
+ texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, canvas->copiedImage(FrontBuffer, PreferAcceleration).get(), |
+ WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha); |
} |
void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLVideoElement* video, ExceptionState& exceptionState) |
@@ -1050,12 +1025,6 @@ void WebGL2RenderingContextBase::copyTexSubImage3D(GLenum target, GLint level, G |
return; |
if (!validateReadBufferAndGetInfo("copyTexSubImage3D", readFramebufferBinding)) |
return; |
- WebGLTexture* tex = validateTextureBinding("copyTexSubImage3D", target, true); |
- ASSERT(tex); |
- if (!isTexInternalFormatColorBufferCombinationValid(tex->getInternalFormat(target, level), boundFramebufferColorFormat())) { |
- synthesizeGLError(GL_INVALID_OPERATION, "copyTexSubImage3D", "framebuffer is incompatible format"); |
- return; |
- } |
clearIfComposited(); |
ScopedDrawingBufferBinder binder(drawingBuffer(), readFramebufferBinding); |
webContext()->copyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); |
@@ -1080,16 +1049,7 @@ void WebGL2RenderingContextBase::compressedTexImage3D(GLenum target, GLint level |
if (!validateCompressedTexFuncData("compressedTexImage3D", width, height, depth, internalformat, data)) |
return; |
- WebGLTexture* tex = validateTextureBinding("compressedTexImage3D", target, true); |
- if (!tex) |
- return; |
- if (tex->isImmutable()) { |
- synthesizeGLError(GL_INVALID_OPERATION, "compressedTexImage3D", "attempted to modify immutable texture"); |
- return; |
- } |
- |
webContext()->compressedTexImage3D(target, level, internalformat, width, height, depth, border, data->byteLength(), data->baseAddress()); |
- tex->setLevelInfo(target, level, internalformat, width, height, depth, GL_UNSIGNED_BYTE); |
} |
void WebGL2RenderingContextBase::compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, DOMArrayBufferView* data) |
@@ -1105,10 +1065,6 @@ void WebGL2RenderingContextBase::compressedTexSubImage3D(GLenum target, GLint le |
return; |
if (!validateCompressedTexFormat("compressedTexSubImage3D", format)) |
return; |
- if (format != tex->getInternalFormat(target, level)) { |
- synthesizeGLError(GL_INVALID_OPERATION, "compressedTexSubImage3D", "format does not match texture format"); |
- return; |
- } |
if (!validateCompressedTexSubDimensions("compressedTexSubImage3D", target, level, xoffset, yoffset, zoffset, width, height, depth, format, tex)) |
return; |
if (!validateCompressedTexFuncData("compressedTexSubImage3D", width, height, depth, format, data)) |
@@ -3465,15 +3421,6 @@ void WebGL2RenderingContextBase::restoreCurrentFramebuffer() |
bindFramebuffer(nullptr, GL_READ_FRAMEBUFFER, m_readFramebufferBinding.get()); |
} |
-GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() |
-{ |
- if (m_readFramebufferBinding && m_readFramebufferBinding->object()) |
- return m_readFramebufferBinding->colorBufferFormat(); |
- if (m_requestedAttributes.alpha()) |
- return GL_RGBA; |
- return GL_RGB; |
-} |
- |
const WebGLSamplerState* WebGL2RenderingContextBase::getTextureUnitSamplerState(GLenum target, GLuint unit) const |
{ |
ASSERT(unit < m_samplerUnits.size()); |