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

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

Issue 2379203002: implement getBufferSubDataAsync prototype (Closed)
Patch Set: hide getBufferSubDataAsync behind ExperimentalCanvasFeatures Created 4 years, 2 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.h
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
index 295b49b80d4f679f31c9f7f492415611ea240519..b11ce0e495ae704b81eb37d9f6c9e9ed1a458226 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
@@ -5,6 +5,7 @@
#ifndef WebGL2RenderingContextBase_h
#define WebGL2RenderingContextBase_h
+#include "bindings/core/v8/ScriptPromise.h"
#include "modules/webgl/WebGLExtension.h"
#include "modules/webgl/WebGLRenderingContextBase.h"
#include <memory>
@@ -27,6 +28,8 @@ class WebGL2RenderingContextBase : public WebGLRenderingContextBase {
public:
~WebGL2RenderingContextBase() override;
+ void destroyContext() override;
+
/* Buffer objects */
void bufferData(GLenum, DOMArrayBufferView*, GLenum, GLuint, GLuint);
void bufferSubData(GLenum, GLintptr, DOMArrayBufferView*, GLuint, GLuint);
@@ -42,6 +45,12 @@ class WebGL2RenderingContextBase : public WebGLRenderingContextBase {
void copyBufferSubData(GLenum, GLenum, long long, long long, long long);
void getBufferSubData(GLenum, long long, DOMArrayBufferView*, GLuint, GLuint);
+ ScriptPromise getBufferSubDataAsync(ScriptState*,
+ GLenum,
+ GLintptr,
+ DOMArrayBufferView*,
+ GLuint,
+ GLuint);
/* Framebuffer objects */
bool validateTexFuncLayer(const char*, GLenum texTarget, GLint layer);
@@ -807,6 +816,32 @@ class WebGL2RenderingContextBase : public WebGLRenderingContextBase {
GLenum target) override;
bool validateBufferDataUsage(const char* functionName, GLenum usage) override;
+ class GetBufferSubDataAsyncCallback
+ : public RefCounted<GetBufferSubDataAsyncCallback> {
+ private:
+ WeakPersistent<WebGL2RenderingContextBase> context;
+ Persistent<DOMArrayBufferView> dstData;
+ Persistent<ScriptPromiseResolver> resolver;
+ void* subBaseAddress;
+ void* mappedData;
+ long long subByteLength;
+
+ public:
+ GetBufferSubDataAsyncCallback(WebGL2RenderingContextBase*,
+ DOMArrayBufferView*,
+ ScriptPromiseResolver*,
+ void*,
+ void*,
+ long long);
+ void destroy();
+ static void resolve(GetBufferSubDataAsyncCallback*);
+ };
+
+ std::set<GetBufferSubDataAsyncCallback*> m_getBufferSubDataAsyncCallbacks;
+
+ void registerGetBufferSubDataAsyncCallback(GetBufferSubDataAsyncCallback*);
+ void unregisterGetBufferSubDataAsyncCallback(GetBufferSubDataAsyncCallback*);
+
bool canUseTexImageByGPU(TexImageFunctionID,
GLint internalformat,
GLenum type) override;

Powered by Google App Engine
This is Rietveld 408576698