| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "modules/webgl/WebGL2RenderingContextBase.h" | 6 #include "modules/webgl/WebGL2RenderingContextBase.h" |
| 7 | 7 |
| 8 #include "bindings/modules/v8/WebGLAny.h" | 8 #include "bindings/modules/v8/WebGLAny.h" |
| 9 #include "core/html/HTMLCanvasElement.h" | 9 #include "core/html/HTMLCanvasElement.h" |
| 10 #include "core/html/HTMLImageElement.h" | 10 #include "core/html/HTMLImageElement.h" |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 660 | 660 |
| 661 if (!validateTexFuncFormatAndType(functionName, internalformat, format, type
, level)) | 661 if (!validateTexFuncFormatAndType(functionName, internalformat, format, type
, level)) |
| 662 return false; | 662 return false; |
| 663 | 663 |
| 664 return true; | 664 return true; |
| 665 } | 665 } |
| 666 | 666 |
| 667 void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in
ternalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum
format, GLenum type, DOMArrayBufferView* pixels) | 667 void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in
ternalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum
format, GLenum type, DOMArrayBufferView* pixels) |
| 668 { | 668 { |
| 669 if (isContextLost() || !validateTexImage3D("texImage3D", target, level, inte
rnalformat, format, type) | 669 if (isContextLost() || !validateTexImage3D("texImage3D", target, level, inte
rnalformat, format, type) |
| 670 || !validateTexFuncData("texImage3D", level, width, height, format, type
, pixels, NullAllowed)) | 670 || !validateTexFuncData("texImage3D", level, width, height, depth, forma
t, type, pixels, NullAllowed)) |
| 671 return; | 671 return; |
| 672 | 672 |
| 673 void* data = pixels ? pixels->baseAddress() : 0; | 673 void* data = pixels ? pixels->baseAddress() : 0; |
| 674 Vector<uint8_t> tempData; | 674 Vector<uint8_t> tempData; |
| 675 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { | 675 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { |
| 676 // FIXME: WebGLImageConversion needs to be updated to accept image depth
. | 676 // FIXME: WebGLImageConversion needs to be updated to accept image depth
. |
| 677 notImplemented(); | 677 notImplemented(); |
| 678 return; | 678 return; |
| 679 } | 679 } |
| 680 | 680 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 if (m_unpackAlignment != 1) | 764 if (m_unpackAlignment != 1) |
| 765 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); | 765 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); |
| 766 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE
xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver
sion ? data.data() : imagePixelData); | 766 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE
xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver
sion ? data.data() : imagePixelData); |
| 767 if (m_unpackAlignment != 1) | 767 if (m_unpackAlignment != 1) |
| 768 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); | 768 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); |
| 769 } | 769 } |
| 770 | 770 |
| 771 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei d
epth, GLenum format, GLenum type, DOMArrayBufferView* pixels) | 771 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei d
epth, GLenum format, GLenum type, DOMArrayBufferView* pixels) |
| 772 { | 772 { |
| 773 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, width, height, depth) | 773 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, width, height, depth) |
| 774 || !validateTexFuncData("texSubImage3D", level, width, height, format, t
ype, pixels, NullAllowed)) | 774 || !validateTexFuncData("texSubImage3D", level, width, height, depth, fo
rmat, type, pixels, NullAllowed)) |
| 775 return; | 775 return; |
| 776 | 776 |
| 777 // FIXME: Ensure pixels is large enough to contain the desired texture dimen
sions. | 777 // FIXME: Ensure pixels is large enough to contain the desired texture dimen
sions. |
| 778 | 778 |
| 779 void* data = pixels->baseAddress(); | 779 void* data = pixels->baseAddress(); |
| 780 Vector<uint8_t> tempData; | 780 Vector<uint8_t> tempData; |
| 781 bool changeUnpackAlignment = false; | 781 bool changeUnpackAlignment = false; |
| 782 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { | 782 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { |
| 783 if (!WebGLImageConversion::extractTextureData(width, height, format, typ
e, | 783 if (!WebGLImageConversion::extractTextureData(width, height, format, typ
e, |
| 784 m_unpackAlignment, | 784 m_unpackAlignment, |
| (...skipping 2297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3082 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() | 3082 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() |
| 3083 { | 3083 { |
| 3084 if (m_readFramebufferBinding && m_readFramebufferBinding->object()) | 3084 if (m_readFramebufferBinding && m_readFramebufferBinding->object()) |
| 3085 return m_readFramebufferBinding->colorBufferFormat(); | 3085 return m_readFramebufferBinding->colorBufferFormat(); |
| 3086 if (m_requestedAttributes.alpha()) | 3086 if (m_requestedAttributes.alpha()) |
| 3087 return GL_RGBA; | 3087 return GL_RGBA; |
| 3088 return GL_RGB; | 3088 return GL_RGB; |
| 3089 } | 3089 } |
| 3090 | 3090 |
| 3091 } // namespace blink | 3091 } // namespace blink |
| OLD | NEW |