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

Side by Side Diff: webkit/common/gpu/webgraphicscontext3d_impl.h

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

Powered by Google App Engine
This is Rietveld 408576698