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

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

Issue 16046003: Move webkit/gpu into webkit/common/gpu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix includes in content/common/gpu/client/gl_helper_* Created 7 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // 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_COMMAND_BUFFER_IMPL_H_
6 #define WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_
7
8 #if defined(ENABLE_GPU)
9
10 #include <vector>
11
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "gpu/command_buffer/client/gpu_memory_buffer.h"
15 #include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3 D.h"
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
17 #include "ui/gfx/native_widget_types.h"
18 #include "webkit/gpu/webkit_gpu_export.h"
19
20 namespace gpu {
21 namespace gles2 {
22 class GLES2Implementation;
23 }
24 }
25
26 using WebKit::WebGLId;
27
28 using WebKit::WGC3Dbyte;
29 using WebKit::WGC3Dchar;
30 using WebKit::WGC3Denum;
31 using WebKit::WGC3Dboolean;
32 using WebKit::WGC3Dbitfield;
33 using WebKit::WGC3Dint;
34 using WebKit::WGC3Dsizei;
35 using WebKit::WGC3Duint;
36 using WebKit::WGC3Dfloat;
37 using WebKit::WGC3Dclampf;
38 using WebKit::WGC3Dintptr;
39 using WebKit::WGC3Dsizeiptr;
40
41 namespace webkit {
42 namespace gpu {
43
44 class GLInProcessContext;
45
46 class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl
47 : public NON_EXPORTED_BASE(WebKit::WebGraphicsContext3D) {
48 public:
49 typedef scoped_ptr< ::gpu::GpuMemoryBuffer> GpuMemoryBufferCreator(
50 int width, int height);
51
52 // Must be called before any WebGraphicsContext3DInProcessCommandBufferImpl
53 // instances are created. Default value is false.
54 static void EnableVirtualizedContext();
55
56 static WebGraphicsContext3DInProcessCommandBufferImpl*
57 CreateViewContext(
58 const WebKit::WebGraphicsContext3D::Attributes& attributes,
59 gfx::AcceleratedWidget window);
60
61 static WebGraphicsContext3DInProcessCommandBufferImpl*
62 CreateOffscreenContext(
63 const WebKit::WebGraphicsContext3D::Attributes& attributes);
64
65 static void SetGpuMemoryBufferCreator(GpuMemoryBufferCreator* creator);
66
67 virtual ~WebGraphicsContext3DInProcessCommandBufferImpl();
68
69 //----------------------------------------------------------------------
70 // WebGraphicsContext3D methods
71 virtual bool makeContextCurrent();
72
73 virtual int width();
74 virtual int height();
75
76 virtual bool isGLES2Compliant();
77
78 virtual bool setParentContext(WebGraphicsContext3D* parent_context);
79
80 virtual void reshape(int width, int height);
81 virtual void reshapeWithScaleFactor(int width, int height, float scaleFactor);
82
83 virtual bool readBackFramebuffer(unsigned char* pixels, size_t buffer_size);
84 virtual bool readBackFramebuffer(unsigned char* pixels, size_t buffer_size,
85 WebGLId framebuffer, int width, int height);
86
87 virtual WebGLId getPlatformTextureId();
88 virtual void prepareTexture();
89 virtual void postSubBufferCHROMIUM(int x, int y, int width, int height);
90
91 virtual void activeTexture(WGC3Denum texture);
92 virtual void attachShader(WebGLId program, WebGLId shader);
93 virtual void bindAttribLocation(WebGLId program, WGC3Duint index,
94 const WGC3Dchar* name);
95 virtual void bindBuffer(WGC3Denum target, WebGLId buffer);
96 virtual void bindFramebuffer(WGC3Denum target, WebGLId framebuffer);
97 virtual void bindRenderbuffer(WGC3Denum target, WebGLId renderbuffer);
98 virtual void bindTexture(WGC3Denum target, WebGLId texture);
99 virtual void blendColor(WGC3Dclampf red, WGC3Dclampf green,
100 WGC3Dclampf blue, WGC3Dclampf alpha);
101 virtual void blendEquation(WGC3Denum mode);
102 virtual void blendEquationSeparate(WGC3Denum modeRGB,
103 WGC3Denum modeAlpha);
104 virtual void blendFunc(WGC3Denum sfactor, WGC3Denum dfactor);
105 virtual void blendFuncSeparate(WGC3Denum srcRGB,
106 WGC3Denum dstRGB,
107 WGC3Denum srcAlpha,
108 WGC3Denum dstAlpha);
109
110 virtual void bufferData(WGC3Denum target, WGC3Dsizeiptr size,
111 const void* data, WGC3Denum usage);
112 virtual void bufferSubData(WGC3Denum target, WGC3Dintptr offset,
113 WGC3Dsizeiptr size, const void* data);
114
115 virtual WGC3Denum checkFramebufferStatus(WGC3Denum target);
116 virtual void clear(WGC3Dbitfield mask);
117 virtual void clearColor(WGC3Dclampf red, WGC3Dclampf green,
118 WGC3Dclampf blue, WGC3Dclampf alpha);
119 virtual void clearDepth(WGC3Dclampf depth);
120 virtual void clearStencil(WGC3Dint s);
121 virtual void colorMask(WGC3Dboolean red, WGC3Dboolean green,
122 WGC3Dboolean blue, WGC3Dboolean alpha);
123 virtual void compileShader(WebGLId shader);
124
125 virtual void compressedTexImage2D(WGC3Denum target,
126 WGC3Dint level,
127 WGC3Denum internalformat,
128 WGC3Dsizei width,
129 WGC3Dsizei height,
130 WGC3Dint border,
131 WGC3Dsizei imageSize,
132 const void* data);
133 virtual void compressedTexSubImage2D(WGC3Denum target,
134 WGC3Dint level,
135 WGC3Dint xoffset,
136 WGC3Dint yoffset,
137 WGC3Dsizei width,
138 WGC3Dsizei height,
139 WGC3Denum format,
140 WGC3Dsizei imageSize,
141 const void* data);
142 virtual void copyTexImage2D(WGC3Denum target,
143 WGC3Dint level,
144 WGC3Denum internalformat,
145 WGC3Dint x,
146 WGC3Dint y,
147 WGC3Dsizei width,
148 WGC3Dsizei height,
149 WGC3Dint border);
150 virtual void copyTexSubImage2D(WGC3Denum target,
151 WGC3Dint level,
152 WGC3Dint xoffset,
153 WGC3Dint yoffset,
154 WGC3Dint x,
155 WGC3Dint y,
156 WGC3Dsizei width,
157 WGC3Dsizei height);
158 virtual void cullFace(WGC3Denum mode);
159 virtual void depthFunc(WGC3Denum func);
160 virtual void depthMask(WGC3Dboolean flag);
161 virtual void depthRange(WGC3Dclampf zNear, WGC3Dclampf zFar);
162 virtual void detachShader(WebGLId program, WebGLId shader);
163 virtual void disable(WGC3Denum cap);
164 virtual void disableVertexAttribArray(WGC3Duint index);
165 virtual void drawArrays(WGC3Denum mode, WGC3Dint first, WGC3Dsizei count);
166 virtual void drawElements(WGC3Denum mode,
167 WGC3Dsizei count,
168 WGC3Denum type,
169 WGC3Dintptr offset);
170
171 virtual void enable(WGC3Denum cap);
172 virtual void enableVertexAttribArray(WGC3Duint index);
173 virtual void finish();
174 virtual void flush();
175 virtual void framebufferRenderbuffer(WGC3Denum target,
176 WGC3Denum attachment,
177 WGC3Denum renderbuffertarget,
178 WebGLId renderbuffer);
179 virtual void framebufferTexture2D(WGC3Denum target,
180 WGC3Denum attachment,
181 WGC3Denum textarget,
182 WebGLId texture,
183 WGC3Dint level);
184 virtual void frontFace(WGC3Denum mode);
185 virtual void generateMipmap(WGC3Denum target);
186
187 virtual bool getActiveAttrib(WebGLId program,
188 WGC3Duint index,
189 ActiveInfo&);
190 virtual bool getActiveUniform(WebGLId program,
191 WGC3Duint index,
192 ActiveInfo&);
193
194 virtual void getAttachedShaders(WebGLId program,
195 WGC3Dsizei maxCount,
196 WGC3Dsizei* count,
197 WebGLId* shaders);
198
199 virtual WGC3Dint getAttribLocation(WebGLId program, const WGC3Dchar* name);
200
201 virtual void getBooleanv(WGC3Denum pname, WGC3Dboolean* value);
202
203 virtual void getBufferParameteriv(WGC3Denum target,
204 WGC3Denum pname,
205 WGC3Dint* value);
206
207 virtual Attributes getContextAttributes();
208
209 virtual WGC3Denum getError();
210
211 virtual bool isContextLost();
212
213 virtual void getFloatv(WGC3Denum pname, WGC3Dfloat* value);
214
215 virtual void getFramebufferAttachmentParameteriv(WGC3Denum target,
216 WGC3Denum attachment,
217 WGC3Denum pname,
218 WGC3Dint* value);
219
220 virtual void getIntegerv(WGC3Denum pname, WGC3Dint* value);
221
222 virtual void getProgramiv(WebGLId program, WGC3Denum pname, WGC3Dint* value);
223
224 virtual WebKit::WebString getProgramInfoLog(WebGLId program);
225
226 virtual void getRenderbufferParameteriv(WGC3Denum target,
227 WGC3Denum pname,
228 WGC3Dint* value);
229
230 virtual void getShaderiv(WebGLId shader, WGC3Denum pname, WGC3Dint* value);
231
232 virtual WebKit::WebString getShaderInfoLog(WebGLId shader);
233
234 virtual void getShaderPrecisionFormat(WGC3Denum shadertype,
235 WGC3Denum precisiontype,
236 WGC3Dint* range,
237 WGC3Dint* precision);
238
239 virtual WebKit::WebString getShaderSource(WebGLId shader);
240 virtual WebKit::WebString getString(WGC3Denum name);
241
242 virtual void getTexParameterfv(WGC3Denum target,
243 WGC3Denum pname,
244 WGC3Dfloat* value);
245 virtual void getTexParameteriv(WGC3Denum target,
246 WGC3Denum pname,
247 WGC3Dint* value);
248
249 virtual void getUniformfv(WebGLId program,
250 WGC3Dint location,
251 WGC3Dfloat* value);
252 virtual void getUniformiv(WebGLId program,
253 WGC3Dint location,
254 WGC3Dint* value);
255
256 virtual WGC3Dint getUniformLocation(WebGLId program, const WGC3Dchar* name);
257
258 virtual void getVertexAttribfv(WGC3Duint index, WGC3Denum pname,
259 WGC3Dfloat* value);
260 virtual void getVertexAttribiv(WGC3Duint index, WGC3Denum pname,
261 WGC3Dint* value);
262
263 virtual WGC3Dsizeiptr getVertexAttribOffset(WGC3Duint index, WGC3Denum pname);
264
265 virtual void hint(WGC3Denum target, WGC3Denum mode);
266 virtual WGC3Dboolean isBuffer(WebGLId buffer);
267 virtual WGC3Dboolean isEnabled(WGC3Denum cap);
268 virtual WGC3Dboolean isFramebuffer(WebGLId framebuffer);
269 virtual WGC3Dboolean isProgram(WebGLId program);
270 virtual WGC3Dboolean isRenderbuffer(WebGLId renderbuffer);
271 virtual WGC3Dboolean isShader(WebGLId shader);
272 virtual WGC3Dboolean isTexture(WebGLId texture);
273 virtual void lineWidth(WGC3Dfloat);
274 virtual void linkProgram(WebGLId program);
275 virtual void pixelStorei(WGC3Denum pname, WGC3Dint param);
276 virtual void polygonOffset(WGC3Dfloat factor, WGC3Dfloat units);
277
278 virtual void readPixels(WGC3Dint x,
279 WGC3Dint y,
280 WGC3Dsizei width,
281 WGC3Dsizei height,
282 WGC3Denum format,
283 WGC3Denum type,
284 void* pixels);
285
286 virtual void releaseShaderCompiler();
287 virtual void renderbufferStorage(WGC3Denum target,
288 WGC3Denum internalformat,
289 WGC3Dsizei width,
290 WGC3Dsizei height);
291 virtual void sampleCoverage(WGC3Dfloat value, WGC3Dboolean invert);
292 virtual void scissor(WGC3Dint x, WGC3Dint y,
293 WGC3Dsizei width, WGC3Dsizei height);
294 virtual void shaderSource(WebGLId shader, const WGC3Dchar* string);
295 virtual void stencilFunc(WGC3Denum func, WGC3Dint ref, WGC3Duint mask);
296 virtual void stencilFuncSeparate(WGC3Denum face,
297 WGC3Denum func,
298 WGC3Dint ref,
299 WGC3Duint mask);
300 virtual void stencilMask(WGC3Duint mask);
301 virtual void stencilMaskSeparate(WGC3Denum face, WGC3Duint mask);
302 virtual void stencilOp(WGC3Denum fail,
303 WGC3Denum zfail,
304 WGC3Denum zpass);
305 virtual void stencilOpSeparate(WGC3Denum face,
306 WGC3Denum fail,
307 WGC3Denum zfail,
308 WGC3Denum zpass);
309
310 virtual void texImage2D(WGC3Denum target,
311 WGC3Dint level,
312 WGC3Denum internalformat,
313 WGC3Dsizei width,
314 WGC3Dsizei height,
315 WGC3Dint border,
316 WGC3Denum format,
317 WGC3Denum type,
318 const void* pixels);
319
320 virtual void texParameterf(WGC3Denum target,
321 WGC3Denum pname,
322 WGC3Dfloat param);
323 virtual void texParameteri(WGC3Denum target,
324 WGC3Denum pname,
325 WGC3Dint param);
326
327 virtual void texSubImage2D(WGC3Denum target,
328 WGC3Dint level,
329 WGC3Dint xoffset,
330 WGC3Dint yoffset,
331 WGC3Dsizei width,
332 WGC3Dsizei height,
333 WGC3Denum format,
334 WGC3Denum type,
335 const void* pixels);
336
337 virtual void uniform1f(WGC3Dint location, WGC3Dfloat x);
338 virtual void uniform1fv(WGC3Dint location,
339 WGC3Dsizei count, const WGC3Dfloat* v);
340 virtual void uniform1i(WGC3Dint location, WGC3Dint x);
341 virtual void uniform1iv(WGC3Dint location,
342 WGC3Dsizei count, const WGC3Dint* v);
343 virtual void uniform2f(WGC3Dint location, WGC3Dfloat x, WGC3Dfloat y);
344 virtual void uniform2fv(WGC3Dint location,
345 WGC3Dsizei count, const WGC3Dfloat* v);
346 virtual void uniform2i(WGC3Dint location, WGC3Dint x, WGC3Dint y);
347 virtual void uniform2iv(WGC3Dint location,
348 WGC3Dsizei count, const WGC3Dint* v);
349 virtual void uniform3f(WGC3Dint location,
350 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
351 virtual void uniform3fv(WGC3Dint location,
352 WGC3Dsizei count, const WGC3Dfloat* v);
353 virtual void uniform3i(WGC3Dint location,
354 WGC3Dint x, WGC3Dint y, WGC3Dint z);
355 virtual void uniform3iv(WGC3Dint location,
356 WGC3Dsizei count, const WGC3Dint* v);
357 virtual void uniform4f(WGC3Dint location,
358 WGC3Dfloat x, WGC3Dfloat y,
359 WGC3Dfloat z, WGC3Dfloat w);
360 virtual void uniform4fv(WGC3Dint location,
361 WGC3Dsizei count, const WGC3Dfloat* v);
362 virtual void uniform4i(WGC3Dint location,
363 WGC3Dint x, WGC3Dint y, WGC3Dint z, WGC3Dint w);
364 virtual void uniform4iv(WGC3Dint location,
365 WGC3Dsizei count, const WGC3Dint* v);
366 virtual void uniformMatrix2fv(WGC3Dint location,
367 WGC3Dsizei count,
368 WGC3Dboolean transpose,
369 const WGC3Dfloat* value);
370 virtual void uniformMatrix3fv(WGC3Dint location,
371 WGC3Dsizei count,
372 WGC3Dboolean transpose,
373 const WGC3Dfloat* value);
374 virtual void uniformMatrix4fv(WGC3Dint location,
375 WGC3Dsizei count,
376 WGC3Dboolean transpose,
377 const WGC3Dfloat* value);
378
379 virtual void useProgram(WebGLId program);
380 virtual void validateProgram(WebGLId program);
381
382 virtual void vertexAttrib1f(WGC3Duint index, WGC3Dfloat x);
383 virtual void vertexAttrib1fv(WGC3Duint index, const WGC3Dfloat* values);
384 virtual void vertexAttrib2f(WGC3Duint index, WGC3Dfloat x, WGC3Dfloat y);
385 virtual void vertexAttrib2fv(WGC3Duint index, const WGC3Dfloat* values);
386 virtual void vertexAttrib3f(WGC3Duint index,
387 WGC3Dfloat x, WGC3Dfloat y, WGC3Dfloat z);
388 virtual void vertexAttrib3fv(WGC3Duint index, const WGC3Dfloat* values);
389 virtual void vertexAttrib4f(WGC3Duint index,
390 WGC3Dfloat x, WGC3Dfloat y,
391 WGC3Dfloat z, WGC3Dfloat w);
392 virtual void vertexAttrib4fv(WGC3Duint index, const WGC3Dfloat* values);
393 virtual void vertexAttribPointer(WGC3Duint index,
394 WGC3Dint size,
395 WGC3Denum type,
396 WGC3Dboolean normalized,
397 WGC3Dsizei stride,
398 WGC3Dintptr offset);
399
400 virtual void viewport(WGC3Dint x, WGC3Dint y,
401 WGC3Dsizei width, WGC3Dsizei height);
402
403 // Support for buffer creation and deletion
404 virtual WebGLId createBuffer();
405 virtual WebGLId createFramebuffer();
406 virtual WebGLId createProgram();
407 virtual WebGLId createRenderbuffer();
408 virtual WebGLId createShader(WGC3Denum);
409 virtual WebGLId createTexture();
410
411 virtual void deleteBuffer(WebGLId);
412 virtual void deleteFramebuffer(WebGLId);
413 virtual void deleteProgram(WebGLId);
414 virtual void deleteRenderbuffer(WebGLId);
415 virtual void deleteShader(WebGLId);
416 virtual void deleteTexture(WebGLId);
417
418 virtual void synthesizeGLError(WGC3Denum);
419
420 virtual void* mapBufferSubDataCHROMIUM(
421 WGC3Denum target, WGC3Dintptr offset,
422 WGC3Dsizeiptr size, WGC3Denum access);
423 virtual void unmapBufferSubDataCHROMIUM(const void*);
424 virtual void* mapTexSubImage2DCHROMIUM(
425 WGC3Denum target,
426 WGC3Dint level,
427 WGC3Dint xoffset,
428 WGC3Dint yoffset,
429 WGC3Dsizei width,
430 WGC3Dsizei height,
431 WGC3Denum format,
432 WGC3Denum type,
433 WGC3Denum access);
434 virtual void unmapTexSubImage2DCHROMIUM(const void*);
435
436 virtual void setVisibilityCHROMIUM(bool visible);
437
438 virtual void setMemoryAllocationChangedCallbackCHROMIUM(
439 WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* callback);
440
441 virtual void discardFramebufferEXT(WGC3Denum target,
442 WGC3Dsizei numAttachments,
443 const WGC3Denum* attachments);
444 virtual void discardBackbufferCHROMIUM();
445 virtual void ensureBackbufferCHROMIUM();
446
447 virtual void copyTextureToParentTextureCHROMIUM(
448 WebGLId texture, WebGLId parentTexture);
449
450 virtual void rateLimitOffscreenContextCHROMIUM();
451
452 virtual WebKit::WebString getRequestableExtensionsCHROMIUM();
453 virtual void requestExtensionCHROMIUM(const char*);
454
455 virtual void blitFramebufferCHROMIUM(
456 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1,
457 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1,
458 WGC3Dbitfield mask, WGC3Denum filter);
459 virtual void renderbufferStorageMultisampleCHROMIUM(
460 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat,
461 WGC3Dsizei width, WGC3Dsizei height);
462
463 virtual WebKit::WebString getTranslatedShaderSourceANGLE(WebGLId shader);
464
465 virtual WebGLId createCompositorTexture(WGC3Dsizei width, WGC3Dsizei height);
466 virtual void deleteCompositorTexture(WebGLId parent_texture);
467 virtual void copyTextureToCompositor(WebGLId texture,
468 WebGLId parent_texture);
469
470 virtual void setContextLostCallback(
471 WebGraphicsContext3D::WebGraphicsContextLostCallback* callback);
472 virtual WGC3Denum getGraphicsResetStatusARB();
473
474 virtual void texImageIOSurface2DCHROMIUM(
475 WGC3Denum target, WGC3Dint width, WGC3Dint height,
476 WGC3Duint ioSurfaceId, WGC3Duint plane);
477
478 virtual void bindTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId);
479 virtual void releaseTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId);
480
481 virtual void texStorage2DEXT(
482 WGC3Denum target, WGC3Dint levels, WGC3Duint internalformat,
483 WGC3Dint width, WGC3Dint height);
484 virtual WGC3Duint createImageCHROMIUM(
485 WGC3Dsizei width, WGC3Dsizei height, WGC3Denum internalformat);
486 virtual void destroyImageCHROMIUM(WGC3Duint image_id);
487 virtual void getImageParameterivCHROMIUM(
488 WGC3Duint image_id, WGC3Denum pname, WGC3Dint* params);
489 virtual void* mapImageCHROMIUM(WGC3Duint image_id, WGC3Denum access);
490 virtual void unmapImageCHROMIUM(WGC3Duint image_id);
491 virtual WebGLId createQueryEXT();
492 virtual void deleteQueryEXT(WebGLId query);
493 virtual WGC3Dboolean isQueryEXT(WebGLId query);
494 virtual void beginQueryEXT(WGC3Denum target, WebGLId query);
495 virtual void endQueryEXT(WGC3Denum target);
496 virtual void getQueryivEXT(
497 WGC3Denum target, WGC3Denum pname, WGC3Dint* params);
498 virtual void getQueryObjectuivEXT(
499 WebGLId query, WGC3Denum pname, WGC3Duint* params);
500
501 virtual void copyTextureCHROMIUM(WGC3Denum target, WGC3Duint source_id,
502 WGC3Duint dest_id, WGC3Dint level,
503 WGC3Denum internal_format,
504 WGC3Denum dest_type);
505
506 virtual void bindUniformLocationCHROMIUM(WebGLId program, WGC3Dint location,
507 const WGC3Dchar* uniform);
508
509 virtual void shallowFlushCHROMIUM();
510
511 virtual void genMailboxCHROMIUM(WGC3Dbyte* mailbox);
512 virtual void produceTextureCHROMIUM(WGC3Denum target,
513 const WGC3Dbyte* mailbox);
514 virtual void consumeTextureCHROMIUM(WGC3Denum target,
515 const WGC3Dbyte* mailbox);
516
517 virtual void insertEventMarkerEXT(const WGC3Dchar* marker);
518 virtual void pushGroupMarkerEXT(const WGC3Dchar* marker);
519 virtual void popGroupMarkerEXT();
520
521 virtual void* mapBufferCHROMIUM(WGC3Denum target, WGC3Denum access);
522 virtual WGC3Dboolean unmapBufferCHROMIUM(WGC3Denum target);
523
524 // Async pixel transfer functions.
525 virtual void asyncTexImage2DCHROMIUM(
526 WGC3Denum target,
527 WGC3Dint level,
528 WGC3Denum internalformat,
529 WGC3Dsizei width,
530 WGC3Dsizei height,
531 WGC3Dint border,
532 WGC3Denum format,
533 WGC3Denum type,
534 const void* pixels);
535 virtual void asyncTexSubImage2DCHROMIUM(
536 WGC3Denum target,
537 WGC3Dint level,
538 WGC3Dint xoffset,
539 WGC3Dint yoffset,
540 WGC3Dsizei width,
541 WGC3Dsizei height,
542 WGC3Denum format,
543 WGC3Denum type,
544 const void* pixels);
545 virtual void waitAsyncTexImage2DCHROMIUM(WGC3Denum target);
546
547 virtual void drawBuffersEXT(WGC3Dsizei n, const WGC3Denum* bufs);
548
549 virtual unsigned insertSyncPoint();
550 virtual void signalSyncPoint(unsigned sync_point,
551 WebGraphicsSyncPointCallback* callback);
552
553 virtual void loseContextCHROMIUM(WGC3Denum current, WGC3Denum other);
554
555 protected:
556 virtual GrGLInterface* onCreateGrGLInterface();
557
558 private:
559 WebGraphicsContext3DInProcessCommandBufferImpl(
560 const WebKit::WebGraphicsContext3D::Attributes& attributes,
561 bool is_offscreen,
562 gfx::AcceleratedWidget window);
563
564 // SwapBuffers callback.
565 void OnSwapBuffersComplete();
566 virtual void OnContextLost();
567
568 bool MaybeInitializeGL();
569
570 // Used to try to find bugs in code that calls gl directly through the gl api
571 // instead of going through WebGraphicsContext3D.
572 void ClearContext();
573
574
575 bool is_offscreen_;
576 // Only used when not offscreen.
577 gfx::AcceleratedWidget window_;
578
579 bool initialized_;
580 bool initialize_failed_;
581
582 // The context we use for OpenGL rendering.
583 GLInProcessContext* context_;
584 // The GLES2Implementation we use for OpenGL rendering.
585 ::gpu::gles2::GLES2Implementation* gl_;
586
587 WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_;
588 WGC3Denum context_lost_reason_;
589
590 WebKit::WebGraphicsContext3D::Attributes attributes_;
591 int cached_width_, cached_height_;
592
593 // For tracking which FBO is bound.
594 WebGLId bound_fbo_;
595
596 // Errors raised by synthesizeGLError().
597 std::vector<WGC3Denum> synthetic_errors_;
598
599 std::vector<uint8> scanline_;
600
601 void FlipVertically(uint8* framebuffer,
602 unsigned int width,
603 unsigned int height);
604 };
605
606 } // namespace gpu
607 } // namespace webkit
608
609 #endif // defined(ENABLE_GPU)
610 #endif // WEBKIT_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_
OLDNEW
« no previous file with comments | « webkit/gpu/test_context_provider_factory.cc ('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