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

Side by Side Diff: gpu/blink/webgraphicscontext3d_impl.h

Issue 1053393002: Remove //gpu/{blink,ipc}, gyp files, DEPS files (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « gpu/blink/gpu_blink_export.h ('k') | gpu/blink/webgraphicscontext3d_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
(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 GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_
6 #define GPU_BLINK_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 "gpu/blink/gpu_blink_export.h"
14 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
15 #include "third_party/WebKit/public/platform/WebString.h"
16
17 namespace gpu {
18
19 namespace gles2 {
20 class GLES2Interface;
21 class GLES2ImplementationErrorMessageCallback;
22 struct ContextCreationAttribHelper;
23 }
24 }
25
26 namespace gpu_blink {
27
28 class WebGraphicsContext3DErrorMessageCallback;
29
30 class GPU_BLINK_EXPORT WebGraphicsContext3DImpl
31 : public NON_EXPORTED_BASE(blink::WebGraphicsContext3D) {
32 public:
33 virtual ~WebGraphicsContext3DImpl();
34
35 //----------------------------------------------------------------------
36 // WebGraphicsContext3D methods
37
38 virtual uint32_t lastFlushID();
39
40 virtual unsigned int insertSyncPoint();
41 virtual void waitSyncPoint(unsigned int sync_point);
42
43 virtual void loseContextCHROMIUM(blink::WGC3Denum current,
44 blink::WGC3Denum other);
45
46 virtual void reshapeWithScaleFactor(
47 int width, int height, float scale_factor);
48
49 virtual void prepareTexture();
50 virtual void postSubBufferCHROMIUM(int x, int y, int width, int height);
51
52 virtual void activeTexture(blink::WGC3Denum texture);
53 virtual void attachShader(blink::WebGLId program, blink::WebGLId shader);
54 virtual void bindAttribLocation(blink::WebGLId program,
55 blink::WGC3Duint index,
56 const blink::WGC3Dchar* name);
57 virtual void bindBuffer(blink::WGC3Denum target, blink::WebGLId buffer);
58 virtual void bindFramebuffer(blink::WGC3Denum target,
59 blink::WebGLId framebuffer);
60 virtual void bindRenderbuffer(blink::WGC3Denum target,
61 blink::WebGLId renderbuffer);
62 virtual void bindTexture(blink::WGC3Denum target, blink::WebGLId texture);
63 virtual void blendColor(blink::WGC3Dclampf red,
64 blink::WGC3Dclampf green,
65 blink::WGC3Dclampf blue,
66 blink::WGC3Dclampf alpha);
67 virtual void blendEquation(blink::WGC3Denum mode);
68 virtual void blendEquationSeparate(blink::WGC3Denum modeRGB,
69 blink::WGC3Denum modeAlpha);
70 virtual void blendFunc(blink::WGC3Denum sfactor, blink::WGC3Denum dfactor);
71 virtual void blendFuncSeparate(blink::WGC3Denum srcRGB,
72 blink::WGC3Denum dstRGB,
73 blink::WGC3Denum srcAlpha,
74 blink::WGC3Denum dstAlpha);
75
76 virtual void bufferData(blink::WGC3Denum target,
77 blink::WGC3Dsizeiptr size,
78 const void* data,
79 blink::WGC3Denum usage);
80 virtual void bufferSubData(blink::WGC3Denum target,
81 blink::WGC3Dintptr offset,
82 blink::WGC3Dsizeiptr size,
83 const void* data);
84
85 virtual blink::WGC3Denum checkFramebufferStatus(blink::WGC3Denum target);
86 virtual void clear(blink::WGC3Dbitfield mask);
87 virtual void clearColor(blink::WGC3Dclampf red,
88 blink::WGC3Dclampf green,
89 blink::WGC3Dclampf blue,
90 blink::WGC3Dclampf alpha);
91 virtual void clearDepth(blink::WGC3Dclampf depth);
92 virtual void clearStencil(blink::WGC3Dint s);
93 virtual void colorMask(blink::WGC3Dboolean red,
94 blink::WGC3Dboolean green,
95 blink::WGC3Dboolean blue,
96 blink::WGC3Dboolean alpha);
97 virtual void compileShader(blink::WebGLId shader);
98
99 virtual void compressedTexImage2D(blink::WGC3Denum target,
100 blink::WGC3Dint level,
101 blink::WGC3Denum internalformat,
102 blink::WGC3Dsizei width,
103 blink::WGC3Dsizei height,
104 blink::WGC3Dint border,
105 blink::WGC3Dsizei imageSize,
106 const void* data);
107 virtual void compressedTexSubImage2D(blink::WGC3Denum target,
108 blink::WGC3Dint level,
109 blink::WGC3Dint xoffset,
110 blink::WGC3Dint yoffset,
111 blink::WGC3Dsizei width,
112 blink::WGC3Dsizei height,
113 blink::WGC3Denum format,
114 blink::WGC3Dsizei imageSize,
115 const void* data);
116 virtual void copyTexImage2D(blink::WGC3Denum target,
117 blink::WGC3Dint level,
118 blink::WGC3Denum internalformat,
119 blink::WGC3Dint x,
120 blink::WGC3Dint y,
121 blink::WGC3Dsizei width,
122 blink::WGC3Dsizei height,
123 blink::WGC3Dint border);
124 virtual void copyTexSubImage2D(blink::WGC3Denum target,
125 blink::WGC3Dint level,
126 blink::WGC3Dint xoffset,
127 blink::WGC3Dint yoffset,
128 blink::WGC3Dint x,
129 blink::WGC3Dint y,
130 blink::WGC3Dsizei width,
131 blink::WGC3Dsizei height);
132 virtual void cullFace(blink::WGC3Denum mode);
133 virtual void depthFunc(blink::WGC3Denum func);
134 virtual void depthMask(blink::WGC3Dboolean flag);
135 virtual void depthRange(blink::WGC3Dclampf zNear, blink::WGC3Dclampf zFar);
136 virtual void detachShader(blink::WebGLId program, blink::WebGLId shader);
137 virtual void disable(blink::WGC3Denum cap);
138 virtual void disableVertexAttribArray(blink::WGC3Duint index);
139 virtual void drawArrays(blink::WGC3Denum mode,
140 blink::WGC3Dint first,
141 blink::WGC3Dsizei count);
142 virtual void drawElements(blink::WGC3Denum mode,
143 blink::WGC3Dsizei count,
144 blink::WGC3Denum type,
145 blink::WGC3Dintptr offset);
146
147 virtual void enable(blink::WGC3Denum cap);
148 virtual void enableVertexAttribArray(blink::WGC3Duint index);
149 virtual void finish();
150 virtual void flush();
151 virtual void framebufferRenderbuffer(blink::WGC3Denum target,
152 blink::WGC3Denum attachment,
153 blink::WGC3Denum renderbuffertarget,
154 blink::WebGLId renderbuffer);
155 virtual void framebufferTexture2D(blink::WGC3Denum target,
156 blink::WGC3Denum attachment,
157 blink::WGC3Denum textarget,
158 blink::WebGLId texture,
159 blink::WGC3Dint level);
160 virtual void frontFace(blink::WGC3Denum mode);
161 virtual void generateMipmap(blink::WGC3Denum target);
162
163 virtual bool getActiveAttrib(blink::WebGLId program,
164 blink::WGC3Duint index,
165 ActiveInfo&);
166 virtual bool getActiveUniform(blink::WebGLId program,
167 blink::WGC3Duint index,
168 ActiveInfo&);
169
170 virtual void getAttachedShaders(blink::WebGLId program,
171 blink::WGC3Dsizei maxCount,
172 blink::WGC3Dsizei* count,
173 blink::WebGLId* shaders);
174
175 virtual blink::WGC3Dint getAttribLocation(blink::WebGLId program,
176 const blink::WGC3Dchar* name);
177
178 virtual void getBooleanv(blink::WGC3Denum pname, blink::WGC3Dboolean* value);
179
180 virtual void getBufferParameteriv(blink::WGC3Denum target,
181 blink::WGC3Denum pname,
182 blink::WGC3Dint* value);
183
184 virtual blink::WGC3Denum getError();
185
186 virtual void getFloatv(blink::WGC3Denum pname, blink::WGC3Dfloat* value);
187
188 virtual void getFramebufferAttachmentParameteriv(blink::WGC3Denum target,
189 blink::WGC3Denum attachment,
190 blink::WGC3Denum pname,
191 blink::WGC3Dint* value);
192
193 virtual void getIntegerv(blink::WGC3Denum pname, blink::WGC3Dint* value);
194
195 virtual void getProgramiv(blink::WebGLId program,
196 blink::WGC3Denum pname,
197 blink::WGC3Dint* value);
198
199 virtual blink::WebString getProgramInfoLog(blink::WebGLId program);
200
201 virtual void getRenderbufferParameteriv(blink::WGC3Denum target,
202 blink::WGC3Denum pname,
203 blink::WGC3Dint* value);
204
205 virtual void getShaderiv(blink::WebGLId shader,
206 blink::WGC3Denum pname,
207 blink::WGC3Dint* value);
208
209 virtual blink::WebString getShaderInfoLog(blink::WebGLId shader);
210
211 virtual void getShaderPrecisionFormat(blink::WGC3Denum shadertype,
212 blink::WGC3Denum precisiontype,
213 blink::WGC3Dint* range,
214 blink::WGC3Dint* precision);
215
216 virtual blink::WebString getShaderSource(blink::WebGLId shader);
217 virtual blink::WebString getString(blink::WGC3Denum name);
218
219 virtual void getTexParameterfv(blink::WGC3Denum target,
220 blink::WGC3Denum pname,
221 blink::WGC3Dfloat* value);
222 virtual void getTexParameteriv(blink::WGC3Denum target,
223 blink::WGC3Denum pname,
224 blink::WGC3Dint* value);
225
226 virtual void getUniformfv(blink::WebGLId program,
227 blink::WGC3Dint location,
228 blink::WGC3Dfloat* value);
229 virtual void getUniformiv(blink::WebGLId program,
230 blink::WGC3Dint location,
231 blink::WGC3Dint* value);
232
233 virtual blink::WGC3Dint getUniformLocation(blink::WebGLId program,
234 const blink::WGC3Dchar* name);
235
236 virtual void getVertexAttribfv(blink::WGC3Duint index,
237 blink::WGC3Denum pname,
238 blink::WGC3Dfloat* value);
239 virtual void getVertexAttribiv(blink::WGC3Duint index,
240 blink::WGC3Denum pname,
241 blink::WGC3Dint* value);
242
243 virtual blink::WGC3Dsizeiptr getVertexAttribOffset(blink::WGC3Duint index,
244 blink::WGC3Denum pname);
245
246 virtual void hint(blink::WGC3Denum target, blink::WGC3Denum mode);
247 virtual blink::WGC3Dboolean isBuffer(blink::WebGLId buffer);
248 virtual blink::WGC3Dboolean isEnabled(blink::WGC3Denum cap);
249 virtual blink::WGC3Dboolean isFramebuffer(blink::WebGLId framebuffer);
250 virtual blink::WGC3Dboolean isProgram(blink::WebGLId program);
251 virtual blink::WGC3Dboolean isRenderbuffer(blink::WebGLId renderbuffer);
252 virtual blink::WGC3Dboolean isShader(blink::WebGLId shader);
253 virtual blink::WGC3Dboolean isTexture(blink::WebGLId texture);
254 virtual void lineWidth(blink::WGC3Dfloat);
255 virtual void linkProgram(blink::WebGLId program);
256 virtual void pixelStorei(blink::WGC3Denum pname, blink::WGC3Dint param);
257 virtual void polygonOffset(blink::WGC3Dfloat factor, blink::WGC3Dfloat units);
258
259 virtual void readPixels(blink::WGC3Dint x,
260 blink::WGC3Dint y,
261 blink::WGC3Dsizei width,
262 blink::WGC3Dsizei height,
263 blink::WGC3Denum format,
264 blink::WGC3Denum type,
265 void* pixels);
266
267 virtual void releaseShaderCompiler();
268 virtual void renderbufferStorage(blink::WGC3Denum target,
269 blink::WGC3Denum internalformat,
270 blink::WGC3Dsizei width,
271 blink::WGC3Dsizei height);
272 virtual void sampleCoverage(blink::WGC3Dfloat value,
273 blink::WGC3Dboolean invert);
274 virtual void scissor(blink::WGC3Dint x,
275 blink::WGC3Dint y,
276 blink::WGC3Dsizei width,
277 blink::WGC3Dsizei height);
278 virtual void shaderSource(blink::WebGLId shader,
279 const blink::WGC3Dchar* string);
280 virtual void stencilFunc(blink::WGC3Denum func,
281 blink::WGC3Dint ref,
282 blink::WGC3Duint mask);
283 virtual void stencilFuncSeparate(blink::WGC3Denum face,
284 blink::WGC3Denum func,
285 blink::WGC3Dint ref,
286 blink::WGC3Duint mask);
287 virtual void stencilMask(blink::WGC3Duint mask);
288 virtual void stencilMaskSeparate(blink::WGC3Denum face,
289 blink::WGC3Duint mask);
290 virtual void stencilOp(blink::WGC3Denum fail,
291 blink::WGC3Denum zfail,
292 blink::WGC3Denum zpass);
293 virtual void stencilOpSeparate(blink::WGC3Denum face,
294 blink::WGC3Denum fail,
295 blink::WGC3Denum zfail,
296 blink::WGC3Denum zpass);
297
298 virtual void texImage2D(blink::WGC3Denum target,
299 blink::WGC3Dint level,
300 blink::WGC3Denum internalformat,
301 blink::WGC3Dsizei width,
302 blink::WGC3Dsizei height,
303 blink::WGC3Dint border,
304 blink::WGC3Denum format,
305 blink::WGC3Denum type,
306 const void* pixels);
307
308 virtual void texParameterf(blink::WGC3Denum target,
309 blink::WGC3Denum pname,
310 blink::WGC3Dfloat param);
311 virtual void texParameteri(blink::WGC3Denum target,
312 blink::WGC3Denum pname,
313 blink::WGC3Dint param);
314
315 virtual void texSubImage2D(blink::WGC3Denum target,
316 blink::WGC3Dint level,
317 blink::WGC3Dint xoffset,
318 blink::WGC3Dint yoffset,
319 blink::WGC3Dsizei width,
320 blink::WGC3Dsizei height,
321 blink::WGC3Denum format,
322 blink::WGC3Denum type,
323 const void* pixels);
324
325 virtual void uniform1f(blink::WGC3Dint location, blink::WGC3Dfloat x);
326 virtual void uniform1fv(blink::WGC3Dint location,
327 blink::WGC3Dsizei count,
328 const blink::WGC3Dfloat* v);
329 virtual void uniform1i(blink::WGC3Dint location, blink::WGC3Dint x);
330 virtual void uniform1iv(blink::WGC3Dint location,
331 blink::WGC3Dsizei count,
332 const blink::WGC3Dint* v);
333 virtual void uniform2f(blink::WGC3Dint location,
334 blink::WGC3Dfloat x,
335 blink::WGC3Dfloat y);
336 virtual void uniform2fv(blink::WGC3Dint location,
337 blink::WGC3Dsizei count,
338 const blink::WGC3Dfloat* v);
339 virtual void uniform2i(blink::WGC3Dint location,
340 blink::WGC3Dint x,
341 blink::WGC3Dint y);
342 virtual void uniform2iv(blink::WGC3Dint location,
343 blink::WGC3Dsizei count,
344 const blink::WGC3Dint* v);
345 virtual void uniform3f(blink::WGC3Dint location,
346 blink::WGC3Dfloat x,
347 blink::WGC3Dfloat y,
348 blink::WGC3Dfloat z);
349 virtual void uniform3fv(blink::WGC3Dint location,
350 blink::WGC3Dsizei count,
351 const blink::WGC3Dfloat* v);
352 virtual void uniform3i(blink::WGC3Dint location,
353 blink::WGC3Dint x,
354 blink::WGC3Dint y,
355 blink::WGC3Dint z);
356 virtual void uniform3iv(blink::WGC3Dint location,
357 blink::WGC3Dsizei count,
358 const blink::WGC3Dint* v);
359 virtual void uniform4f(blink::WGC3Dint location,
360 blink::WGC3Dfloat x,
361 blink::WGC3Dfloat y,
362 blink::WGC3Dfloat z,
363 blink::WGC3Dfloat w);
364 virtual void uniform4fv(blink::WGC3Dint location,
365 blink::WGC3Dsizei count,
366 const blink::WGC3Dfloat* v);
367 virtual void uniform4i(blink::WGC3Dint location,
368 blink::WGC3Dint x,
369 blink::WGC3Dint y,
370 blink::WGC3Dint z,
371 blink::WGC3Dint w);
372 virtual void uniform4iv(blink::WGC3Dint location,
373 blink::WGC3Dsizei count,
374 const blink::WGC3Dint* v);
375 virtual void uniformMatrix2fv(blink::WGC3Dint location,
376 blink::WGC3Dsizei count,
377 blink::WGC3Dboolean transpose,
378 const blink::WGC3Dfloat* value);
379 virtual void uniformMatrix3fv(blink::WGC3Dint location,
380 blink::WGC3Dsizei count,
381 blink::WGC3Dboolean transpose,
382 const blink::WGC3Dfloat* value);
383 virtual void uniformMatrix4fv(blink::WGC3Dint location,
384 blink::WGC3Dsizei count,
385 blink::WGC3Dboolean transpose,
386 const blink::WGC3Dfloat* value);
387
388 virtual void useProgram(blink::WebGLId program);
389 virtual void validateProgram(blink::WebGLId program);
390
391 virtual void vertexAttrib1f(blink::WGC3Duint index, blink::WGC3Dfloat x);
392 virtual void vertexAttrib1fv(blink::WGC3Duint index,
393 const blink::WGC3Dfloat* values);
394 virtual void vertexAttrib2f(blink::WGC3Duint index,
395 blink::WGC3Dfloat x,
396 blink::WGC3Dfloat y);
397 virtual void vertexAttrib2fv(blink::WGC3Duint index,
398 const blink::WGC3Dfloat* values);
399 virtual void vertexAttrib3f(blink::WGC3Duint index,
400 blink::WGC3Dfloat x,
401 blink::WGC3Dfloat y,
402 blink::WGC3Dfloat z);
403 virtual void vertexAttrib3fv(blink::WGC3Duint index,
404 const blink::WGC3Dfloat* values);
405 virtual void vertexAttrib4f(blink::WGC3Duint index,
406 blink::WGC3Dfloat x,
407 blink::WGC3Dfloat y,
408 blink::WGC3Dfloat z,
409 blink::WGC3Dfloat w);
410 virtual void vertexAttrib4fv(blink::WGC3Duint index,
411 const blink::WGC3Dfloat* values);
412 virtual void vertexAttribPointer(blink::WGC3Duint index,
413 blink::WGC3Dint size,
414 blink::WGC3Denum type,
415 blink::WGC3Dboolean normalized,
416 blink::WGC3Dsizei stride,
417 blink::WGC3Dintptr offset);
418
419 virtual void viewport(blink::WGC3Dint x,
420 blink::WGC3Dint y,
421 blink::WGC3Dsizei width,
422 blink::WGC3Dsizei height);
423
424 virtual blink::WebGLId createBuffer();
425 virtual blink::WebGLId createFramebuffer();
426 virtual blink::WebGLId createRenderbuffer();
427 virtual blink::WebGLId createTexture();
428
429 virtual void deleteBuffer(blink::WebGLId);
430 virtual void deleteFramebuffer(blink::WebGLId);
431 virtual void deleteRenderbuffer(blink::WebGLId);
432 virtual void deleteTexture(blink::WebGLId);
433
434 virtual blink::WebGLId createProgram();
435 virtual blink::WebGLId createShader(blink::WGC3Denum);
436
437 virtual void deleteProgram(blink::WebGLId);
438 virtual void deleteShader(blink::WebGLId);
439
440 virtual void synthesizeGLError(blink::WGC3Denum);
441
442 virtual void* mapBufferSubDataCHROMIUM(blink::WGC3Denum target,
443 blink::WGC3Dintptr offset,
444 blink::WGC3Dsizeiptr size,
445 blink::WGC3Denum access);
446 virtual void unmapBufferSubDataCHROMIUM(const void*);
447 virtual void* mapTexSubImage2DCHROMIUM(blink::WGC3Denum target,
448 blink::WGC3Dint level,
449 blink::WGC3Dint xoffset,
450 blink::WGC3Dint yoffset,
451 blink::WGC3Dsizei width,
452 blink::WGC3Dsizei height,
453 blink::WGC3Denum format,
454 blink::WGC3Denum type,
455 blink::WGC3Denum access);
456 virtual void unmapTexSubImage2DCHROMIUM(const void*);
457
458 virtual void setVisibilityCHROMIUM(bool visible);
459
460 virtual void discardFramebufferEXT(blink::WGC3Denum target,
461 blink::WGC3Dsizei numAttachments,
462 const blink::WGC3Denum* attachments);
463 virtual void copyTextureToParentTextureCHROMIUM(blink::WebGLId texture,
464 blink::WebGLId parentTexture);
465
466 virtual blink::WebString getRequestableExtensionsCHROMIUM();
467 virtual void requestExtensionCHROMIUM(const char*);
468
469 virtual void blitFramebufferCHROMIUM(blink::WGC3Dint srcX0,
470 blink::WGC3Dint srcY0,
471 blink::WGC3Dint srcX1,
472 blink::WGC3Dint srcY1,
473 blink::WGC3Dint dstX0,
474 blink::WGC3Dint dstY0,
475 blink::WGC3Dint dstX1,
476 blink::WGC3Dint dstY1,
477 blink::WGC3Dbitfield mask,
478 blink::WGC3Denum filter);
479 virtual void renderbufferStorageMultisampleCHROMIUM(
480 blink::WGC3Denum target,
481 blink::WGC3Dsizei samples,
482 blink::WGC3Denum internalformat,
483 blink::WGC3Dsizei width,
484 blink::WGC3Dsizei height);
485
486 virtual blink::WebString getTranslatedShaderSourceANGLE(
487 blink::WebGLId shader);
488
489 virtual void setContextLostCallback(
490 WebGraphicsContext3D::WebGraphicsContextLostCallback* callback);
491
492 virtual void setErrorMessageCallback(
493 WebGraphicsContext3D::WebGraphicsErrorMessageCallback* callback);
494
495 virtual void texImageIOSurface2DCHROMIUM(blink::WGC3Denum target,
496 blink::WGC3Dint width,
497 blink::WGC3Dint height,
498 blink::WGC3Duint ioSurfaceId,
499 blink::WGC3Duint plane);
500
501 virtual void texStorage2DEXT(blink::WGC3Denum target,
502 blink::WGC3Dint levels,
503 blink::WGC3Duint internalformat,
504 blink::WGC3Dint width,
505 blink::WGC3Dint height);
506
507 virtual blink::WebGLId createQueryEXT();
508 virtual void deleteQueryEXT(blink::WebGLId query);
509 virtual blink::WGC3Dboolean isQueryEXT(blink::WGC3Duint query);
510 virtual void beginQueryEXT(blink::WGC3Denum target, blink::WebGLId query);
511 virtual void endQueryEXT(blink::WGC3Denum target);
512 virtual void getQueryivEXT(blink::WGC3Denum target,
513 blink::WGC3Denum pname,
514 blink::WGC3Dint* params);
515 virtual void getQueryObjectuivEXT(blink::WebGLId query,
516 blink::WGC3Denum pname,
517 blink::WGC3Duint* params);
518
519 // TODO(dshwang): Remove |level| in Blink and then remove it.
520 void copyTextureCHROMIUM(blink::WGC3Denum target,
521 blink::WebGLId source_id,
522 blink::WebGLId dest_id,
523 blink::WGC3Dint level,
524 blink::WGC3Denum internal_format,
525 blink::WGC3Denum dest_type) override;
526
527 void copySubTextureCHROMIUM(blink::WGC3Denum target,
528 blink::WebGLId source_id,
529 blink::WebGLId dest_id,
530 blink::WGC3Dint level,
531 blink::WGC3Dint xoffset,
532 blink::WGC3Dint yoffset) override;
533
534 virtual void copyTextureCHROMIUM(blink::WGC3Denum target,
535 blink::WebGLId source_id,
536 blink::WebGLId dest_id,
537 blink::WGC3Denum internal_format,
538 blink::WGC3Denum dest_type);
539
540 virtual void copySubTextureCHROMIUM(blink::WGC3Denum target,
541 blink::WebGLId sourceId,
542 blink::WebGLId destId,
543 blink::WGC3Dint xoffset,
544 blink::WGC3Dint yoffset);
545
546 virtual void bindUniformLocationCHROMIUM(blink::WebGLId program,
547 blink::WGC3Dint location,
548 const blink::WGC3Dchar* uniform);
549
550 virtual void shallowFlushCHROMIUM();
551 virtual void shallowFinishCHROMIUM();
552
553 virtual void genMailboxCHROMIUM(blink::WGC3Dbyte* mailbox);
554 virtual void produceTextureCHROMIUM(blink::WGC3Denum target,
555 const blink::WGC3Dbyte* mailbox);
556 virtual void produceTextureDirectCHROMIUM(blink::WebGLId texture,
557 blink::WGC3Denum target,
558 const blink::WGC3Dbyte* mailbox);
559 virtual void consumeTextureCHROMIUM(blink::WGC3Denum target,
560 const blink::WGC3Dbyte* mailbox);
561 virtual blink::WebGLId createAndConsumeTextureCHROMIUM(
562 blink::WGC3Denum target,
563 const blink::WGC3Dbyte* mailbox);
564
565 virtual void genValuebuffersCHROMIUM(blink::WGC3Dsizei count,
566 blink::WebGLId* ids);
567 virtual blink::WebGLId createValuebufferCHROMIUM();
568 virtual void deleteValuebuffersCHROMIUM(blink::WGC3Dsizei count,
569 blink::WebGLId* ids);
570 virtual void deleteValuebufferCHROMIUM(blink::WebGLId);
571 virtual void bindValuebufferCHROMIUM(blink::WGC3Denum target,
572 blink::WebGLId valuebuffer);
573 virtual blink::WGC3Dboolean isValuebufferCHROMIUM(
574 blink::WebGLId renderbuffer);
575 virtual void subscribeValueCHROMIUM(blink::WGC3Denum target,
576 blink::WGC3Denum subscription);
577 virtual void populateSubscribedValuesCHROMIUM(blink::WGC3Denum target);
578 virtual void uniformValuebufferCHROMIUM(blink::WGC3Dint location,
579 blink::WGC3Denum target,
580 blink::WGC3Denum subscription);
581 virtual void traceBeginCHROMIUM(const blink::WGC3Dchar* category_name,
582 const blink::WGC3Dchar* trace_name);
583 virtual void traceEndCHROMIUM();
584
585 virtual void insertEventMarkerEXT(const blink::WGC3Dchar* marker);
586 virtual void pushGroupMarkerEXT(const blink::WGC3Dchar* marker);
587 virtual void popGroupMarkerEXT();
588
589 // GL_OES_vertex_array_object
590 virtual blink::WebGLId createVertexArrayOES();
591 virtual void deleteVertexArrayOES(blink::WebGLId array);
592 virtual blink::WGC3Dboolean isVertexArrayOES(blink::WebGLId array);
593 virtual void bindVertexArrayOES(blink::WebGLId array);
594
595 virtual void bindTexImage2DCHROMIUM(blink::WGC3Denum target,
596 blink::WGC3Dint image_id);
597 virtual void releaseTexImage2DCHROMIUM(blink::WGC3Denum target,
598 blink::WGC3Dint image_id);
599
600 virtual void* mapBufferCHROMIUM(blink::WGC3Denum target,
601 blink::WGC3Denum access);
602 virtual blink::WGC3Dboolean unmapBufferCHROMIUM(blink::WGC3Denum target);
603
604 // Async pixel transfer functions.
605 virtual void asyncTexImage2DCHROMIUM(blink::WGC3Denum target,
606 blink::WGC3Dint level,
607 blink::WGC3Denum internalformat,
608 blink::WGC3Dsizei width,
609 blink::WGC3Dsizei height,
610 blink::WGC3Dint border,
611 blink::WGC3Denum format,
612 blink::WGC3Denum type,
613 const void* pixels);
614 virtual void asyncTexSubImage2DCHROMIUM(blink::WGC3Denum target,
615 blink::WGC3Dint level,
616 blink::WGC3Dint xoffset,
617 blink::WGC3Dint yoffset,
618 blink::WGC3Dsizei width,
619 blink::WGC3Dsizei height,
620 blink::WGC3Denum format,
621 blink::WGC3Denum type,
622 const void* pixels);
623 virtual void waitAsyncTexImage2DCHROMIUM(blink::WGC3Denum target);
624
625 // GL_EXT_draw_buffers
626 virtual void drawBuffersEXT(blink::WGC3Dsizei n,
627 const blink::WGC3Denum* bufs);
628
629 // GL_ANGLE_instanced_arrays
630 virtual void drawArraysInstancedANGLE(blink::WGC3Denum mode,
631 blink::WGC3Dint first,
632 blink::WGC3Dsizei count,
633 blink::WGC3Dsizei primcount);
634 virtual void drawElementsInstancedANGLE(blink::WGC3Denum mode,
635 blink::WGC3Dsizei count,
636 blink::WGC3Denum type,
637 blink::WGC3Dintptr offset,
638 blink::WGC3Dsizei primcount);
639 virtual void vertexAttribDivisorANGLE(blink::WGC3Duint index,
640 blink::WGC3Duint divisor);
641
642 // GL_CHROMIUM_gpu_memory_buffer_image
643 virtual blink::WGC3Duint createGpuMemoryBufferImageCHROMIUM(
644 blink::WGC3Dsizei width,
645 blink::WGC3Dsizei height,
646 blink::WGC3Denum internalformat,
647 blink::WGC3Denum usage);
648 virtual void destroyImageCHROMIUM(blink::WGC3Duint image_id);
649
650 // GL_EXT_multisampled_render_to_texture
651 virtual void framebufferTexture2DMultisampleEXT(blink::WGC3Denum target,
652 blink::WGC3Denum attachment,
653 blink::WGC3Denum textarget,
654 blink::WebGLId texture,
655 blink::WGC3Dint level,
656 blink::WGC3Dsizei samples);
657 virtual void renderbufferStorageMultisampleEXT(
658 blink::WGC3Denum target,
659 blink::WGC3Dsizei samples,
660 blink::WGC3Denum internalformat,
661 blink::WGC3Dsizei width,
662 blink::WGC3Dsizei height);
663
664 // OpenGL ES 3.0 functions not represented by pre-existing extensions
665 virtual void beginTransformFeedback(blink::WGC3Denum primitiveMode);
666 virtual void bindBufferBase(blink::WGC3Denum target,
667 blink::WGC3Duint index,
668 blink::WGC3Duint buffer);
669 virtual void bindBufferRange(blink::WGC3Denum target,
670 blink::WGC3Duint index,
671 blink::WGC3Duint buffer,
672 blink::WGC3Dintptr offset,
673 blink::WGC3Dsizeiptr size);
674 virtual void bindSampler(blink::WGC3Duint unit, blink::WebGLId sampler);
675 virtual void bindTransformFeedback(blink::WGC3Denum target,
676 blink::WebGLId transformfeedback);
677 virtual void clearBufferfi(blink::WGC3Denum buffer,
678 blink::WGC3Dint drawbuffer,
679 blink::WGC3Dfloat depth,
680 blink::WGC3Dint stencil);
681 virtual void clearBufferfv(blink::WGC3Denum buffer,
682 blink::WGC3Dint drawbuffer,
683 const blink::WGC3Dfloat* value);
684 virtual void clearBufferiv(blink::WGC3Denum buffer,
685 blink::WGC3Dint drawbuffer,
686 const blink::WGC3Dint* value);
687 virtual void clearBufferuiv(blink::WGC3Denum buffer,
688 blink::WGC3Dint drawbuffer,
689 const blink::WGC3Duint* value);
690 // virtual blink::WGC3Denum clientWaitSync(blink::WebGLId sync,
691 // blink::WGC3Dbitfield flags,
692 // blink::WGC3Duint64 timeout);
693 // virtual void compressedTexImage3D(blink::WGC3Denum target, blink::WGC3Dint
694 // level,
695 // blink::WGC3Denum internalformat, blink::WGC3Dsizei width,
696 // WGC3Dsizei height, WGC3Dsizei depth, blink::WGC3Dint border,
697 // WGC3Dsizei imageSize, const void *data);
698 // virtual void compressedTexSubImage3D(blink::WGC3Denum target,
699 // blink::WGC3Dint level, blink::WGC3Dint xoffset, blink::WGC3Dint yoffset,
700 // blink::WGC3Dint zoffset,
701 // blink::WGC3Dsizei width, blink::WGC3Dsizei height,
702 // blink::WGC3Dsizei depth, blink::WGC3Denum format,
703 // blink::WGC3Dsizei imageSize, const void *data);
704 virtual void copyBufferSubData(blink::WGC3Denum readTarget,
705 blink::WGC3Denum writeTarget,
706 blink::WGC3Dintptr readOffset,
707 blink::WGC3Dintptr writeOffset,
708 blink::WGC3Dsizeiptr size);
709 virtual void copyTexSubImage3D(blink::WGC3Denum target,
710 blink::WGC3Dint level,
711 blink::WGC3Dint xoffset,
712 blink::WGC3Dint yoffset,
713 blink::WGC3Dint zoffset,
714 blink::WGC3Dint x,
715 blink::WGC3Dint y,
716 blink::WGC3Dsizei width,
717 blink::WGC3Dsizei height);
718 virtual blink::WebGLId createSampler();
719 virtual blink::WebGLId createTransformFeedback();
720 virtual void deleteSampler(blink::WebGLId sampler);
721 // virtual void deleteSync(blink::WebGLId sync);
722 virtual void deleteTransformFeedback(blink::WebGLId transformfeedback);
723 virtual void endTransformFeedback(void);
724 // virtual blink::WebGLId fenceSync(blink::WGC3Denum condition,
725 // blink::WGC3Dbitfield flags);
726 virtual void framebufferTextureLayer(blink::WGC3Denum target,
727 blink::WGC3Denum attachment,
728 blink::WGC3Duint texture,
729 blink::WGC3Dint level,
730 blink::WGC3Dint layer);
731 virtual void getActiveUniformBlockName(blink::WGC3Duint program,
732 blink::WGC3Duint uniformBlockIndex,
733 blink::WGC3Dsizei bufSize,
734 blink::WGC3Dsizei* length,
735 blink::WGC3Dchar* uniformBlockName);
736 virtual void getActiveUniformBlockiv(blink::WGC3Duint program,
737 blink::WGC3Duint uniformBlockIndex,
738 blink::WGC3Denum pname,
739 blink::WGC3Dint* params);
740 // virtual void getActiveUniformsiv(blink::WGC3Duint program,
741 // blink::WGC3Dsizei uniformCount, const blink::WGC3Duint *uniformIndices,
742 // blink::WGC3Denum pname, blink::WGC3Dint *params);
743 virtual blink::WGC3Dint getFragDataLocation(blink::WGC3Duint program,
744 const blink::WGC3Dchar* name);
745 virtual void getInternalformativ(blink::WGC3Denum target,
746 blink::WGC3Denum internalformat,
747 blink::WGC3Denum pname,
748 blink::WGC3Dsizei bufSize,
749 blink::WGC3Dint* params);
750 virtual void getSamplerParameterfv(blink::WGC3Duint sampler,
751 blink::WGC3Denum pname,
752 blink::WGC3Dfloat* params);
753 virtual void getSamplerParameteriv(blink::WGC3Duint sampler,
754 blink::WGC3Denum pname,
755 blink::WGC3Dint* params);
756 // virtual void getTransformFeedbackVarying(blink::WGC3Duint program,
757 // blink::WGC3Duint index,
758 // blink::WGC3Dsizei bufSize, blink::WGC3Dsizei *length,
759 // blink::WGC3Dsizei *size, blink::WGC3Denum *type,
760 // blink::WGC3Dchar *name);
761 virtual blink::WGC3Duint getUniformBlockIndex(
762 blink::WGC3Duint program,
763 const blink::WGC3Dchar* uniformBlockName);
764 // virtual void getUniformIndices(blink::WGC3Duint program,
765 // blink::WGC3Dsizei uniformCount,
766 // const blink::WGC3Dchar *const*uniformNames,
767 // blink::WGC3Duint *uniformIndices);
768 // virtual void getUniformuiv(blink::WGC3Duint program, blink::WGC3Dint
769 // location,
770 // blink::WGC3Duint *params);
771 // virtual void getVertexAttribIiv(blink::WGC3Duint index, blink::WGC3Denum
772 // pname,
773 // blink::WGC3Dint *params);
774 // virtual void getVertexAttribIuiv(blink::WGC3Duint index, blink::WGC3Denum
775 // pname,
776 // blink::WGC3Duint *params);
777 virtual void invalidateFramebuffer(blink::WGC3Denum target,
778 blink::WGC3Dsizei numAttachments,
779 const blink::WGC3Denum* attachments);
780 virtual void invalidateSubFramebuffer(blink::WGC3Denum target,
781 blink::WGC3Dsizei numAttachments,
782 const blink::WGC3Denum* attachments,
783 blink::WGC3Dint x,
784 blink::WGC3Dint y,
785 blink::WGC3Dsizei width,
786 blink::WGC3Dsizei height);
787 virtual blink::WGC3Dboolean isSampler(blink::WebGLId sampler);
788 // virtual blink::WGC3Dboolean isSync(blink::WebGLId sync);
789 virtual blink::WGC3Dboolean isTransformFeedback(blink::WGC3Duint id);
790 virtual void pauseTransformFeedback(void);
791 // virtual void programParameteri(blink::WGC3Duint program, blink::WGC3Denum
792 // pname,
793 // blink::WGC3Dint value);
794 virtual void readBuffer(blink::WGC3Denum src);
795 virtual void resumeTransformFeedback(void);
796 virtual void samplerParameterf(blink::WGC3Duint sampler,
797 blink::WGC3Denum pname,
798 blink::WGC3Dfloat param);
799 virtual void samplerParameterfv(blink::WGC3Duint sampler,
800 blink::WGC3Denum pname,
801 const blink::WGC3Dfloat* param);
802 virtual void samplerParameteri(blink::WGC3Duint sampler,
803 blink::WGC3Denum pname,
804 blink::WGC3Dint param);
805 virtual void samplerParameteriv(blink::WGC3Duint sampler,
806 blink::WGC3Denum pname,
807 const blink::WGC3Dint* param);
808 virtual void texImage3D(blink::WGC3Denum target,
809 blink::WGC3Dint level,
810 blink::WGC3Dint internalformat,
811 blink::WGC3Dsizei width,
812 blink::WGC3Dsizei height,
813 blink::WGC3Dsizei depth,
814 blink::WGC3Dint border,
815 blink::WGC3Denum format,
816 blink::WGC3Denum type,
817 const void* pixels);
818 virtual void texStorage3D(blink::WGC3Denum target,
819 blink::WGC3Dsizei levels,
820 blink::WGC3Denum internalformat,
821 blink::WGC3Dsizei width,
822 blink::WGC3Dsizei height,
823 blink::WGC3Dsizei depth);
824 virtual void texSubImage3D(blink::WGC3Denum target,
825 blink::WGC3Dint level,
826 blink::WGC3Dint xoffset,
827 blink::WGC3Dint yoffset,
828 blink::WGC3Dint zoffset,
829 blink::WGC3Dsizei width,
830 blink::WGC3Dsizei height,
831 blink::WGC3Dsizei depth,
832 blink::WGC3Denum format,
833 blink::WGC3Denum type,
834 const void* pixels);
835 virtual void transformFeedbackVaryings(
836 blink::WGC3Duint program,
837 blink::WGC3Dsizei count,
838 const blink::WGC3Dchar* const* varyings,
839 blink::WGC3Denum bufferMode);
840 virtual void uniform1ui(blink::WGC3Dint location, blink::WGC3Duint x);
841 virtual void uniform1uiv(blink::WGC3Dint location,
842 blink::WGC3Dsizei count,
843 const blink::WGC3Duint* value);
844 virtual void uniform2ui(blink::WGC3Dint location,
845 blink::WGC3Duint x,
846 blink::WGC3Duint y);
847 virtual void uniform2uiv(blink::WGC3Dint location,
848 blink::WGC3Dsizei count,
849 const blink::WGC3Duint* value);
850 virtual void uniform3ui(blink::WGC3Dint location,
851 blink::WGC3Duint x,
852 blink::WGC3Duint y,
853 blink::WGC3Duint z);
854 virtual void uniform3uiv(blink::WGC3Dint location,
855 blink::WGC3Dsizei count,
856 const blink::WGC3Duint* value);
857 virtual void uniform4ui(blink::WGC3Dint location,
858 blink::WGC3Duint x,
859 blink::WGC3Duint y,
860 blink::WGC3Duint z,
861 blink::WGC3Duint w);
862 virtual void uniform4uiv(blink::WGC3Dint location,
863 blink::WGC3Dsizei count,
864 const blink::WGC3Duint* value);
865 virtual void uniformBlockBinding(blink::WGC3Duint program,
866 blink::WGC3Duint uniformBlockIndex,
867 blink::WGC3Duint uniformBlockBinding);
868 virtual void uniformMatrix2x3fv(blink::WGC3Dint location,
869 blink::WGC3Dsizei count,
870 blink::WGC3Dboolean transpose,
871 const blink::WGC3Dfloat* value);
872 virtual void uniformMatrix2x4fv(blink::WGC3Dint location,
873 blink::WGC3Dsizei count,
874 blink::WGC3Dboolean transpose,
875 const blink::WGC3Dfloat* value);
876 virtual void uniformMatrix3x2fv(blink::WGC3Dint location,
877 blink::WGC3Dsizei count,
878 blink::WGC3Dboolean transpose,
879 const blink::WGC3Dfloat* value);
880 virtual void uniformMatrix3x4fv(blink::WGC3Dint location,
881 blink::WGC3Dsizei count,
882 blink::WGC3Dboolean transpose,
883 const blink::WGC3Dfloat* value);
884 virtual void uniformMatrix4x2fv(blink::WGC3Dint location,
885 blink::WGC3Dsizei count,
886 blink::WGC3Dboolean transpose,
887 const blink::WGC3Dfloat* value);
888 virtual void uniformMatrix4x3fv(blink::WGC3Dint location,
889 blink::WGC3Dsizei count,
890 blink::WGC3Dboolean transpose,
891 const blink::WGC3Dfloat* value);
892 virtual void vertexAttribI4i(blink::WGC3Duint index,
893 blink::WGC3Dint x,
894 blink::WGC3Dint y,
895 blink::WGC3Dint z,
896 blink::WGC3Dint w);
897 virtual void vertexAttribI4iv(blink::WGC3Duint index,
898 const blink::WGC3Dint* v);
899 virtual void vertexAttribI4ui(blink::WGC3Duint index,
900 blink::WGC3Duint x,
901 blink::WGC3Duint y,
902 blink::WGC3Duint z,
903 blink::WGC3Duint w);
904 virtual void vertexAttribI4uiv(blink::WGC3Duint index,
905 const blink::WGC3Duint* v);
906 virtual void vertexAttribIPointer(blink::WGC3Duint index,
907 blink::WGC3Dint size,
908 blink::WGC3Denum type,
909 blink::WGC3Dsizei stride,
910 blink::WGC3Dintptr pointer);
911 // virtual void waitSync(blink::WebGLId sync, blink::WGC3Dbitfield flags,
912 // blink::WGC3Duint64 timeout);
913
914 virtual GrGLInterface* createGrGLInterface();
915
916 ::gpu::gles2::GLES2Interface* GetGLInterface() {
917 return gl_;
918 }
919
920 // Convert WebGL context creation attributes into command buffer / EGL size
921 // requests.
922 static void ConvertAttributes(
923 const blink::WebGraphicsContext3D::Attributes& attributes,
924 ::gpu::gles2::ContextCreationAttribHelper* output_attribs);
925
926 protected:
927 friend class WebGraphicsContext3DErrorMessageCallback;
928
929 WebGraphicsContext3DImpl();
930
931 ::gpu::gles2::GLES2ImplementationErrorMessageCallback*
932 getErrorMessageCallback();
933 virtual void OnErrorMessage(const std::string& message, int id);
934
935 void setGLInterface(::gpu::gles2::GLES2Interface* gl) {
936 gl_ = gl;
937 }
938
939 bool initialized_;
940 bool initialize_failed_;
941
942 WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_;
943 blink::WGC3Denum context_lost_reason_;
944
945 WebGraphicsContext3D::WebGraphicsErrorMessageCallback*
946 error_message_callback_;
947 scoped_ptr<WebGraphicsContext3DErrorMessageCallback>
948 client_error_message_callback_;
949
950 // Errors raised by synthesizeGLError().
951 std::vector<blink::WGC3Denum> synthetic_errors_;
952
953 ::gpu::gles2::GLES2Interface* gl_;
954 bool lose_context_when_out_of_memory_;
955 uint32_t flush_id_;
956 };
957
958 } // namespace gpu_blink
959
960 #endif // GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_
OLDNEW
« no previous file with comments | « gpu/blink/gpu_blink_export.h ('k') | gpu/blink/webgraphicscontext3d_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698