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

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h

Issue 2273683003: Use visitDOMWrapper to preserve WebGL JS object wrappers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: style Created 4 years, 3 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 unified diff | Download patch
OLDNEW
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 #ifndef WebGL2RenderingContextBase_h 5 #ifndef WebGL2RenderingContextBase_h
6 #define WebGL2RenderingContextBase_h 6 #define WebGL2RenderingContextBase_h
7 7
8 #include "modules/webgl/WebGLExtension.h" 8 #include "modules/webgl/WebGLExtension.h"
9 #include "modules/webgl/WebGLRenderingContextBase.h" 9 #include "modules/webgl/WebGLRenderingContextBase.h"
10 #include <memory> 10 #include <memory>
(...skipping 28 matching lines...) Expand all
39 void bufferSubData(GLenum target, long long offset, const FlexibleArrayBuffe rView& data); 39 void bufferSubData(GLenum target, long long offset, const FlexibleArrayBuffe rView& data);
40 40
41 void copyBufferSubData(GLenum, GLenum, long long, long long, long long); 41 void copyBufferSubData(GLenum, GLenum, long long, long long, long long);
42 void getBufferSubData(GLenum, long long, DOMArrayBufferView*, GLuint, GLuint ); 42 void getBufferSubData(GLenum, long long, DOMArrayBufferView*, GLuint, GLuint );
43 // TODO(zmo): Obsolete, remove after WebGL2 conformance tests are updated. 43 // TODO(zmo): Obsolete, remove after WebGL2 conformance tests are updated.
44 void getBufferSubData(GLenum, long long, DOMArrayBuffer*); 44 void getBufferSubData(GLenum, long long, DOMArrayBuffer*);
45 45
46 /* Framebuffer objects */ 46 /* Framebuffer objects */
47 bool validateTexFuncLayer(const char*, GLenum texTarget, GLint layer); 47 bool validateTexFuncLayer(const char*, GLenum texTarget, GLint layer);
48 void blitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); 48 void blitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
49 void framebufferTextureLayer(ScriptState*, GLenum, GLenum, WebGLTexture*, GL int, GLint); 49 void framebufferTextureLayer(GLenum, GLenum, WebGLTexture*, GLint, GLint);
50 ScriptValue getInternalformatParameter(ScriptState*, GLenum, GLenum, GLenum) ; 50 ScriptValue getInternalformatParameter(ScriptState*, GLenum, GLenum, GLenum) ;
51 void invalidateFramebuffer(GLenum, const Vector<GLenum>&); 51 void invalidateFramebuffer(GLenum, const Vector<GLenum>&);
52 void invalidateSubFramebuffer(GLenum, const Vector<GLenum>&, GLint, GLint, G Lsizei, GLsizei); 52 void invalidateSubFramebuffer(GLenum, const Vector<GLenum>&, GLint, GLint, G Lsizei, GLsizei);
53 void readBuffer(GLenum); 53 void readBuffer(GLenum);
54 54
55 /* Renderbuffer objects */ 55 /* Renderbuffer objects */
56 void renderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsize i); 56 void renderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsize i);
57 57
58 /* Texture objects */ 58 /* Texture objects */
59 void texImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenu m, GLintptr); 59 void texImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenu m, GLintptr);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 void clearBufferuiv(GLenum, GLint, DOMUint32Array*); 166 void clearBufferuiv(GLenum, GLint, DOMUint32Array*);
167 void clearBufferuiv(GLenum, GLint, const Vector<GLuint>&); 167 void clearBufferuiv(GLenum, GLint, const Vector<GLuint>&);
168 void clearBufferfv(GLenum, GLint, DOMFloat32Array*); 168 void clearBufferfv(GLenum, GLint, DOMFloat32Array*);
169 void clearBufferfv(GLenum, GLint, const Vector<GLfloat>&); 169 void clearBufferfv(GLenum, GLint, const Vector<GLfloat>&);
170 void clearBufferfi(GLenum, GLint, GLfloat, GLint); 170 void clearBufferfi(GLenum, GLint, GLfloat, GLint);
171 171
172 /* Query Objects */ 172 /* Query Objects */
173 WebGLQuery* createQuery(); 173 WebGLQuery* createQuery();
174 void deleteQuery(WebGLQuery*); 174 void deleteQuery(WebGLQuery*);
175 GLboolean isQuery(WebGLQuery*); 175 GLboolean isQuery(WebGLQuery*);
176 void beginQuery(ScriptState*, GLenum, WebGLQuery*); 176 void beginQuery(GLenum, WebGLQuery*);
177 void endQuery(GLenum); 177 void endQuery(GLenum);
178 WebGLQuery* getQuery(GLenum, GLenum); 178 WebGLQuery* getQuery(GLenum, GLenum);
179 ScriptValue getQueryParameter(ScriptState*, WebGLQuery*, GLenum); 179 ScriptValue getQueryParameter(ScriptState*, WebGLQuery*, GLenum);
180 180
181 /* Sampler Objects */ 181 /* Sampler Objects */
182 WebGLSampler* createSampler(); 182 WebGLSampler* createSampler();
183 void deleteSampler(WebGLSampler*); 183 void deleteSampler(WebGLSampler*);
184 GLboolean isSampler(WebGLSampler*); 184 GLboolean isSampler(WebGLSampler*);
185 void bindSampler(ScriptState*, GLuint, WebGLSampler*); 185 void bindSampler(GLuint, WebGLSampler*);
186 void samplerParameteri(WebGLSampler*, GLenum, GLint); 186 void samplerParameteri(WebGLSampler*, GLenum, GLint);
187 void samplerParameterf(WebGLSampler*, GLenum, GLfloat); 187 void samplerParameterf(WebGLSampler*, GLenum, GLfloat);
188 ScriptValue getSamplerParameter(ScriptState*, WebGLSampler*, GLenum); 188 ScriptValue getSamplerParameter(ScriptState*, WebGLSampler*, GLenum);
189 189
190 /* Sync objects */ 190 /* Sync objects */
191 WebGLSync* fenceSync(GLenum, GLbitfield); 191 WebGLSync* fenceSync(GLenum, GLbitfield);
192 GLboolean isSync(WebGLSync*); 192 GLboolean isSync(WebGLSync*);
193 void deleteSync(WebGLSync*); 193 void deleteSync(WebGLSync*);
194 GLenum clientWaitSync(WebGLSync*, GLbitfield, GLint64); 194 GLenum clientWaitSync(WebGLSync*, GLbitfield, GLint64);
195 void waitSync(WebGLSync*, GLbitfield, GLint64); 195 void waitSync(WebGLSync*, GLbitfield, GLint64);
196 196
197 ScriptValue getSyncParameter(ScriptState*, WebGLSync*, GLenum); 197 ScriptValue getSyncParameter(ScriptState*, WebGLSync*, GLenum);
198 198
199 /* Transform Feedback */ 199 /* Transform Feedback */
200 WebGLTransformFeedback* createTransformFeedback(); 200 WebGLTransformFeedback* createTransformFeedback();
201 void deleteTransformFeedback(WebGLTransformFeedback*); 201 void deleteTransformFeedback(WebGLTransformFeedback*);
202 GLboolean isTransformFeedback(WebGLTransformFeedback*); 202 GLboolean isTransformFeedback(WebGLTransformFeedback*);
203 void bindTransformFeedback(ScriptState*, GLenum, WebGLTransformFeedback*); 203 void bindTransformFeedback(GLenum, WebGLTransformFeedback*);
204 void beginTransformFeedback(GLenum); 204 void beginTransformFeedback(GLenum);
205 void endTransformFeedback(); 205 void endTransformFeedback();
206 void transformFeedbackVaryings(WebGLProgram*, const Vector<String>&, GLenum) ; 206 void transformFeedbackVaryings(WebGLProgram*, const Vector<String>&, GLenum) ;
207 WebGLActiveInfo* getTransformFeedbackVarying(WebGLProgram*, GLuint); 207 WebGLActiveInfo* getTransformFeedbackVarying(WebGLProgram*, GLuint);
208 void pauseTransformFeedback(); 208 void pauseTransformFeedback();
209 void resumeTransformFeedback(); 209 void resumeTransformFeedback();
210 bool validateTransformFeedbackPrimitiveMode(const char* functionName, GLenum primitiveMode); 210 bool validateTransformFeedbackPrimitiveMode(const char* functionName, GLenum primitiveMode);
211 211
212 /* Uniform Buffer Objects and Transform Feedback Buffers */ 212 /* Uniform Buffer Objects and Transform Feedback Buffers */
213 void bindBufferBase(GLenum, GLuint, WebGLBuffer*); 213 void bindBufferBase(GLenum, GLuint, WebGLBuffer*);
214 void bindBufferRange(GLenum, GLuint, WebGLBuffer*, long long, long long); 214 void bindBufferRange(GLenum, GLuint, WebGLBuffer*, long long, long long);
215 ScriptValue getIndexedParameter(ScriptState*, GLenum, GLuint); 215 ScriptValue getIndexedParameter(ScriptState*, GLenum, GLuint);
216 Vector<GLuint> getUniformIndices(WebGLProgram*, const Vector<String>&); 216 Vector<GLuint> getUniformIndices(WebGLProgram*, const Vector<String>&);
217 ScriptValue getActiveUniforms(ScriptState*, WebGLProgram*, const Vector<GLui nt>&, GLenum); 217 ScriptValue getActiveUniforms(ScriptState*, WebGLProgram*, const Vector<GLui nt>&, GLenum);
218 GLuint getUniformBlockIndex(WebGLProgram*, const String&); 218 GLuint getUniformBlockIndex(WebGLProgram*, const String&);
219 ScriptValue getActiveUniformBlockParameter(ScriptState*, WebGLProgram*, GLui nt, GLenum); 219 ScriptValue getActiveUniformBlockParameter(ScriptState*, WebGLProgram*, GLui nt, GLenum);
220 String getActiveUniformBlockName(WebGLProgram*, GLuint); 220 String getActiveUniformBlockName(WebGLProgram*, GLuint);
221 void uniformBlockBinding(WebGLProgram*, GLuint, GLuint); 221 void uniformBlockBinding(WebGLProgram*, GLuint, GLuint);
222 222
223 /* Vertex Array Objects */ 223 /* Vertex Array Objects */
224 WebGLVertexArrayObject* createVertexArray(); 224 WebGLVertexArrayObject* createVertexArray();
225 void deleteVertexArray(ScriptState*, WebGLVertexArrayObject*); 225 void deleteVertexArray(WebGLVertexArrayObject*);
226 GLboolean isVertexArray(WebGLVertexArrayObject*); 226 GLboolean isVertexArray(WebGLVertexArrayObject*);
227 void bindVertexArray(ScriptState*, WebGLVertexArrayObject*); 227 void bindVertexArray(WebGLVertexArrayObject*);
228 228
229 /* Reading */ 229 /* Reading */
230 void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum form at, GLenum type, long long offset); 230 void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum form at, GLenum type, long long offset);
231 231
232 /* WebGLRenderingContextBase overrides */ 232 /* WebGLRenderingContextBase overrides */
233 void initializeNewContext() override; 233 void initializeNewContext() override;
234 void bindFramebuffer(ScriptState*, GLenum target, WebGLFramebuffer*) overrid e; 234 void bindFramebuffer(GLenum target, WebGLFramebuffer*) override;
235 void deleteFramebuffer(WebGLFramebuffer*) override; 235 void deleteFramebuffer(WebGLFramebuffer*) override;
236 ScriptValue getParameter(ScriptState*, GLenum pname) override; 236 ScriptValue getParameter(ScriptState*, GLenum pname) override;
237 ScriptValue getTexParameter(ScriptState*, GLenum target, GLenum pname) overr ide; 237 ScriptValue getTexParameter(ScriptState*, GLenum target, GLenum pname) overr ide;
238 ScriptValue getFramebufferAttachmentParameter(ScriptState*, GLenum target, G Lenum attachment, GLenum pname) override; 238 ScriptValue getFramebufferAttachmentParameter(ScriptState*, GLenum target, G Lenum attachment, GLenum pname) override;
239 void pixelStorei(GLenum pname, GLint param) override; 239 void pixelStorei(GLenum pname, GLint param) override;
240 void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum form at, GLenum type, DOMArrayBufferView* pixels) override; 240 void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum form at, GLenum type, DOMArrayBufferView* pixels) override;
241 void restoreCurrentFramebuffer() override; 241 void restoreCurrentFramebuffer() override;
242 242
243 EAGERLY_FINALIZE(); 243 EAGERLY_FINALIZE();
244 DECLARE_VIRTUAL_TRACE(); 244 DECLARE_VIRTUAL_TRACE();
245 245
246 protected: 246 protected:
247 friend class V8WebGL2RenderingContext;
248
247 WebGL2RenderingContextBase(HTMLCanvasElement*, std::unique_ptr<WebGraphicsCo ntext3DProvider>, const CanvasContextCreationAttributes& requestedAttributes); 249 WebGL2RenderingContextBase(HTMLCanvasElement*, std::unique_ptr<WebGraphicsCo ntext3DProvider>, const CanvasContextCreationAttributes& requestedAttributes);
248 250
249 // Helper function to validate target and the attachment combination for get FramebufferAttachmentParameters. 251 // Helper function to validate target and the attachment combination for get FramebufferAttachmentParameters.
250 // Generate GL error and return false if parameters are illegal. 252 // Generate GL error and return false if parameters are illegal.
251 bool validateGetFramebufferAttachmentParameterFunc(const char* functionName, GLenum target, GLenum attachment); 253 bool validateGetFramebufferAttachmentParameterFunc(const char* functionName, GLenum target, GLenum attachment);
252 254
253 bool validateClearBuffer(const char* functionName, GLenum buffer, GLsizei le ngth); 255 bool validateClearBuffer(const char* functionName, GLenum buffer, GLsizei le ngth);
254 256
255 enum TexStorageType { 257 enum TexStorageType {
256 TexStorageType2D, 258 TexStorageType2D,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 WebGLBuffer* validateBufferDataTarget(const char* functionName, GLenum targe t) override; 300 WebGLBuffer* validateBufferDataTarget(const char* functionName, GLenum targe t) override;
299 bool validateBufferDataUsage(const char* functionName, GLenum usage) overrid e; 301 bool validateBufferDataUsage(const char* functionName, GLenum usage) overrid e;
300 302
301 bool canUseTexImageByGPU(TexImageFunctionID, GLint internalformat, GLenum ty pe) override; 303 bool canUseTexImageByGPU(TexImageFunctionID, GLint internalformat, GLenum ty pe) override;
302 304
303 void removeBoundBuffer(WebGLBuffer*) override; 305 void removeBoundBuffer(WebGLBuffer*) override;
304 306
305 void resetUnpackParameters() override; 307 void resetUnpackParameters() override;
306 void restoreUnpackParameters() override; 308 void restoreUnpackParameters() override;
307 309
310 void visitChildDOMWrappers(v8::Isolate*, const v8::Persistent<v8::Object>&) override;
311
308 void renderbufferStorageHelper(GLenum target, GLsizei samples, GLenum intern alformat, GLsizei width, GLsizei height, const char* functionName); 312 void renderbufferStorageHelper(GLenum target, GLsizei samples, GLenum intern alformat, GLsizei width, GLsizei height, const char* functionName);
309 313
310 Member<WebGLFramebuffer> m_readFramebufferBinding; 314 Member<WebGLFramebuffer> m_readFramebufferBinding;
311 Member<WebGLTransformFeedback> m_transformFeedbackBinding; 315 Member<WebGLTransformFeedback> m_transformFeedbackBinding;
312 316
313 std::set<GLenum> m_supportedInternalFormatsStorage; 317 std::set<GLenum> m_supportedInternalFormatsStorage;
314 std::set<GLenum> m_compressedTextureFormatsETC2EAC; 318 std::set<GLenum> m_compressedTextureFormatsETC2EAC;
315 319
316 Member<WebGLBuffer> m_boundCopyReadBuffer; 320 Member<WebGLBuffer> m_boundCopyReadBuffer;
317 Member<WebGLBuffer> m_boundCopyWriteBuffer; 321 Member<WebGLBuffer> m_boundCopyWriteBuffer;
(...skipping 12 matching lines...) Expand all
330 HeapVector<Member<WebGLSampler>> m_samplerUnits; 334 HeapVector<Member<WebGLSampler>> m_samplerUnits;
331 335
332 GLint m_packRowLength; 336 GLint m_packRowLength;
333 GLint m_packSkipPixels; 337 GLint m_packSkipPixels;
334 GLint m_packSkipRows; 338 GLint m_packSkipRows;
335 GLint m_unpackRowLength; 339 GLint m_unpackRowLength;
336 GLint m_unpackImageHeight; 340 GLint m_unpackImageHeight;
337 GLint m_unpackSkipPixels; 341 GLint m_unpackSkipPixels;
338 GLint m_unpackSkipRows; 342 GLint m_unpackSkipRows;
339 GLint m_unpackSkipImages; 343 GLint m_unpackSkipImages;
340
341 ScopedPersistent<v8::Array> m_samplerWrappers;
342 ScopedPersistent<v8::Array> m_queryWrappers;
343 }; 344 };
344 345
345 DEFINE_TYPE_CASTS(WebGL2RenderingContextBase, CanvasRenderingContext, context, 346 DEFINE_TYPE_CASTS(WebGL2RenderingContextBase, CanvasRenderingContext, context,
346 context->is3d() && WebGLRenderingContextBase::getWebGLVersion(context) >= 2, 347 context->is3d() && WebGLRenderingContextBase::getWebGLVersion(context) >= 2,
347 context.is3d() && WebGLRenderingContextBase::getWebGLVersion(&context) >= 2) ; 348 context.is3d() && WebGLRenderingContextBase::getWebGLVersion(&context) >= 2) ;
348 349
349 } // namespace blink 350 } // namespace blink
350 351
351 #endif 352 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698