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

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 2277603005: Implement tex{Sub}Image{2|3}D with ArrayBufferView sub source. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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
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 9fbfb7575463166e0c4a96b0698c43a843b80a94..446acc6cb01257752be610c8474c2c82e79f72a2 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -41,36 +41,12 @@ GLsync syncObjectOrZero(const WebGLSync* object)
return object ? object->object() : nullptr;
}
-size_t getViewTypeSize(WTF::ArrayBufferView::ViewType viewType)
-{
- switch (viewType) {
- case WTF::ArrayBufferView::TypeInt8:
- case WTF::ArrayBufferView::TypeUint8:
- case WTF::ArrayBufferView::TypeUint8Clamped:
- return 1;
- case WTF::ArrayBufferView::TypeInt16:
- case WTF::ArrayBufferView::TypeUint16:
- return 2;
- case WTF::ArrayBufferView::TypeInt32:
- case WTF::ArrayBufferView::TypeUint32:
- case WTF::ArrayBufferView::TypeFloat32:
- return 4;
- case WTF::ArrayBufferView::TypeFloat64:
- return 8;
- case WTF::ArrayBufferView::TypeDataView:
- return 1;
- default:
- NOTREACHED();
- return 0;
- }
-}
-
bool validateSubSourceAndGetData(DOMArrayBufferView* view, GLuint subOffset, GLuint subLength, void** outBaseAddress, long long* outByteLength)
{
// This is guaranteed to be non-null by DOM.
DCHECK(view);
- size_t typeSize = getViewTypeSize(view->type());
+ size_t typeSize = view->typeSize();
DCHECK_GE(8u, typeSize);
long long byteLength = 0;
if (subLength) {
@@ -993,7 +969,8 @@ void WebGL2RenderingContextBase::texImage2D(GLenum target, GLint level, GLint in
void WebGL2RenderingContextBase::texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type, DOMArrayBufferView* data, GLuint srcOffset)
{
- // TODO(zmo): To be implemented.
+ texImageHelperDOMArrayBufferView(TexImage2D, target, level, internalformat, width, height, 1, border,
+ format, type, 0, 0, 0, data, NullNotReachable, srcOffset);
}
void WebGL2RenderingContextBase::texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
@@ -1060,7 +1037,8 @@ void WebGL2RenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
void WebGL2RenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, DOMArrayBufferView* pixels, GLuint srcOffset)
{
- // TODO(zmo): To be implemented.
+ texImageHelperDOMArrayBufferView(TexSubImage2D, target, level, 0, width, height, 1, 0, format, type,
+ xoffset, yoffset, 0, pixels, NullNotReachable, srcOffset);
}
void WebGL2RenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
@@ -1142,13 +1120,15 @@ void WebGL2RenderingContextBase::texStorage3D(GLenum target, GLsizei levels, GLe
void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth,
GLint border, GLenum format, GLenum type, DOMArrayBufferView* pixels)
{
- texImageHelperDOMArrayBufferView(TexImage3D, target, level, internalformat, width, height, border, format, type, depth, 0, 0, 0, pixels);
+ texImageHelperDOMArrayBufferView(TexImage3D, target, level, internalformat, width, height, depth, border,
+ format, type, 0, 0, 0, pixels, NullAllowed, 0);
}
void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth,
GLint border, GLenum format, GLenum type, DOMArrayBufferView* pixels, GLuint srcOffset)
{
- // TODO(zmo): To be implemented.
+ texImageHelperDOMArrayBufferView(TexImage3D, target, level, internalformat, width, height, depth, border,
+ format, type, 0, 0, 0, pixels, NullNotReachable, srcOffset);
}
void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth,
@@ -1203,8 +1183,8 @@ void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in
void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type, DOMArrayBufferView* pixels, GLuint srcOffset)
{
- // TODO(zmo): To be implemented.
- texImageHelperDOMArrayBufferView(TexSubImage3D, target, level, 0, width, height, 0, format, type, depth, xoffset, yoffset, zoffset, pixels);
+ texImageHelperDOMArrayBufferView(TexSubImage3D, target, level, 0, width, height, depth, 0, format, type,
+ xoffset, yoffset, zoffset, pixels, NullNotReachable, srcOffset);
}
void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,

Powered by Google App Engine
This is Rietveld 408576698