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

Side by Side Diff: Source/core/html/canvas/WebGLVertexArrayObjectOES.h

Issue 1157983002: Update WebGLVertexArrayObjectOES to WebGLVertexArrayObject for WebGL2 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix crash in testing conformance/context/context-lost-restored.html Created 5 years, 7 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 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef WebGLVertexArrayObjectOES_h 26 #ifndef WebGLVertexArrayObjectOES_h
27 #define WebGLVertexArrayObjectOES_h 27 #define WebGLVertexArrayObjectOES_h
28 28
29 #include "core/html/canvas/WebGLBuffer.h" 29 #include "core/html/canvas/WebGLVertexArrayObjectBase.h"
30 #include "core/html/canvas/WebGLContextObject.h"
31 #include "platform/heap/Handle.h"
32 #include "wtf/PassRefPtr.h" 30 #include "wtf/PassRefPtr.h"
33 31
34 namespace blink { 32 namespace blink {
35 33
36 class WebGLVertexArrayObjectOES final : public WebGLContextObject { 34 class WebGLVertexArrayObjectOES final : public WebGLVertexArrayObjectBase {
37 DEFINE_WRAPPERTYPEINFO(); 35 DEFINE_WRAPPERTYPEINFO();
38 public: 36 public:
39 enum VaoType {
40 VaoTypeDefault,
41 VaoTypeUser,
42 };
43
44 ~WebGLVertexArrayObjectOES() override;
45
46 static PassRefPtrWillBeRawPtr<WebGLVertexArrayObjectOES> create(WebGLRenderi ngContextBase*, VaoType); 37 static PassRefPtrWillBeRawPtr<WebGLVertexArrayObjectOES> create(WebGLRenderi ngContextBase*, VaoType);
47 38
48 Platform3DObject object() const { return m_object; }
49
50 // Cached values for vertex attrib range checks
51 class VertexAttribState final : public NoBaseWillBeGarbageCollected<VertexAt tribState> {
52 public:
53 VertexAttribState()
54 : enabled(false)
55 , bytesPerElement(0)
56 , size(4)
57 , type(GL_FLOAT)
58 , normalized(false)
59 , stride(16)
60 , originalStride(0)
61 , offset(0)
62 , divisor(0)
63 {
64 }
65
66 DECLARE_TRACE();
67
68 bool enabled;
69 RefPtrWillBeMember<WebGLBuffer> bufferBinding;
70 GLsizei bytesPerElement;
71 GLint size;
72 GLenum type;
73 bool normalized;
74 GLsizei stride;
75 GLsizei originalStride;
76 GLintptr offset;
77 GLuint divisor;
78 };
79
80 bool isDefaultObject() const { return m_type == VaoTypeDefault; }
81
82 bool hasEverBeenBound() const { return object() && m_hasEverBeenBound; }
83 void setHasEverBeenBound() { m_hasEverBeenBound = true; }
84
85 PassRefPtrWillBeRawPtr<WebGLBuffer> boundElementArrayBuffer() const { return m_boundElementArrayBuffer; }
86 void setElementArrayBuffer(PassRefPtrWillBeRawPtr<WebGLBuffer>);
87
88 VertexAttribState* getVertexAttribState(size_t);
89 void setVertexAttribState(GLuint, GLsizei, GLint, GLenum, GLboolean, GLsizei , GLintptr, PassRefPtrWillBeRawPtr<WebGLBuffer>);
90 void unbindBuffer(PassRefPtrWillBeRawPtr<WebGLBuffer>);
91 void setVertexAttribDivisor(GLuint index, GLuint divisor);
92
93 DECLARE_VIRTUAL_TRACE();
94
95 private: 39 private:
96 WebGLVertexArrayObjectOES(WebGLRenderingContextBase*, VaoType); 40 explicit WebGLVertexArrayObjectOES(WebGLRenderingContextBase*, VaoType);
97
98 void dispatchDetached(WebGraphicsContext3D*);
99 bool hasObject() const override { return m_object != 0; }
100 void deleteObjectImpl(WebGraphicsContext3D*) override;
101
102 Platform3DObject m_object;
103
104 VaoType m_type;
105 bool m_hasEverBeenBound;
106 #if ENABLE(OILPAN)
107 bool m_destructionInProgress;
108 #endif
109 RefPtrWillBeMember<WebGLBuffer> m_boundElementArrayBuffer;
110 WillBeHeapVector<OwnPtrWillBeMember<VertexAttribState>> m_vertexAttribState;
111 }; 41 };
112 42
113 } // namespace blink 43 } // namespace blink
114 44
115 #endif // WebGLVertexArrayObjectOES_h 45 #endif // WebGLVertexArrayObjectOES_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698