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

Side by Side Diff: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h

Issue 7085002: make command buffer work in DRT (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fix no parent issue Created 9 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « webkit/DEPS ('k') | webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ 5 #ifndef WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_
6 #define WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ 6 #define WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_
7 #pragma once
7 8
8 #include <list> 9 #if defined(ENABLE_GPU)
9 #include <set>
10 10
11 #include "base/hash_tables.h" 11 #include <vector>
12 #include "base/memory/ref_counted.h" 12
13 #include "third_party/angle/include/GLSLANG/ShaderLang.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebGraphicsContext3D. h" 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebGraphicsContext3D. h"
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
17 #include "ui/gfx/native_widget_types.h"
16 18
17 #if !defined(OS_MACOSX) 19 #if !defined(OS_MACOSX)
18 #define FLIP_FRAMEBUFFER_VERTICALLY 20 #define FLIP_FRAMEBUFFER_VERTICALLY
19 #endif 21 #endif
20 namespace gfx { 22
21 class GLContext; 23 namespace gpu {
22 class GLSurface; 24 namespace gles2 {
25 class GLES2Implementation;
23 } 26 }
27 }
28
29 using WebKit::WebGLId;
24 30
25 using WebKit::WGC3Dchar; 31 using WebKit::WGC3Dchar;
26 using WebKit::WGC3Denum; 32 using WebKit::WGC3Denum;
27 using WebKit::WGC3Dboolean; 33 using WebKit::WGC3Dboolean;
28 using WebKit::WGC3Dbitfield; 34 using WebKit::WGC3Dbitfield;
29 using WebKit::WGC3Dint; 35 using WebKit::WGC3Dint;
30 using WebKit::WGC3Dsizei; 36 using WebKit::WGC3Dsizei;
31 using WebKit::WGC3Duint; 37 using WebKit::WGC3Duint;
32 using WebKit::WGC3Dfloat; 38 using WebKit::WGC3Dfloat;
33 using WebKit::WGC3Dclampf; 39 using WebKit::WGC3Dclampf;
34 using WebKit::WGC3Dintptr; 40 using WebKit::WGC3Dintptr;
35 using WebKit::WGC3Dsizeiptr; 41 using WebKit::WGC3Dsizeiptr;
36 42
37 using WebKit::WebGLId;
38
39 using WebKit::WebString;
40 using WebKit::WebView;
41
42 using WebKit::WebGraphicsContext3D;
43
44 namespace webkit { 43 namespace webkit {
45 namespace gpu { 44 namespace gpu {
46 45
47 // TODO(gman): This is a copy of WebGraphicsContext3DInProcessImpl. I will 46 class GLInProcessContext;
48 // refactor it to actually use the command buffer.
49 47
50 class WebGraphicsContext3DInProcessCommandBufferImpl : public WebGraphicsContext 3D { 48 class WebGraphicsContext3DInProcessCommandBufferImpl
49 : public WebKit::WebGraphicsContext3D {
51 public: 50 public:
51
52 WebGraphicsContext3DInProcessCommandBufferImpl(); 52 WebGraphicsContext3DInProcessCommandBufferImpl();
53 virtual ~WebGraphicsContext3DInProcessCommandBufferImpl(); 53 virtual ~WebGraphicsContext3DInProcessCommandBufferImpl();
54 54
55 //---------------------------------------------------------------------- 55 //----------------------------------------------------------------------
56 // WebGraphicsContext3D methods 56 // WebGraphicsContext3D methods
57 virtual bool initialize( 57 virtual bool initialize(WebGraphicsContext3D::Attributes attributes,
58 WebGraphicsContext3D::Attributes attributes, WebView*, bool); 58 WebKit::WebView*,
59 bool renderDirectlyToWebView);
60
59 virtual bool makeContextCurrent(); 61 virtual bool makeContextCurrent();
60 62
61 virtual int width(); 63 virtual int width();
62 virtual int height(); 64 virtual int height();
63 65
64 virtual bool isGLES2Compliant(); 66 virtual bool isGLES2Compliant();
65 67
66 virtual void reshape(int width, int height); 68 virtual void reshape(int width, int height);
67 69
68 virtual bool readBackFramebuffer(unsigned char* pixels, size_t bufferSize); 70 virtual bool readBackFramebuffer(unsigned char* pixels, size_t buffer_size);
69 71
70 virtual WebGLId getPlatformTextureId(); 72 virtual WebGLId getPlatformTextureId();
71 virtual void prepareTexture(); 73 virtual void prepareTexture();
72 74
73 virtual void synthesizeGLError(WGC3Denum error);
74 virtual void* mapBufferSubDataCHROMIUM(WGC3Denum target, WGC3Dintptr offset,
75 WGC3Dsizeiptr size, WGC3Denum access);
76 virtual void unmapBufferSubDataCHROMIUM(const void*);
77 virtual void* mapTexSubImage2DCHROMIUM(
78 WGC3Denum target,
79 WGC3Dint level,
80 WGC3Dint xoffset,
81 WGC3Dint yoffset,
82 WGC3Dsizei width,
83 WGC3Dsizei height,
84 WGC3Denum format,
85 WGC3Denum type,
86 WGC3Denum access);
87 virtual void unmapTexSubImage2DCHROMIUM(const void*);
88 virtual void copyTextureToParentTextureCHROMIUM(
89 WebGLId texture, WebGLId parentTexture);
90
91 virtual void getParentToChildLatchCHROMIUM(WGC3Duint* latch_id);
92 virtual void getChildToParentLatchCHROMIUM(WGC3Duint* latch_id);
93 virtual void waitLatchCHROMIUM(WGC3Duint latch_id);
94 virtual void setLatchCHROMIUM(WGC3Duint latch_id);
95
96 virtual WebString getRequestableExtensionsCHROMIUM();
97 virtual void requestExtensionCHROMIUM(const char*);
98
99 virtual void blitFramebufferCHROMIUM(
100 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1,
101 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1,
102 WGC3Dbitfield mask, WGC3Denum filter);
103 virtual void renderbufferStorageMultisampleCHROMIUM(
104 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat,
105 WGC3Dsizei width, WGC3Dsizei height);
106
107 virtual void activeTexture(WGC3Denum texture); 75 virtual void activeTexture(WGC3Denum texture);
108 virtual void attachShader(WebGLId program, WebGLId shader); 76 virtual void attachShader(WebGLId program, WebGLId shader);
109 virtual void bindAttribLocation( 77 virtual void bindAttribLocation(WebGLId program, WGC3Duint index,
110 WebGLId program, WGC3Duint index, const WGC3Dchar* name); 78 const WGC3Dchar* name);
111 virtual void bindBuffer(WGC3Denum target, WebGLId buffer); 79 virtual void bindBuffer(WGC3Denum target, WebGLId buffer);
112 virtual void bindFramebuffer(WGC3Denum target, WebGLId framebuffer); 80 virtual void bindFramebuffer(WGC3Denum target, WebGLId framebuffer);
113 virtual void bindRenderbuffer( 81 virtual void bindRenderbuffer(WGC3Denum target, WebGLId renderbuffer);
114 WGC3Denum target, WebGLId renderbuffer);
115 virtual void bindTexture(WGC3Denum target, WebGLId texture); 82 virtual void bindTexture(WGC3Denum target, WebGLId texture);
116 virtual void blendColor( 83 virtual void blendColor(WGC3Dclampf red, WGC3Dclampf green,
117 WGC3Dclampf red, WGC3Dclampf green, WGC3Dclampf blue, WGC3Dclampf alpha); 84 WGC3Dclampf blue, WGC3Dclampf alpha);
118 virtual void blendEquation(WGC3Denum mode); 85 virtual void blendEquation(WGC3Denum mode);
119 virtual void blendEquationSeparate(WGC3Denum modeRGB, WGC3Denum modeAlpha); 86 virtual void blendEquationSeparate(WGC3Denum modeRGB,
87 WGC3Denum modeAlpha);
120 virtual void blendFunc(WGC3Denum sfactor, WGC3Denum dfactor); 88 virtual void blendFunc(WGC3Denum sfactor, WGC3Denum dfactor);
121 virtual void blendFuncSeparate(WGC3Denum srcRGB, WGC3Denum dstRGB, 89 virtual void blendFuncSeparate(WGC3Denum srcRGB,
122 WGC3Denum srcAlpha, WGC3Denum dstAlpha); 90 WGC3Denum dstRGB,
91 WGC3Denum srcAlpha,
92 WGC3Denum dstAlpha);
123 93
124 virtual void bufferData( 94 virtual void bufferData(WGC3Denum target, WGC3Dsizeiptr size,
125 WGC3Denum target, WGC3Dsizeiptr size, const void* data, WGC3Denum usage); 95 const void* data, WGC3Denum usage);
126 virtual void bufferSubData(WGC3Denum target, WGC3Dintptr offset, 96 virtual void bufferSubData(WGC3Denum target, WGC3Dintptr offset,
127 WGC3Dsizeiptr size, const void* data); 97 WGC3Dsizeiptr size, const void* data);
128 98
129 virtual WGC3Denum checkFramebufferStatus(WGC3Denum target); 99 virtual WGC3Denum checkFramebufferStatus(WGC3Denum target);
130 virtual void clear(WGC3Dbitfield mask); 100 virtual void clear(WGC3Dbitfield mask);
131 virtual void clearColor( 101 virtual void clearColor(WGC3Dclampf red, WGC3Dclampf green,
132 WGC3Dclampf red, WGC3Dclampf green, WGC3Dclampf blue, WGC3Dclampf alpha); 102 WGC3Dclampf blue, WGC3Dclampf alpha);
133 virtual void clearDepth(WGC3Dclampf depth); 103 virtual void clearDepth(WGC3Dclampf depth);
134 virtual void clearStencil(WGC3Dint s); 104 virtual void clearStencil(WGC3Dint s);
135 virtual void colorMask(WGC3Dboolean red, WGC3Dboolean green, 105 virtual void colorMask(WGC3Dboolean red, WGC3Dboolean green,
136 WGC3Dboolean blue, WGC3Dboolean alpha); 106 WGC3Dboolean blue, WGC3Dboolean alpha);
137 virtual void compileShader(WebGLId shader); 107 virtual void compileShader(WebGLId shader);
138 108
139 virtual void copyTexImage2D( 109 virtual void copyTexImage2D(WGC3Denum target,
140 WGC3Denum target, 110 WGC3Dint level,
141 WGC3Dint level, 111 WGC3Denum internalformat,
142 WGC3Denum internalformat, 112 WGC3Dint x,
143 WGC3Dint x, 113 WGC3Dint y,
144 WGC3Dint y, 114 WGC3Dsizei width,
145 WGC3Dsizei width, 115 WGC3Dsizei height,
146 WGC3Dsizei height, 116 WGC3Dint border);
147 WGC3Dint border); 117 virtual void copyTexSubImage2D(WGC3Denum target,
148 virtual void copyTexSubImage2D( 118 WGC3Dint level,
149 WGC3Denum target, 119 WGC3Dint xoffset,
150 WGC3Dint level, 120 WGC3Dint yoffset,
151 WGC3Dint xoffset, 121 WGC3Dint x,
152 WGC3Dint yoffset, 122 WGC3Dint y,
153 WGC3Dint x, 123 WGC3Dsizei width,
154 WGC3Dint y, 124 WGC3Dsizei height);
155 WGC3Dsizei width,
156 WGC3Dsizei height);
157 virtual void cullFace(WGC3Denum mode); 125 virtual void cullFace(WGC3Denum mode);
158 virtual void depthFunc(WGC3Denum func); 126 virtual void depthFunc(WGC3Denum func);
159 virtual void depthMask(WGC3Dboolean flag); 127 virtual void depthMask(WGC3Dboolean flag);
160 virtual void depthRange(WGC3Dclampf zNear, WGC3Dclampf zFar); 128 virtual void depthRange(WGC3Dclampf zNear, WGC3Dclampf zFar);
161 virtual void detachShader(WebGLId program, WebGLId shader); 129 virtual void detachShader(WebGLId program, WebGLId shader);
162 virtual void disable(WGC3Denum cap); 130 virtual void disable(WGC3Denum cap);
163 virtual void disableVertexAttribArray(WGC3Duint index); 131 virtual void disableVertexAttribArray(WGC3Duint index);
164 virtual void drawArrays(WGC3Denum mode, WGC3Dint first, WGC3Dsizei count); 132 virtual void drawArrays(WGC3Denum mode, WGC3Dint first, WGC3Dsizei count);
165 virtual void drawElements( 133 virtual void drawElements(WGC3Denum mode,
166 WGC3Denum mode, 134 WGC3Dsizei count,
167 WGC3Dsizei count, 135 WGC3Denum type,
168 WGC3Denum type, 136 WGC3Dintptr offset);
169 WGC3Dintptr offset);
170 137
171 virtual void enable(WGC3Denum cap); 138 virtual void enable(WGC3Denum cap);
172 virtual void enableVertexAttribArray(WGC3Duint index); 139 virtual void enableVertexAttribArray(WGC3Duint index);
173 virtual void finish(); 140 virtual void finish();
174 virtual void flush(); 141 virtual void flush();
175 virtual void framebufferRenderbuffer( 142 virtual void framebufferRenderbuffer(WGC3Denum target,
176 WGC3Denum target, 143 WGC3Denum attachment,
177 WGC3Denum attachment, 144 WGC3Denum renderbuffertarget,
178 WGC3Denum renderbuffertarget, 145 WebGLId renderbuffer);
179 WebGLId renderbuffer); 146 virtual void framebufferTexture2D(WGC3Denum target,
180 virtual void framebufferTexture2D( 147 WGC3Denum attachment,
181 WGC3Denum target, 148 WGC3Denum textarget,
182 WGC3Denum attachment, 149 WebGLId texture,
183 WGC3Denum textarget, 150 WGC3Dint level);
184 WebGLId texture,
185 WGC3Dint level);
186 virtual void frontFace(WGC3Denum mode); 151 virtual void frontFace(WGC3Denum mode);
187 virtual void generateMipmap(WGC3Denum target); 152 virtual void generateMipmap(WGC3Denum target);
188 153
189 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&); 154 virtual bool getActiveAttrib(WebGLId program,
190 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&); 155 WGC3Duint index,
156 ActiveInfo&);
157 virtual bool getActiveUniform(WebGLId program,
158 WGC3Duint index,
159 ActiveInfo&);
191 160
192 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount, 161 virtual void getAttachedShaders(WebGLId program,
193 WGC3Dsizei* count, WebGLId* shaders); 162 WGC3Dsizei maxCount,
163 WGC3Dsizei* count,
164 WebGLId* shaders);
194 165
195 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name); 166 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name);
196 167
197 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value); 168 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value);
198 169
199 virtual void getBufferParameteriv( 170 virtual void getBufferParameteriv(WGC3Denum target,
200 WGC3Denum target, WGC3Denum pname, WGC3Dint* value); 171 WGC3Denum pname,
172 WGC3Dint* value);
201 173
202 virtual Attributes getContextAttributes(); 174 virtual Attributes getContextAttributes();
203 175
204 virtual WGC3Denum getError(); 176 virtual WGC3Denum getError();
205 177
206 virtual bool isContextLost(); 178 virtual bool isContextLost();
207 179
208 virtual void getFloatv(WGC3Denum pname, WGC3Dfloat* value); 180 virtual void getFloatv(WGC3Denum pname, WGC3Dfloat* value);
209 181
210 virtual void getFramebufferAttachmentParameteriv( 182 virtual void getFramebufferAttachmentParameteriv(WGC3Denum target,
211 WGC3Denum target, 183 WGC3Denum attachment,
212 WGC3Denum attachment, 184 WGC3Denum pname,
213 WGC3Denum pname, 185 WGC3Dint* value);
214 WGC3Dint* value);
215 186
216 virtual void getIntegerv(WGC3Denum pname, WGC3Dint* value); 187 virtual void getIntegerv(WGC3Denum pname, WGC3Dint* value);
217 188
218 virtual void getProgramiv( 189 virtual void getProgramiv(WebGLId program, WGC3Denum pname, WGC3Dint* value);
219 WebGLId program, WGC3Denum pname, WGC3Dint* value);
220 190
221 virtual WebString getProgramInfoLog(WebGLId program); 191 virtual WebKit::WebString getProgramInfoLog(WebGLId program);
222 192
223 virtual void getRenderbufferParameteriv( 193 virtual void getRenderbufferParameteriv(WGC3Denum target,
224 WGC3Denum target, WGC3Denum pname, WGC3Dint* value); 194 WGC3Denum pname,
195 WGC3Dint* value);
225 196
226 virtual void getShaderiv( 197 virtual void getShaderiv(WebGLId shader, WGC3Denum pname, WGC3Dint* value);
227 WebGLId shader, WGC3Denum pname, WGC3Dint* value);
228 198
229 virtual WebString getShaderInfoLog(WebGLId shader); 199 virtual WebKit::WebString getShaderInfoLog(WebGLId shader);
230 200
231 // TBD 201 // TBD
232 // void glGetShaderPrecisionFormat( 202 // void glGetShaderPrecisionFormat (GLenum shadertype,
233 // GLenum shadertype, GLenum precisiontype, 203 // GLenum precisiontype,
234 // GLint* range, GLint* precision); 204 // GLint* range,
205 // GLint* precision);
235 206
236 virtual WebString getShaderSource(WebGLId shader); 207 virtual WebKit::WebString getShaderSource(WebGLId shader);
237 virtual WebString getString(WGC3Denum name); 208 virtual WebKit::WebString getString(WGC3Denum name);
238 209
239 virtual void getTexParameterfv( 210 virtual void getTexParameterfv(WGC3Denum target,
240 WGC3Denum target, WGC3Denum pname, WGC3Dfloat* value); 211 WGC3Denum pname,
241 virtual void getTexParameteriv( 212 WGC3Dfloat* value);
242 WGC3Denum target, WGC3Denum pname, WGC3Dint* value); 213 virtual void getTexParameteriv(WGC3Denum target,
214 WGC3Denum pname,
215 WGC3Dint* value);
243 216
244 virtual void getUniformfv( 217 virtual void getUniformfv(WebGLId program,
245 WebGLId program, WGC3Dint location, WGC3Dfloat* value); 218 WGC3Dint location,
246 virtual void getUniformiv( 219 WGC3Dfloat* value);
247 WebGLId program, WGC3Dint location, WGC3Dint* value); 220 virtual void getUniformiv(WebGLId program,
221 WGC3Dint location,
222 WGC3Dint* value);
248 223
249 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name); 224 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name);
250 225
251 virtual void getVertexAttribfv( 226 virtual void getVertexAttribfv(WGC3Duint index, WGC3Denum pname,
252 WGC3Duint index, WGC3Denum pname, WGC3Dfloat* value); 227 WGC3Dfloat* value);
253 virtual void getVertexAttribiv( 228 virtual void getVertexAttribiv(WGC3Duint index, WGC3Denum pname,
254 WGC3Duint index, WGC3Denum pname, WGC3Dint* value); 229 WGC3Dint* value);
255 230
256 virtual WGC3Dsizeiptr getVertexAttribOffset( 231 virtual WGC3Dsizeiptr getVertexAttribOffset(WGC3Duint index, WGC3Denum pname);
257 WGC3Duint index, WGC3Denum pname);
258 232
259 virtual void hint(WGC3Denum target, WGC3Denum mode); 233 virtual void hint(WGC3Denum target, WGC3Denum mode);
260 virtual WGC3Dboolean isBuffer(WebGLId buffer); 234 virtual WGC3Dboolean isBuffer(WebGLId buffer);
261 virtual WGC3Dboolean isEnabled(WGC3Denum cap); 235 virtual WGC3Dboolean isEnabled(WGC3Denum cap);
262 virtual WGC3Dboolean isFramebuffer(WebGLId framebuffer); 236 virtual WGC3Dboolean isFramebuffer(WebGLId framebuffer);
263 virtual WGC3Dboolean isProgram(WebGLId program); 237 virtual WGC3Dboolean isProgram(WebGLId program);
264 virtual WGC3Dboolean isRenderbuffer(WebGLId renderbuffer); 238 virtual WGC3Dboolean isRenderbuffer(WebGLId renderbuffer);
265 virtual WGC3Dboolean isShader(WebGLId shader); 239 virtual WGC3Dboolean isShader(WebGLId shader);
266 virtual WGC3Dboolean isTexture(WebGLId texture); 240 virtual WGC3Dboolean isTexture(WebGLId texture);
267 virtual void lineWidth(WGC3Dfloat width); 241 virtual void lineWidth(WGC3Dfloat);
268 virtual void linkProgram(WebGLId program); 242 virtual void linkProgram(WebGLId program);
269 virtual void pixelStorei(WGC3Denum pname, WGC3Dint param); 243 virtual void pixelStorei(WGC3Denum pname, WGC3Dint param);
270 virtual void polygonOffset(WGC3Dfloat factor, WGC3Dfloat units); 244 virtual void polygonOffset(WGC3Dfloat factor, WGC3Dfloat units);
271 245
272 virtual void readPixels( 246 virtual void readPixels(WGC3Dint x,
273 WGC3Dint x, WGC3Dint y, 247 WGC3Dint y,
274 WGC3Dsizei width, WGC3Dsizei height, 248 WGC3Dsizei width,
275 WGC3Denum format, 249 WGC3Dsizei height,
276 WGC3Denum type, 250 WGC3Denum format,
277 void* pixels); 251 WGC3Denum type,
252 void* pixels);
278 253
279 virtual void releaseShaderCompiler(); 254 virtual void releaseShaderCompiler();
280 virtual void renderbufferStorage( 255 virtual void renderbufferStorage(WGC3Denum target,
281 WGC3Denum target, 256 WGC3Denum internalformat,
282 WGC3Denum internalformat, 257 WGC3Dsizei width,
283 WGC3Dsizei width, 258 WGC3Dsizei height);
284 WGC3Dsizei height); 259 virtual void sampleCoverage(WGC3Dfloat value, WGC3Dboolean invert);
285 virtual void sampleCoverage(WGC3Dclampf value, WGC3Dboolean invert); 260 virtual void scissor(WGC3Dint x, WGC3Dint y,
286 virtual void scissor( 261 WGC3Dsizei width, WGC3Dsizei height);
287 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height); 262 virtual void shaderSource(WebGLId shader, const WGC3Dchar* string);
288 virtual void shaderSource(WebGLId shader, const WGC3Dchar* source);
289 virtual void stencilFunc(WGC3Denum func, WGC3Dint ref, WGC3Duint mask); 263 virtual void stencilFunc(WGC3Denum func, WGC3Dint ref, WGC3Duint mask);
290 virtual void stencilFuncSeparate( 264 virtual void stencilFuncSeparate(WGC3Denum face,
291 WGC3Denum face, WGC3Denum func, WGC3Dint ref, WGC3Duint mask); 265 WGC3Denum func,
266 WGC3Dint ref,
267 WGC3Duint mask);
292 virtual void stencilMask(WGC3Duint mask); 268 virtual void stencilMask(WGC3Duint mask);
293 virtual void stencilMaskSeparate(WGC3Denum face, WGC3Duint mask); 269 virtual void stencilMaskSeparate(WGC3Denum face, WGC3Duint mask);
294 virtual void stencilOp(WGC3Denum fail, WGC3Denum zfail, WGC3Denum zpass); 270 virtual void stencilOp(WGC3Denum fail,
295 virtual void stencilOpSeparate( 271 WGC3Denum zfail,
296 WGC3Denum face, 272 WGC3Denum zpass);
297 WGC3Denum fail, 273 virtual void stencilOpSeparate(WGC3Denum face,
298 WGC3Denum zfail, 274 WGC3Denum fail,
299 WGC3Denum zpass); 275 WGC3Denum zfail,
276 WGC3Denum zpass);
300 277
301 virtual void texImage2D( 278 virtual void texImage2D(WGC3Denum target,
302 WGC3Denum target, 279 WGC3Dint level,
303 WGC3Dint level, 280 WGC3Denum internalformat,
304 WGC3Denum internalformat, 281 WGC3Dsizei width,
305 WGC3Dsizei width, 282 WGC3Dsizei height,
306 WGC3Dsizei height, 283 WGC3Dint border,
307 WGC3Dint border, 284 WGC3Denum format,
308 WGC3Denum format, 285 WGC3Denum type,
309 WGC3Denum type, 286 const void* pixels);
310 const void* pixels);
311 287
312 virtual void texParameterf( 288 virtual void texParameterf(WGC3Denum target,
313 WGC3Denum target, WGC3Denum pname, WGC3Dfloat param); 289 WGC3Denum pname,
314 virtual void texParameteri( 290 WGC3Dfloat param);
315 WGC3Denum target, WGC3Denum pname, WGC3Dint param); 291 virtual void texParameteri(WGC3Denum target,
292 WGC3Denum pname,
293 WGC3Dint param);
316 294
317 virtual void texSubImage2D( 295 virtual void texSubImage2D(WGC3Denum target,
318 WGC3Denum target, 296 WGC3Dint level,
319 WGC3Dint level, 297 WGC3Dint xoffset,
320 WGC3Dint xoffset, 298 WGC3Dint yoffset,
321 WGC3Dint yoffset, 299 WGC3Dsizei width,
322 WGC3Dsizei width, 300 WGC3Dsizei height,
323 WGC3Dsizei height, 301 WGC3Denum format,
324 WGC3Denum format, 302 WGC3Denum type,
325 WGC3Denum type, 303 const void* pixels);
326 const void* pixels);
327 304
328 virtual void uniform1f(WGC3Dint location, WGC3Dfloat x); 305 virtual void uniform1f(WGC3Dint location, WGC3Dfloat x);
329 virtual void uniform1fv(WGC3Dint location, WGC3Dsizei count, 306 virtual void uniform1fv(WGC3Dint location,
330 const WGC3Dfloat* v); 307 WGC3Dsizei count, const WGC3Dfloat* v);
331 virtual void uniform1i(WGC3Dint location, WGC3Dint x); 308 virtual void uniform1i(WGC3Dint location, WGC3Dint x);
332 virtual void uniform1iv(WGC3Dint location, WGC3Dsizei count, 309 virtual void uniform1iv(WGC3Dint location,
333 const WGC3Dint* v); 310 WGC3Dsizei count, const WGC3Dint* v);
334 virtual void uniform2f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y); 311 virtual void uniform2f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y);
335 virtual void uniform2fv(WGC3Dint location, WGC3Dsizei count, 312 virtual void uniform2fv(WGC3Dint location,
336 const WGC3Dfloat* v); 313 WGC3Dsizei count, const WGC3Dfloat* v);
337 virtual void uniform2i(WGC3Dint location, WGC3Dint x, WGC3Dint y); 314 virtual void uniform2i(WGC3Dint location, WGC3Dint x, WGC3Dint y);
338 virtual void uniform2iv(WGC3Dint location, WGC3Dsizei count, 315 virtual void uniform2iv(WGC3Dint location,
339 const WGC3Dint* v); 316 WGC3Dsizei count, const WGC3Dint* v);
340 virtual void uniform3f(WGC3Dint location, 317 virtual void uniform3f(WGC3Dint location,
341 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z); 318 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
342 virtual void uniform3fv(WGC3Dint location, WGC3Dsizei count, 319 virtual void uniform3fv(WGC3Dint location,
343 const WGC3Dfloat* v); 320 WGC3Dsizei count, const WGC3Dfloat* v);
344 virtual void uniform3i(WGC3Dint location, WGC3Dint x, WGC3Dint y, WGC3Dint z); 321 virtual void uniform3i(WGC3Dint location,
345 virtual void uniform3iv(WGC3Dint location, WGC3Dsizei count, 322 WGC3Dint x, WGC3Dint y, WGC3Dint z);
346 const WGC3Dint* v); 323 virtual void uniform3iv(WGC3Dint location,
347 virtual void uniform4f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y, 324 WGC3Dsizei count, const WGC3Dint* v);
325 virtual void uniform4f(WGC3Dint location,
326 WGC3Dfloat x, WGC3Dfloat y,
348 WGC3Dfloat z, WGC3Dfloat w); 327 WGC3Dfloat z, WGC3Dfloat w);
349 virtual void uniform4fv(WGC3Dint location, WGC3Dsizei count, 328 virtual void uniform4fv(WGC3Dint location,
350 const WGC3Dfloat* v); 329 WGC3Dsizei count, const WGC3Dfloat* v);
351 virtual void uniform4i(WGC3Dint location, WGC3Dint x, WGC3Dint y, 330 virtual void uniform4i(WGC3Dint location,
352 WGC3Dint z, WGC3Dint w); 331 WGC3Dint x, WGC3Dint y, WGC3Dint z, WGC3Dint w);
353 virtual void uniform4iv(WGC3Dint location, WGC3Dsizei count, 332 virtual void uniform4iv(WGC3Dint location,
354 const WGC3Dint* v); 333 WGC3Dsizei count, const WGC3Dint* v);
355 virtual void uniformMatrix2fv( 334 virtual void uniformMatrix2fv(WGC3Dint location,
356 WGC3Dint location, WGC3Dsizei count, 335 WGC3Dsizei count,
357 WGC3Dboolean transpose, const WGC3Dfloat* value); 336 WGC3Dboolean transpose,
358 virtual void uniformMatrix3fv( 337 const WGC3Dfloat* value);
359 WGC3Dint location, WGC3Dsizei count, 338 virtual void uniformMatrix3fv(WGC3Dint location,
360 WGC3Dboolean transpose, const WGC3Dfloat* value); 339 WGC3Dsizei count,
361 virtual void uniformMatrix4fv( 340 WGC3Dboolean transpose,
362 WGC3Dint location, WGC3Dsizei count, 341 const WGC3Dfloat* value);
363 WGC3Dboolean transpose, const WGC3Dfloat* value); 342 virtual void uniformMatrix4fv(WGC3Dint location,
343 WGC3Dsizei count,
344 WGC3Dboolean transpose,
345 const WGC3Dfloat* value);
364 346
365 virtual void useProgram(WebGLId program); 347 virtual void useProgram(WebGLId program);
366 virtual void validateProgram(WebGLId program); 348 virtual void validateProgram(WebGLId program);
367 349
368 virtual void vertexAttrib1f(WGC3Duint index, WGC3Dfloat x); 350 virtual void vertexAttrib1f(WGC3Duint index, WGC3Dfloat x);
369 virtual void vertexAttrib1fv(WGC3Duint index, const WGC3Dfloat* values); 351 virtual void vertexAttrib1fv(WGC3Duint index, const WGC3Dfloat* values);
370 virtual void vertexAttrib2f(WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y); 352 virtual void vertexAttrib2f(WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y);
371 virtual void vertexAttrib2fv(WGC3Duint index, const WGC3Dfloat* values); 353 virtual void vertexAttrib2fv(WGC3Duint index, const WGC3Dfloat* values);
372 virtual void vertexAttrib3f( 354 virtual void vertexAttrib3f(WGC3Duint index,
373 WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z); 355 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
374 virtual void vertexAttrib3fv(WGC3Duint index, const WGC3Dfloat* values); 356 virtual void vertexAttrib3fv(WGC3Duint index, const WGC3Dfloat* values);
375 virtual void vertexAttrib4f( 357 virtual void vertexAttrib4f(WGC3Duint index,
376 WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z, WGC3Dfloat w); 358 WGC3Dfloat x, WGC3Dfloat y,
359 WGC3Dfloat z, WGC3Dfloat w);
377 virtual void vertexAttrib4fv(WGC3Duint index, const WGC3Dfloat* values); 360 virtual void vertexAttrib4fv(WGC3Duint index, const WGC3Dfloat* values);
378 virtual void vertexAttribPointer( 361 virtual void vertexAttribPointer(WGC3Duint index,
379 WGC3Duint index, 362 WGC3Dint size,
380 WGC3Dint size, 363 WGC3Denum type,
381 WGC3Denum type, 364 WGC3Dboolean normalized,
382 WGC3Dboolean normalized, 365 WGC3Dsizei stride,
383 WGC3Dsizei stride, 366 WGC3Dintptr offset);
384 WGC3Dintptr offset);
385 367
386 virtual void viewport( 368 virtual void viewport(WGC3Dint x, WGC3Dint y,
387 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height); 369 WGC3Dsizei width, WGC3Dsizei height);
388 370
389 // Support for buffer creation and deletion 371 // Support for buffer creation and deletion
390 virtual WebGLId createBuffer(); 372 virtual WebGLId createBuffer();
391 virtual WebGLId createFramebuffer(); 373 virtual WebGLId createFramebuffer();
392 virtual WebGLId createProgram(); 374 virtual WebGLId createProgram();
393 virtual WebGLId createRenderbuffer(); 375 virtual WebGLId createRenderbuffer();
394 virtual WebGLId createShader(WGC3Denum); 376 virtual WebGLId createShader(WGC3Denum);
395 virtual WebGLId createTexture(); 377 virtual WebGLId createTexture();
396 378
397 virtual void deleteBuffer(WebGLId); 379 virtual void deleteBuffer(WebGLId);
398 virtual void deleteFramebuffer(WebGLId); 380 virtual void deleteFramebuffer(WebGLId);
399 virtual void deleteProgram(WebGLId); 381 virtual void deleteProgram(WebGLId);
400 virtual void deleteRenderbuffer(WebGLId); 382 virtual void deleteRenderbuffer(WebGLId);
401 virtual void deleteShader(WebGLId); 383 virtual void deleteShader(WebGLId);
402 virtual void deleteTexture(WebGLId); 384 virtual void deleteTexture(WebGLId);
403 385
386 virtual void synthesizeGLError(WGC3Denum);
387
388 virtual void* mapBufferSubDataCHROMIUM(
389 WGC3Denum target, WGC3Dintptr offset,
390 WGC3Dsizeiptr size, WGC3Denum access);
391 virtual void unmapBufferSubDataCHROMIUM(const void*);
392 virtual void* mapTexSubImage2DCHROMIUM(
393 WGC3Denum target,
394 WGC3Dint level,
395 WGC3Dint xoffset,
396 WGC3Dint yoffset,
397 WGC3Dsizei width,
398 WGC3Dsizei height,
399 WGC3Denum format,
400 WGC3Denum type,
401 WGC3Denum access);
402 virtual void unmapTexSubImage2DCHROMIUM(const void*);
403
404 virtual void copyTextureToParentTextureCHROMIUM(
405 WebGLId texture, WebGLId parentTexture);
406
407 virtual void getParentToChildLatchCHROMIUM(WGC3Duint* latch_id);
408 virtual void getChildToParentLatchCHROMIUM(WGC3Duint* latch_id);
409 virtual void waitLatchCHROMIUM(WGC3Duint latch_id);
410 virtual void setLatchCHROMIUM(WGC3Duint latch_id);
411
412 virtual void rateLimitOffscreenContextCHROMIUM();
413
414 virtual WebKit::WebString getRequestableExtensionsCHROMIUM();
415 virtual void requestExtensionCHROMIUM(const char*);
416
417 virtual void blitFramebufferCHROMIUM(
418 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1,
419 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1,
420 WGC3Dbitfield mask, WGC3Denum filter);
421 virtual void renderbufferStorageMultisampleCHROMIUM(
422 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat,
423 WGC3Dsizei width, WGC3Dsizei height);
424
425 virtual WebGLId createCompositorTexture(WGC3Dsizei width, WGC3Dsizei height);
426 virtual void deleteCompositorTexture(WebGLId parent_texture);
427 virtual void copyTextureToCompositor(WebGLId texture,
428 WebGLId parent_texture);
429
404 virtual void setContextLostCallback( 430 virtual void setContextLostCallback(
405 WebGraphicsContext3D::WebGraphicsContextLostCallback* callback) {} 431 WebGraphicsContext3D::WebGraphicsContextLostCallback* callback);
406 432
407 private: 433 private:
408 // ANGLE related. 434 // SwapBuffers callback.
409 struct ShaderSourceEntry; 435 void OnSwapBuffersComplete();
436 virtual void OnContextLost();
410 437
411 typedef base::hash_map<WebGLId, ShaderSourceEntry*> ShaderSourceMap; 438 // Used to try to find bugs in code that calls gl directly through the gl api
439 // instead of going through WebGraphicsContext3D.
440 void ClearContext();
441
442 // The context we use for OpenGL rendering.
443 GLInProcessContext* context_;
444 // The GLES2Implementation we use for OpenGL rendering.
445 ::gpu::gles2::GLES2Implementation* gl_;
446
447 // If rendering directly to WebView, weak pointer to it.
448 WebKit::WebView* web_view_;
449 #if defined(OS_MACOSX)
450 // "Fake" plugin window handle in browser process for the compositor's output.
451 gfx::PluginWindowHandle plugin_handle_;
452 #endif
453 WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_;
454
455 WebKit::WebGraphicsContext3D::Attributes attributes_;
456 int cached_width_, cached_height_;
457
458 // For tracking which FBO is bound.
459 WebGLId bound_fbo_;
460
461 // Errors raised by synthesizeGLError().
462 std::vector<WGC3Denum> synthetic_errors_;
412 463
413 #ifdef FLIP_FRAMEBUFFER_VERTICALLY 464 #ifdef FLIP_FRAMEBUFFER_VERTICALLY
414 void FlipVertically(unsigned char* framebuffer, 465 scoped_array<uint8> scanline_;
466 void FlipVertically(uint8* framebuffer,
415 unsigned int width, 467 unsigned int width,
416 unsigned int height); 468 unsigned int height);
417 #endif 469 #endif
418
419 // Take into account the user's requested context creation attributes, in
420 // particular stencil and antialias, and determine which could or could
421 // not be honored based on the capabilities of the OpenGL implementation.
422 void ValidateAttributes();
423
424 // Resolve the given rectangle of the multisampled framebuffer if necessary.
425 void ResolveMultisampledFramebuffer(
426 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height);
427
428 bool AngleCreateCompilers();
429 void AngleDestroyCompilers();
430 bool AngleValidateShaderSource(ShaderSourceEntry* entry);
431
432 WebGraphicsContext3D::Attributes attributes_;
433 bool initialized_;
434 bool render_directly_to_web_view_;
435 bool is_gles2_;
436 bool have_ext_framebuffer_object_;
437 bool have_ext_framebuffer_multisample_;
438 bool have_angle_framebuffer_multisample_;
439
440 WebGLId texture_;
441 WebGLId fbo_;
442 WebGLId depth_stencil_buffer_;
443 int cached_width_, cached_height_;
444
445 // For multisampling
446 WebGLId multisample_fbo_;
447 WebGLId multisample_depth_stencil_buffer_;
448 WebGLId multisample_color_buffer_;
449
450 // For tracking which FBO is bound
451 WebGLId bound_fbo_;
452
453 // For tracking which texture is bound
454 WebGLId bound_texture_;
455
456 // FBO used for copying child texture to parent texture.
457 WebGLId copy_texture_to_parent_texture_fbo_;
458
459 #ifdef FLIP_FRAMEBUFFER_VERTICALLY
460 unsigned char* scanline_;
461 #endif
462
463 // Errors raised by synthesizeGLError().
464 std::list<WGC3Denum> synthetic_errors_list_;
465 std::set<WGC3Denum> synthetic_errors_set_;
466
467 scoped_refptr<gfx::GLContext> gl_context_;
468 scoped_refptr<gfx::GLSurface> gl_surface_;
469
470 ShaderSourceMap shader_source_map_;
471
472 ShHandle fragment_compiler_;
473 ShHandle vertex_compiler_;
474 }; 470 };
475 471
476 } // namespace gpu 472 } // namespace gpu
477 } // namespace webkit 473 } // namespace webkit
478 474
475 #endif // defined(ENABLE_GPU)
479 #endif // WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ 476 #endif // WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_
480 477
478
OLDNEW
« no previous file with comments | « webkit/DEPS ('k') | webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698