blob: 4603afbc71ec548daecc7e9f88629555491e889c [file] [log] [blame]
[email protected]3b63f8f42011-03-28 01:54:151// Copyright (c) 2011 The Chromium Authors. All rights reserved.
[email protected]49861ff2011-01-11 19:50:402// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_IMPL_H_
6#define WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_IMPL_H_
7
8#include <list>
9#include <set>
10
11#include "base/hash_tables.h"
[email protected]fbe20372011-06-01 01:46:3812#include "base/memory/ref_counted.h"
[email protected]49861ff2011-01-11 19:50:4013#include "third_party/angle/include/GLSLANG/ShaderLang.h"
[email protected]3034b6812011-12-03 00:00:1414#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h"
15#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
[email protected]16e25212011-10-10 21:17:4216#include "ui/gfx/native_widget_types.h"
[email protected]49861ff2011-01-11 19:50:4017
18#if !defined(OS_MACOSX)
19#define FLIP_FRAMEBUFFER_VERTICALLY
20#endif
21namespace gfx {
22class GLContext;
[email protected]f62a5ab2011-05-23 20:34:1523class GLSurface;
[email protected]52ee7cf2011-10-15 22:52:0724class GLShareGroup;
[email protected]49861ff2011-01-11 19:50:4025}
26
[email protected]9cae4ee12011-01-27 18:06:5627using WebKit::WGC3Dchar;
28using WebKit::WGC3Denum;
29using WebKit::WGC3Dboolean;
30using WebKit::WGC3Dbitfield;
31using WebKit::WGC3Dint;
32using WebKit::WGC3Dsizei;
33using WebKit::WGC3Duint;
34using WebKit::WGC3Dfloat;
35using WebKit::WGC3Dclampf;
36using WebKit::WGC3Dintptr;
37using WebKit::WGC3Dsizeiptr;
[email protected]9cae4ee12011-01-27 18:06:5638
39using WebKit::WebGLId;
40
41using WebKit::WebString;
42using WebKit::WebView;
43
44using WebKit::WebGraphicsContext3D;
45
[email protected]de06f682011-01-12 21:10:1646namespace webkit {
47namespace gpu {
[email protected]49861ff2011-01-11 19:50:4048
49// The default implementation of WebGL. In Chromium, using this class
50// requires the sandbox to be disabled, which is strongly discouraged.
51// It is provided for support of test_shell and any Chromium ports
52// where an in-renderer WebGL implementation would be helpful.
53
[email protected]9cae4ee12011-01-27 18:06:5654class WebGraphicsContext3DInProcessImpl : public WebGraphicsContext3D {
55 public:
[email protected]16e25212011-10-10 21:17:4256 // Creates a WebGraphicsContext3DInProcessImpl for a given window. If window
57 // is gfx::kNullPluginWindow, then it creates an offscreen context.
[email protected]52ee7cf2011-10-15 22:52:0758 // share_group is the group this context shares namespaces with. It's only
59 // used for window-bound countexts.
60 WebGraphicsContext3DInProcessImpl(gfx::PluginWindowHandle window,
61 gfx::GLShareGroup* share_group);
[email protected]9cae4ee12011-01-27 18:06:5662 virtual ~WebGraphicsContext3DInProcessImpl();
63
64 //----------------------------------------------------------------------
65 // WebGraphicsContext3D methods
66 virtual bool initialize(
67 WebGraphicsContext3D::Attributes attributes, WebView*, bool);
68 virtual bool makeContextCurrent();
69
70 virtual int width();
71 virtual int height();
72
73 virtual bool isGLES2Compliant();
74
[email protected]9a5afa432011-07-22 18:16:3975 virtual bool setParentContext(WebGraphicsContext3D* parent_context);
76
[email protected]9cae4ee12011-01-27 18:06:5677 virtual void reshape(int width, int height);
78
79 virtual bool readBackFramebuffer(unsigned char* pixels, size_t bufferSize);
[email protected]c0c00462011-08-08 22:53:2380 virtual bool readBackFramebuffer(unsigned char* pixels, size_t buffer_size,
81 WebGLId framebuffer, int width, int height);
[email protected]9cae4ee12011-01-27 18:06:5682
83 virtual WebGLId getPlatformTextureId();
84 virtual void prepareTexture();
[email protected]1c75a3702011-11-11 14:15:2885 virtual void postSubBufferCHROMIUM(int x, int y, int width, int height);
[email protected]9cae4ee12011-01-27 18:06:5686
87 virtual void synthesizeGLError(WGC3Denum error);
88 virtual void* mapBufferSubDataCHROMIUM(WGC3Denum target, WGC3Dintptr offset,
89 WGC3Dsizeiptr size, WGC3Denum access);
90 virtual void unmapBufferSubDataCHROMIUM(const void*);
91 virtual void* mapTexSubImage2DCHROMIUM(
92 WGC3Denum target,
93 WGC3Dint level,
94 WGC3Dint xoffset,
95 WGC3Dint yoffset,
96 WGC3Dsizei width,
97 WGC3Dsizei height,
98 WGC3Denum format,
99 WGC3Denum type,
100 WGC3Denum access);
101 virtual void unmapTexSubImage2DCHROMIUM(const void*);
[email protected]55ebe2f2011-10-25 01:27:14102
103 virtual void setVisibilityCHROMIUM(bool visible);
104
[email protected]9cae4ee12011-01-27 18:06:56105 virtual void copyTextureToParentTextureCHROMIUM(
106 WebGLId texture, WebGLId parentTexture);
107
[email protected]31fe0b62011-05-13 01:07:32108 virtual void rateLimitOffscreenContextCHROMIUM() { }
109
[email protected]9cae4ee12011-01-27 18:06:56110 virtual WebString getRequestableExtensionsCHROMIUM();
111 virtual void requestExtensionCHROMIUM(const char*);
112
113 virtual void blitFramebufferCHROMIUM(
114 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1,
115 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1,
116 WGC3Dbitfield mask, WGC3Denum filter);
117 virtual void renderbufferStorageMultisampleCHROMIUM(
118 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat,
119 WGC3Dsizei width, WGC3Dsizei height);
120
121 virtual void activeTexture(WGC3Denum texture);
122 virtual void attachShader(WebGLId program, WebGLId shader);
123 virtual void bindAttribLocation(
124 WebGLId program, WGC3Duint index, const WGC3Dchar* name);
125 virtual void bindBuffer(WGC3Denum target, WebGLId buffer);
126 virtual void bindFramebuffer(WGC3Denum target, WebGLId framebuffer);
127 virtual void bindRenderbuffer(
128 WGC3Denum target, WebGLId renderbuffer);
129 virtual void bindTexture(WGC3Denum target, WebGLId texture);
130 virtual void blendColor(
131 WGC3Dclampf red, WGC3Dclampf green, WGC3Dclampf blue, WGC3Dclampf alpha);
132 virtual void blendEquation(WGC3Denum mode);
133 virtual void blendEquationSeparate(WGC3Denum modeRGB, WGC3Denum modeAlpha);
134 virtual void blendFunc(WGC3Denum sfactor, WGC3Denum dfactor);
135 virtual void blendFuncSeparate(WGC3Denum srcRGB, WGC3Denum dstRGB,
136 WGC3Denum srcAlpha, WGC3Denum dstAlpha);
137
138 virtual void bufferData(
139 WGC3Denum target, WGC3Dsizeiptr size, const void* data, WGC3Denum usage);
140 virtual void bufferSubData(WGC3Denum target, WGC3Dintptr offset,
141 WGC3Dsizeiptr size, const void* data);
142
143 virtual WGC3Denum checkFramebufferStatus(WGC3Denum target);
144 virtual void clear(WGC3Dbitfield mask);
145 virtual void clearColor(
146 WGC3Dclampf red, WGC3Dclampf green, WGC3Dclampf blue, WGC3Dclampf alpha);
147 virtual void clearDepth(WGC3Dclampf depth);
148 virtual void clearStencil(WGC3Dint s);
149 virtual void colorMask(WGC3Dboolean red, WGC3Dboolean green,
150 WGC3Dboolean blue, WGC3Dboolean alpha);
151 virtual void compileShader(WebGLId shader);
152
[email protected]c02a52e2011-11-11 02:47:48153 virtual void compressedTexImage2D(
154 WGC3Denum target,
155 WGC3Dint level,
156 WGC3Denum internalformat,
157 WGC3Dsizei width,
158 WGC3Dsizei height,
159 WGC3Dint border,
160 WGC3Dsizei imageSize,
161 const void* data);
162 virtual void compressedTexSubImage2D(
163 WGC3Denum target,
164 WGC3Dint level,
165 WGC3Dint xoffset,
166 WGC3Dint yoffset,
167 WGC3Dsizei width,
168 WGC3Dsizei height,
169 WGC3Denum format,
170 WGC3Dsizei imageSize,
171 const void* data);
[email protected]9cae4ee12011-01-27 18:06:56172 virtual void copyTexImage2D(
173 WGC3Denum target,
174 WGC3Dint level,
175 WGC3Denum internalformat,
176 WGC3Dint x,
177 WGC3Dint y,
178 WGC3Dsizei width,
179 WGC3Dsizei height,
180 WGC3Dint border);
181 virtual void copyTexSubImage2D(
182 WGC3Denum target,
183 WGC3Dint level,
184 WGC3Dint xoffset,
185 WGC3Dint yoffset,
186 WGC3Dint x,
187 WGC3Dint y,
188 WGC3Dsizei width,
189 WGC3Dsizei height);
190 virtual void cullFace(WGC3Denum mode);
191 virtual void depthFunc(WGC3Denum func);
192 virtual void depthMask(WGC3Dboolean flag);
193 virtual void depthRange(WGC3Dclampf zNear, WGC3Dclampf zFar);
194 virtual void detachShader(WebGLId program, WebGLId shader);
195 virtual void disable(WGC3Denum cap);
196 virtual void disableVertexAttribArray(WGC3Duint index);
197 virtual void drawArrays(WGC3Denum mode, WGC3Dint first, WGC3Dsizei count);
198 virtual void drawElements(
199 WGC3Denum mode,
200 WGC3Dsizei count,
201 WGC3Denum type,
202 WGC3Dintptr offset);
203
204 virtual void enable(WGC3Denum cap);
205 virtual void enableVertexAttribArray(WGC3Duint index);
206 virtual void finish();
207 virtual void flush();
208 virtual void framebufferRenderbuffer(
209 WGC3Denum target,
210 WGC3Denum attachment,
211 WGC3Denum renderbuffertarget,
212 WebGLId renderbuffer);
213 virtual void framebufferTexture2D(
214 WGC3Denum target,
215 WGC3Denum attachment,
216 WGC3Denum textarget,
217 WebGLId texture,
218 WGC3Dint level);
219 virtual void frontFace(WGC3Denum mode);
220 virtual void generateMipmap(WGC3Denum target);
221
222 virtual bool getActiveAttrib(WebGLId program, WGC3Duint index, ActiveInfo&);
223 virtual bool getActiveUniform(WebGLId program, WGC3Duint index, ActiveInfo&);
224
225 virtual void getAttachedShaders(WebGLId program, WGC3Dsizei maxCount,
226 WGC3Dsizei* count, WebGLId* shaders);
227
228 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name);
229
230 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value);
231
232 virtual void getBufferParameteriv(
233 WGC3Denum target, WGC3Denum pname, WGC3Dint* value);
234
235 virtual Attributes getContextAttributes();
236
237 virtual WGC3Denum getError();
238
239 virtual bool isContextLost();
240
241 virtual void getFloatv(WGC3Denum pname, WGC3Dfloat* value);
242
243 virtual void getFramebufferAttachmentParameteriv(
244 WGC3Denum target,
245 WGC3Denum attachment,
246 WGC3Denum pname,
247 WGC3Dint* value);
248
249 virtual void getIntegerv(WGC3Denum pname, WGC3Dint* value);
250
251 virtual void getProgramiv(
252 WebGLId program, WGC3Denum pname, WGC3Dint* value);
253
254 virtual WebString getProgramInfoLog(WebGLId program);
255
256 virtual void getRenderbufferParameteriv(
257 WGC3Denum target, WGC3Denum pname, WGC3Dint* value);
258
259 virtual void getShaderiv(
260 WebGLId shader, WGC3Denum pname, WGC3Dint* value);
261
262 virtual WebString getShaderInfoLog(WebGLId shader);
263
264 // TBD
265 // void glGetShaderPrecisionFormat(
266 // GLenum shadertype, GLenum precisiontype,
267 // GLint* range, GLint* precision);
268
269 virtual WebString getShaderSource(WebGLId shader);
270 virtual WebString getString(WGC3Denum name);
271
272 virtual void getTexParameterfv(
273 WGC3Denum target, WGC3Denum pname, WGC3Dfloat* value);
274 virtual void getTexParameteriv(
275 WGC3Denum target, WGC3Denum pname, WGC3Dint* value);
276
277 virtual void getUniformfv(
278 WebGLId program, WGC3Dint location, WGC3Dfloat* value);
279 virtual void getUniformiv(
280 WebGLId program, WGC3Dint location, WGC3Dint* value);
281
282 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name);
283
284 virtual void getVertexAttribfv(
285 WGC3Duint index, WGC3Denum pname, WGC3Dfloat* value);
286 virtual void getVertexAttribiv(
287 WGC3Duint index, WGC3Denum pname, WGC3Dint* value);
288
289 virtual WGC3Dsizeiptr getVertexAttribOffset(
290 WGC3Duint index, WGC3Denum pname);
291
292 virtual void hint(WGC3Denum target, WGC3Denum mode);
293 virtual WGC3Dboolean isBuffer(WebGLId buffer);
294 virtual WGC3Dboolean isEnabled(WGC3Denum cap);
295 virtual WGC3Dboolean isFramebuffer(WebGLId framebuffer);
296 virtual WGC3Dboolean isProgram(WebGLId program);
297 virtual WGC3Dboolean isRenderbuffer(WebGLId renderbuffer);
298 virtual WGC3Dboolean isShader(WebGLId shader);
299 virtual WGC3Dboolean isTexture(WebGLId texture);
300 virtual void lineWidth(WGC3Dfloat width);
301 virtual void linkProgram(WebGLId program);
302 virtual void pixelStorei(WGC3Denum pname, WGC3Dint param);
303 virtual void polygonOffset(WGC3Dfloat factor, WGC3Dfloat units);
304
305 virtual void readPixels(
306 WGC3Dint x, WGC3Dint y,
307 WGC3Dsizei width, WGC3Dsizei height,
308 WGC3Denum format,
309 WGC3Denum type,
310 void* pixels);
311
312 virtual void releaseShaderCompiler();
313 virtual void renderbufferStorage(
314 WGC3Denum target,
315 WGC3Denum internalformat,
316 WGC3Dsizei width,
317 WGC3Dsizei height);
318 virtual void sampleCoverage(WGC3Dclampf value, WGC3Dboolean invert);
319 virtual void scissor(
320 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height);
321 virtual void shaderSource(WebGLId shader, const WGC3Dchar* source);
322 virtual void stencilFunc(WGC3Denum func, WGC3Dint ref, WGC3Duint mask);
323 virtual void stencilFuncSeparate(
324 WGC3Denum face, WGC3Denum func, WGC3Dint ref, WGC3Duint mask);
325 virtual void stencilMask(WGC3Duint mask);
326 virtual void stencilMaskSeparate(WGC3Denum face, WGC3Duint mask);
327 virtual void stencilOp(WGC3Denum fail, WGC3Denum zfail, WGC3Denum zpass);
328 virtual void stencilOpSeparate(
329 WGC3Denum face,
330 WGC3Denum fail,
331 WGC3Denum zfail,
332 WGC3Denum zpass);
333
334 virtual void texImage2D(
335 WGC3Denum target,
336 WGC3Dint level,
337 WGC3Denum internalformat,
338 WGC3Dsizei width,
339 WGC3Dsizei height,
340 WGC3Dint border,
341 WGC3Denum format,
342 WGC3Denum type,
343 const void* pixels);
344
345 virtual void texParameterf(
346 WGC3Denum target, WGC3Denum pname, WGC3Dfloat param);
347 virtual void texParameteri(
348 WGC3Denum target, WGC3Denum pname, WGC3Dint param);
349
350 virtual void texSubImage2D(
351 WGC3Denum target,
352 WGC3Dint level,
353 WGC3Dint xoffset,
354 WGC3Dint yoffset,
355 WGC3Dsizei width,
356 WGC3Dsizei height,
357 WGC3Denum format,
358 WGC3Denum type,
359 const void* pixels);
360
361 virtual void uniform1f(WGC3Dint location, WGC3Dfloat x);
362 virtual void uniform1fv(WGC3Dint location, WGC3Dsizei count,
363 const WGC3Dfloat* v);
364 virtual void uniform1i(WGC3Dint location, WGC3Dint x);
365 virtual void uniform1iv(WGC3Dint location, WGC3Dsizei count,
366 const WGC3Dint* v);
367 virtual void uniform2f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y);
368 virtual void uniform2fv(WGC3Dint location, WGC3Dsizei count,
369 const WGC3Dfloat* v);
370 virtual void uniform2i(WGC3Dint location, WGC3Dint x, WGC3Dint y);
371 virtual void uniform2iv(WGC3Dint location, WGC3Dsizei count,
372 const WGC3Dint* v);
373 virtual void uniform3f(WGC3Dint location,
374 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
375 virtual void uniform3fv(WGC3Dint location, WGC3Dsizei count,
376 const WGC3Dfloat* v);
377 virtual void uniform3i(WGC3Dint location, WGC3Dint x, WGC3Dint y, WGC3Dint z);
378 virtual void uniform3iv(WGC3Dint location, WGC3Dsizei count,
379 const WGC3Dint* v);
380 virtual void uniform4f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y,
381 WGC3Dfloat z, WGC3Dfloat w);
382 virtual void uniform4fv(WGC3Dint location, WGC3Dsizei count,
383 const WGC3Dfloat* v);
384 virtual void uniform4i(WGC3Dint location, WGC3Dint x, WGC3Dint y,
385 WGC3Dint z, WGC3Dint w);
386 virtual void uniform4iv(WGC3Dint location, WGC3Dsizei count,
387 const WGC3Dint* v);
388 virtual void uniformMatrix2fv(
389 WGC3Dint location, WGC3Dsizei count,
390 WGC3Dboolean transpose, const WGC3Dfloat* value);
391 virtual void uniformMatrix3fv(
392 WGC3Dint location, WGC3Dsizei count,
393 WGC3Dboolean transpose, const WGC3Dfloat* value);
394 virtual void uniformMatrix4fv(
395 WGC3Dint location, WGC3Dsizei count,
396 WGC3Dboolean transpose, const WGC3Dfloat* value);
397
398 virtual void useProgram(WebGLId program);
399 virtual void validateProgram(WebGLId program);
400
401 virtual void vertexAttrib1f(WGC3Duint index, WGC3Dfloat x);
402 virtual void vertexAttrib1fv(WGC3Duint index, const WGC3Dfloat* values);
403 virtual void vertexAttrib2f(WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y);
404 virtual void vertexAttrib2fv(WGC3Duint index, const WGC3Dfloat* values);
405 virtual void vertexAttrib3f(
406 WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
407 virtual void vertexAttrib3fv(WGC3Duint index, const WGC3Dfloat* values);
408 virtual void vertexAttrib4f(
409 WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z, WGC3Dfloat w);
410 virtual void vertexAttrib4fv(WGC3Duint index, const WGC3Dfloat* values);
411 virtual void vertexAttribPointer(
412 WGC3Duint index,
413 WGC3Dint size,
414 WGC3Denum type,
415 WGC3Dboolean normalized,
416 WGC3Dsizei stride,
417 WGC3Dintptr offset);
418
419 virtual void viewport(
420 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height);
421
422 // Support for buffer creation and deletion
423 virtual WebGLId createBuffer();
424 virtual WebGLId createFramebuffer();
425 virtual WebGLId createProgram();
426 virtual WebGLId createRenderbuffer();
427 virtual WebGLId createShader(WGC3Denum);
428 virtual WebGLId createTexture();
429
430 virtual void deleteBuffer(WebGLId);
431 virtual void deleteFramebuffer(WebGLId);
432 virtual void deleteProgram(WebGLId);
433 virtual void deleteRenderbuffer(WebGLId);
434 virtual void deleteShader(WebGLId);
435 virtual void deleteTexture(WebGLId);
436
[email protected]36681ea2011-02-02 20:17:18437 virtual void setContextLostCallback(
438 WebGraphicsContext3D::WebGraphicsContextLostCallback* callback) {}
[email protected]38d139d2011-07-14 00:38:43439 virtual WGC3Denum getGraphicsResetStatusARB();
[email protected]36681ea2011-02-02 20:17:18440
[email protected]d2b155a2011-08-02 06:14:33441 virtual void setSwapBuffersCompleteCallbackCHROMIUM(
442 WebGraphicsContext3D::
443 WebGraphicsSwapBuffersCompleteCallbackCHROMIUM* callback) {}
444
[email protected]e51bdf32011-11-23 22:21:46445 virtual void texImageIOSurface2DCHROMIUM(
446 WGC3Denum target, WGC3Dint width, WGC3Dint height,
447 WGC3Duint ioSurfaceId, WGC3Duint plane);
448
[email protected]97dc7cbe2011-12-06 17:26:17449 virtual void texStorage2DEXT(
450 WGC3Denum target, WGC3Dint levels, WGC3Duint internalformat,
451 WGC3Dint width, WGC3Dint height);
452
[email protected]29214d312011-09-06 14:12:28453 protected:
[email protected]16200732011-08-29 16:40:46454#if WEBKIT_USING_SKIA
[email protected]29214d312011-09-06 14:12:28455 virtual GrGLInterface* onCreateGrGLInterface();
[email protected]16200732011-08-29 16:40:46456#endif
457
[email protected]9cae4ee12011-01-27 18:06:56458 private:
459 // ANGLE related.
[email protected]09fb3872011-02-02 01:16:46460 struct ShaderSourceEntry;
[email protected]9cae4ee12011-01-27 18:06:56461
462 typedef base::hash_map<WebGLId, ShaderSourceEntry*> ShaderSourceMap;
463
[email protected]16e25212011-10-10 21:17:42464 bool AllocateOffscreenFrameBuffer(int width, int height);
465 void ClearRenderTarget();
466
[email protected]9cae4ee12011-01-27 18:06:56467#ifdef FLIP_FRAMEBUFFER_VERTICALLY
468 void FlipVertically(unsigned char* framebuffer,
469 unsigned int width,
470 unsigned int height);
471#endif
472
473 // Take into account the user's requested context creation attributes, in
474 // particular stencil and antialias, and determine which could or could
475 // not be honored based on the capabilities of the OpenGL implementation.
476 void ValidateAttributes();
477
478 // Resolve the given rectangle of the multisampled framebuffer if necessary.
479 void ResolveMultisampledFramebuffer(
480 WGC3Dint x, WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height);
481
482 bool AngleCreateCompilers();
483 void AngleDestroyCompilers();
484 bool AngleValidateShaderSource(ShaderSourceEntry* entry);
485
486 WebGraphicsContext3D::Attributes attributes_;
487 bool initialized_;
488 bool render_directly_to_web_view_;
489 bool is_gles2_;
490 bool have_ext_framebuffer_object_;
491 bool have_ext_framebuffer_multisample_;
492 bool have_angle_framebuffer_multisample_;
493
494 WebGLId texture_;
495 WebGLId fbo_;
496 WebGLId depth_stencil_buffer_;
497 int cached_width_, cached_height_;
498
499 // For multisampling
500 WebGLId multisample_fbo_;
501 WebGLId multisample_depth_stencil_buffer_;
502 WebGLId multisample_color_buffer_;
503
504 // For tracking which FBO is bound
505 WebGLId bound_fbo_;
506
507 // For tracking which texture is bound
508 WebGLId bound_texture_;
509
[email protected]9cae4ee12011-01-27 18:06:56510#ifdef FLIP_FRAMEBUFFER_VERTICALLY
511 unsigned char* scanline_;
512#endif
513
514 // Errors raised by synthesizeGLError().
515 std::list<WGC3Denum> synthetic_errors_list_;
516 std::set<WGC3Denum> synthetic_errors_set_;
517
[email protected]fbe20372011-06-01 01:46:38518 scoped_refptr<gfx::GLContext> gl_context_;
519 scoped_refptr<gfx::GLSurface> gl_surface_;
[email protected]9cae4ee12011-01-27 18:06:56520
521 ShaderSourceMap shader_source_map_;
522
523 ShHandle fragment_compiler_;
524 ShHandle vertex_compiler_;
[email protected]16e25212011-10-10 21:17:42525 gfx::PluginWindowHandle window_;
[email protected]52ee7cf2011-10-15 22:52:07526 scoped_refptr<gfx::GLShareGroup> share_group_;
[email protected]9cae4ee12011-01-27 18:06:56527};
528
[email protected]de06f682011-01-12 21:10:16529} // namespace gpu
530} // namespace webkit
[email protected]49861ff2011-01-11 19:50:40531
532#endif // WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_IMPL_H_