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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation_autogen.h

Issue 11138021: Make GLES2Implementation based on GLES2Interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file is auto-generated from 5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py 6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // DO NOT EDIT! 7 // DO NOT EDIT!
8 8
9 // This file is included by gles2_implementation.h to declare the 9 // This file is included by gles2_implementation.h to declare the
10 // GL api functions. 10 // GL api functions.
11 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_ 11 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_
12 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_ 12 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_
13 13
14 void ActiveTexture(GLenum texture); 14 virtual void ActiveTexture(GLenum texture) OVERRIDE;
15 15
16 void AttachShader(GLuint program, GLuint shader) { 16 virtual void AttachShader(GLuint program, GLuint shader) OVERRIDE;
17 GPU_CLIENT_SINGLE_THREAD_CHECK(); 17
18 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glAttachShader(" << program << ", " << shader << ")"); // NOLINT 18 virtual void BindAttribLocation(
19 helper_->AttachShader(program, shader); 19 GLuint program, GLuint index, const char* name) OVERRIDE;
20 } 20
21 21 virtual void BindBuffer(GLenum target, GLuint buffer) OVERRIDE;
22 void BindAttribLocation(GLuint program, GLuint index, const char* name); 22
23 23 virtual void BindFramebuffer(GLenum target, GLuint framebuffer) OVERRIDE;
24 void BindBuffer(GLenum target, GLuint buffer) { 24
25 GPU_CLIENT_SINGLE_THREAD_CHECK(); 25 virtual void BindRenderbuffer(GLenum target, GLuint renderbuffer) OVERRIDE;
26 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindBuffer(" << GLES2Util::GetStr ingBufferTarget(target) << ", " << buffer << ")"); // NOLINT 26
27 if (IsBufferReservedId(buffer)) { 27 virtual void BindTexture(GLenum target, GLuint texture) OVERRIDE;
28 SetGLError(GL_INVALID_OPERATION, "BindBuffer", "buffer reserved id"); 28
29 return; 29 virtual void BlendColor(
30 } 30 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) OVERRIDE;
31 BindBufferHelper(target, buffer); 31
32 helper_->BindBuffer(target, buffer); 32 virtual void BlendEquation(GLenum mode) OVERRIDE;
33 } 33
34 34 virtual void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) OVERRIDE;
35 void BindFramebuffer(GLenum target, GLuint framebuffer) { 35
36 GPU_CLIENT_SINGLE_THREAD_CHECK(); 36 virtual void BlendFunc(GLenum sfactor, GLenum dfactor) OVERRIDE;
37 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindFramebuffer(" << GLES2Util::G etStringFrameBufferTarget(target) << ", " << framebuffer << ")"); // NOLINT 37
38 if (IsFramebufferReservedId(framebuffer)) { 38 virtual void BlendFuncSeparate(
39 SetGLError( 39 GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) OVERRIDE;
40 GL_INVALID_OPERATION, "BindFramebuffer", "framebuffer reserved id"); 40
41 return; 41 virtual void BufferData(
42 } 42 GLenum target, GLsizeiptr size, const void* data, GLenum usage) OVERRIDE;
43 BindFramebufferHelper(target, framebuffer); 43
44 helper_->BindFramebuffer(target, framebuffer); 44 virtual void BufferSubData(
45 } 45 GLenum target, GLintptr offset, GLsizeiptr size,
46 46 const void* data) OVERRIDE;
47 void BindRenderbuffer(GLenum target, GLuint renderbuffer) { 47
48 GPU_CLIENT_SINGLE_THREAD_CHECK(); 48 virtual GLenum CheckFramebufferStatus(GLenum target) OVERRIDE;
49 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindRenderbuffer(" << GLES2Util:: GetStringRenderBufferTarget(target) << ", " << renderbuffer << ")"); // NOLINT 49
50 if (IsRenderbufferReservedId(renderbuffer)) { 50 virtual void Clear(GLbitfield mask) OVERRIDE;
51 SetGLError( 51
52 GL_INVALID_OPERATION, "BindRenderbuffer", "renderbuffer reserved id"); 52 virtual void ClearColor(
53 return; 53 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) OVERRIDE;
54 } 54
55 BindRenderbufferHelper(target, renderbuffer); 55 virtual void ClearDepthf(GLclampf depth) OVERRIDE;
56 helper_->BindRenderbuffer(target, renderbuffer); 56
57 } 57 virtual void ClearStencil(GLint s) OVERRIDE;
58 58
59 void BindTexture(GLenum target, GLuint texture) { 59 virtual void ColorMask(
60 GPU_CLIENT_SINGLE_THREAD_CHECK(); 60 GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) OVERRIDE;
61 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexture(" << GLES2Util::GetSt ringTextureBindTarget(target) << ", " << texture << ")"); // NOLINT 61
62 if (IsTextureReservedId(texture)) { 62 virtual void CompileShader(GLuint shader) OVERRIDE;
63 SetGLError(GL_INVALID_OPERATION, "BindTexture", "texture reserved id"); 63
64 return; 64 virtual void CompressedTexImage2D(
65 }
66 BindTextureHelper(target, texture);
67 helper_->BindTexture(target, texture);
68 }
69
70 void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
71 GPU_CLIENT_SINGLE_THREAD_CHECK();
72 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendColor(" << red << ", " << gr een << ", " << blue << ", " << alpha << ")"); // NOLINT
73 helper_->BlendColor(red, green, blue, alpha);
74 }
75
76 void BlendEquation(GLenum mode) {
77 GPU_CLIENT_SINGLE_THREAD_CHECK();
78 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendEquation(" << GLES2Util::Get StringEquation(mode) << ")"); // NOLINT
79 helper_->BlendEquation(mode);
80 }
81
82 void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
83 GPU_CLIENT_SINGLE_THREAD_CHECK();
84 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendEquationSeparate(" << GLES2U til::GetStringEquation(modeRGB) << ", " << GLES2Util::GetStringEquation(modeAlph a) << ")"); // NOLINT
85 helper_->BlendEquationSeparate(modeRGB, modeAlpha);
86 }
87
88 void BlendFunc(GLenum sfactor, GLenum dfactor) {
89 GPU_CLIENT_SINGLE_THREAD_CHECK();
90 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendFunc(" << GLES2Util::GetStri ngSrcBlendFactor(sfactor) << ", " << GLES2Util::GetStringDstBlendFactor(dfactor) << ")"); // NOLINT
91 helper_->BlendFunc(sfactor, dfactor);
92 }
93
94 void BlendFuncSeparate(
95 GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
96 GPU_CLIENT_SINGLE_THREAD_CHECK();
97 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendFuncSeparate(" << GLES2Util: :GetStringSrcBlendFactor(srcRGB) << ", " << GLES2Util::GetStringDstBlendFactor(d stRGB) << ", " << GLES2Util::GetStringSrcBlendFactor(srcAlpha) << ", " << GLES2U til::GetStringDstBlendFactor(dstAlpha) << ")"); // NOLINT
98 helper_->BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
99 }
100
101 void BufferData(
102 GLenum target, GLsizeiptr size, const void* data, GLenum usage);
103
104 void BufferSubData(
105 GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
106
107 GLenum CheckFramebufferStatus(GLenum target) {
108 GPU_CLIENT_SINGLE_THREAD_CHECK();
109 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCheckFramebufferStatus(" << GLES2 Util::GetStringFrameBufferTarget(target) << ")"); // NOLINT
110 typedef CheckFramebufferStatus::Result Result;
111 Result* result = GetResultAs<Result*>();
112 if (!result) {
113 return GL_FRAMEBUFFER_UNSUPPORTED;
114 }
115 *result = 0;
116 helper_->CheckFramebufferStatus(
117 target, GetResultShmId(), GetResultShmOffset());
118 WaitForCmd();
119 GPU_CLIENT_LOG("returned " << *result);
120 return *result;
121 }
122
123 void Clear(GLbitfield mask);
124
125 void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
126 GPU_CLIENT_SINGLE_THREAD_CHECK();
127 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearColor(" << red << ", " << gr een << ", " << blue << ", " << alpha << ")"); // NOLINT
128 helper_->ClearColor(red, green, blue, alpha);
129 }
130
131 void ClearDepthf(GLclampf depth) {
132 GPU_CLIENT_SINGLE_THREAD_CHECK();
133 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearDepthf(" << depth << ")");
134 helper_->ClearDepthf(depth);
135 }
136
137 void ClearStencil(GLint s) {
138 GPU_CLIENT_SINGLE_THREAD_CHECK();
139 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearStencil(" << s << ")");
140 helper_->ClearStencil(s);
141 }
142
143 void ColorMask(
144 GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
145 GPU_CLIENT_SINGLE_THREAD_CHECK();
146 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glColorMask(" << GLES2Util::GetStri ngBool(red) << ", " << GLES2Util::GetStringBool(green) << ", " << GLES2Util::Get StringBool(blue) << ", " << GLES2Util::GetStringBool(alpha) << ")"); // NOLINT
147 helper_->ColorMask(red, green, blue, alpha);
148 }
149
150 void CompileShader(GLuint shader) {
151 GPU_CLIENT_SINGLE_THREAD_CHECK();
152 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCompileShader(" << shader << ")") ; // NOLINT
153 helper_->CompileShader(shader);
154 }
155
156 void CompressedTexImage2D(
157 GLenum target, GLint level, GLenum internalformat, GLsizei width, 65 GLenum target, GLint level, GLenum internalformat, GLsizei width,
158 GLsizei height, GLint border, GLsizei imageSize, const void* data); 66 GLsizei height, GLint border, GLsizei imageSize,
159 67 const void* data) OVERRIDE;
160 void CompressedTexSubImage2D( 68
69 virtual void CompressedTexSubImage2D(
161 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, 70 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
162 GLsizei height, GLenum format, GLsizei imageSize, const void* data); 71 GLsizei height, GLenum format, GLsizei imageSize,
163 72 const void* data) OVERRIDE;
164 void CopyTexImage2D( 73
74 virtual void CopyTexImage2D(
165 GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, 75 GLenum target, GLint level, GLenum internalformat, GLint x, GLint y,
166 GLsizei width, GLsizei height, GLint border) { 76 GLsizei width, GLsizei height, GLint border) OVERRIDE;
167 GPU_CLIENT_SINGLE_THREAD_CHECK(); 77
168 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTexImage2D(" << GLES2Util::Ge tStringTextureTarget(target) << ", " << level << ", " << GLES2Util::GetStringTex tureInternalFormat(internalformat) << ", " << x << ", " << y << ", " << width << ", " << height << ", " << border << ")"); // NOLINT 78 virtual void CopyTexSubImage2D(
169 if (width < 0) {
170 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "width < 0");
171 return;
172 }
173 if (height < 0) {
174 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "height < 0");
175 return;
176 }
177 helper_->CopyTexImage2D(
178 target, level, internalformat, x, y, width, height, border);
179 }
180
181 void CopyTexSubImage2D(
182 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, 79 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y,
183 GLsizei width, GLsizei height) { 80 GLsizei width, GLsizei height) OVERRIDE;
184 GPU_CLIENT_SINGLE_THREAD_CHECK(); 81
185 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTexSubImage2D(" << GLES2Util: :GetStringTextureTarget(target) << ", " << level << ", " << xoffset << ", " << y offset << ", " << x << ", " << y << ", " << width << ", " << height << ")"); // NOLINT 82 virtual GLuint CreateProgram() OVERRIDE;
186 if (width < 0) { 83
187 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "width < 0"); 84 virtual GLuint CreateShader(GLenum type) OVERRIDE;
188 return; 85
189 } 86 virtual void CullFace(GLenum mode) OVERRIDE;
190 if (height < 0) { 87
191 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0"); 88 virtual void DeleteBuffers(GLsizei n, const GLuint* buffers) OVERRIDE;
192 return; 89
193 } 90 virtual void DeleteFramebuffers(
194 helper_->CopyTexSubImage2D( 91 GLsizei n, const GLuint* framebuffers) OVERRIDE;
195 target, level, xoffset, yoffset, x, y, width, height); 92
196 } 93 virtual void DeleteProgram(GLuint program) OVERRIDE;
197 94
198 GLuint CreateProgram() { 95 virtual void DeleteRenderbuffers(
199 GPU_CLIENT_SINGLE_THREAD_CHECK(); 96 GLsizei n, const GLuint* renderbuffers) OVERRIDE;
200 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateProgram(" << ")"); 97
201 GLuint client_id; 98 virtual void DeleteShader(GLuint shader) OVERRIDE;
202 GetIdHandler(id_namespaces::kProgramsAndShaders)-> 99
203 MakeIds(this, 0, 1, &client_id); 100 virtual void DeleteTextures(GLsizei n, const GLuint* textures) OVERRIDE;
204 helper_->CreateProgram(client_id); 101
205 GPU_CLIENT_LOG("returned " << client_id); 102 virtual void DepthFunc(GLenum func) OVERRIDE;
206 return client_id; 103
207 } 104 virtual void DepthMask(GLboolean flag) OVERRIDE;
208 105
209 GLuint CreateShader(GLenum type) { 106 virtual void DepthRangef(GLclampf zNear, GLclampf zFar) OVERRIDE;
210 GPU_CLIENT_SINGLE_THREAD_CHECK(); 107
211 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateShader(" << GLES2Util::GetS tringShaderType(type) << ")"); // NOLINT 108 virtual void DetachShader(GLuint program, GLuint shader) OVERRIDE;
212 GLuint client_id; 109
213 GetIdHandler(id_namespaces::kProgramsAndShaders)-> 110 virtual void Disable(GLenum cap) OVERRIDE;
214 MakeIds(this, 0, 1, &client_id); 111
215 helper_->CreateShader(type, client_id); 112 virtual void DrawArrays(GLenum mode, GLint first, GLsizei count) OVERRIDE;
216 GPU_CLIENT_LOG("returned " << client_id); 113
217 return client_id; 114 virtual void DrawElements(
218 } 115 GLenum mode, GLsizei count, GLenum type, const void* indices) OVERRIDE;
219 116
220 void CullFace(GLenum mode) { 117 virtual void Enable(GLenum cap) OVERRIDE;
221 GPU_CLIENT_SINGLE_THREAD_CHECK(); 118
222 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCullFace(" << GLES2Util::GetStrin gFaceType(mode) << ")"); // NOLINT 119 virtual void Finish() OVERRIDE;
223 helper_->CullFace(mode); 120
224 } 121 virtual void Flush() OVERRIDE;
225 122
226 void DeleteBuffers(GLsizei n, const GLuint* buffers) { 123 virtual void ShallowFlushCHROMIUM() OVERRIDE;
227 GPU_CLIENT_SINGLE_THREAD_CHECK(); 124
228 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteBuffers(" << n << ", " << s tatic_cast<const void*>(buffers) << ")"); // NOLINT 125 virtual void FramebufferRenderbuffer(
229 GPU_CLIENT_LOG_CODE_BLOCK({
230 for (GLsizei i = 0; i < n; ++i) {
231 GPU_CLIENT_LOG(" " << i << ": " << buffers[i]);
232 }
233 });
234 GPU_CLIENT_DCHECK_CODE_BLOCK({
235 for (GLsizei i = 0; i < n; ++i) {
236 GPU_DCHECK(buffers[i] != 0);
237 }
238 });
239 if (n < 0) {
240 SetGLError(GL_INVALID_VALUE, "glDeleteBuffers", "n < 0");
241 return;
242 }
243 DeleteBuffersHelper(n, buffers);
244 }
245
246 void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
247 GPU_CLIENT_SINGLE_THREAD_CHECK();
248 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteFramebuffers(" << n << ", " << static_cast<const void*>(framebuffers) << ")"); // NOLINT
249 GPU_CLIENT_LOG_CODE_BLOCK({
250 for (GLsizei i = 0; i < n; ++i) {
251 GPU_CLIENT_LOG(" " << i << ": " << framebuffers[i]);
252 }
253 });
254 GPU_CLIENT_DCHECK_CODE_BLOCK({
255 for (GLsizei i = 0; i < n; ++i) {
256 GPU_DCHECK(framebuffers[i] != 0);
257 }
258 });
259 if (n < 0) {
260 SetGLError(GL_INVALID_VALUE, "glDeleteFramebuffers", "n < 0");
261 return;
262 }
263 DeleteFramebuffersHelper(n, framebuffers);
264 }
265
266 void DeleteProgram(GLuint program) {
267 GPU_CLIENT_SINGLE_THREAD_CHECK();
268 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteProgram(" << program << ")" ); // NOLINT
269 GPU_CLIENT_DCHECK(program != 0);
270 DeleteProgramHelper(program);
271 }
272
273 void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
274 GPU_CLIENT_SINGLE_THREAD_CHECK();
275 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteRenderbuffers(" << n << ", " << static_cast<const void*>(renderbuffers) << ")"); // NOLINT
276 GPU_CLIENT_LOG_CODE_BLOCK({
277 for (GLsizei i = 0; i < n; ++i) {
278 GPU_CLIENT_LOG(" " << i << ": " << renderbuffers[i]);
279 }
280 });
281 GPU_CLIENT_DCHECK_CODE_BLOCK({
282 for (GLsizei i = 0; i < n; ++i) {
283 GPU_DCHECK(renderbuffers[i] != 0);
284 }
285 });
286 if (n < 0) {
287 SetGLError(GL_INVALID_VALUE, "glDeleteRenderbuffers", "n < 0");
288 return;
289 }
290 DeleteRenderbuffersHelper(n, renderbuffers);
291 }
292
293 void DeleteShader(GLuint shader) {
294 GPU_CLIENT_SINGLE_THREAD_CHECK();
295 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteShader(" << shader << ")");
296 GPU_CLIENT_DCHECK(shader != 0);
297 DeleteShaderHelper(shader);
298 }
299
300 void DeleteTextures(GLsizei n, const GLuint* textures) {
301 GPU_CLIENT_SINGLE_THREAD_CHECK();
302 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteTextures(" << n << ", " << static_cast<const void*>(textures) << ")"); // NOLINT
303 GPU_CLIENT_LOG_CODE_BLOCK({
304 for (GLsizei i = 0; i < n; ++i) {
305 GPU_CLIENT_LOG(" " << i << ": " << textures[i]);
306 }
307 });
308 GPU_CLIENT_DCHECK_CODE_BLOCK({
309 for (GLsizei i = 0; i < n; ++i) {
310 GPU_DCHECK(textures[i] != 0);
311 }
312 });
313 if (n < 0) {
314 SetGLError(GL_INVALID_VALUE, "glDeleteTextures", "n < 0");
315 return;
316 }
317 DeleteTexturesHelper(n, textures);
318 }
319
320 void DepthFunc(GLenum func) {
321 GPU_CLIENT_SINGLE_THREAD_CHECK();
322 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthFunc(" << GLES2Util::GetStri ngCmpFunction(func) << ")"); // NOLINT
323 helper_->DepthFunc(func);
324 }
325
326 void DepthMask(GLboolean flag) {
327 GPU_CLIENT_SINGLE_THREAD_CHECK();
328 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthMask(" << GLES2Util::GetStri ngBool(flag) << ")"); // NOLINT
329 helper_->DepthMask(flag);
330 }
331
332 void DepthRangef(GLclampf zNear, GLclampf zFar) {
333 GPU_CLIENT_SINGLE_THREAD_CHECK();
334 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthRangef(" << zNear << ", " << zFar << ")"); // NOLINT
335 helper_->DepthRangef(zNear, zFar);
336 }
337
338 void DetachShader(GLuint program, GLuint shader) {
339 GPU_CLIENT_SINGLE_THREAD_CHECK();
340 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDetachShader(" << program << ", " << shader << ")"); // NOLINT
341 helper_->DetachShader(program, shader);
342 }
343
344 void Disable(GLenum cap);
345
346 void DrawArrays(GLenum mode, GLint first, GLsizei count);
347
348 void DrawElements(
349 GLenum mode, GLsizei count, GLenum type, const void* indices);
350
351 void Enable(GLenum cap);
352
353 void Finish();
354
355 void Flush();
356
357 void ShallowFlushCHROMIUM();
358
359 void FramebufferRenderbuffer(
360 GLenum target, GLenum attachment, GLenum renderbuffertarget, 126 GLenum target, GLenum attachment, GLenum renderbuffertarget,
361 GLuint renderbuffer) { 127 GLuint renderbuffer) OVERRIDE;
362 GPU_CLIENT_SINGLE_THREAD_CHECK(); 128
363 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferRenderbuffer(" << GLES 2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachm ent(attachment) << ", " << GLES2Util::GetStringRenderBufferTarget(renderbufferta rget) << ", " << renderbuffer << ")"); // NOLINT 129 virtual void FramebufferTexture2D(
364 helper_->FramebufferRenderbuffer(
365 target, attachment, renderbuffertarget, renderbuffer);
366 }
367
368 void FramebufferTexture2D(
369 GLenum target, GLenum attachment, GLenum textarget, GLuint texture, 130 GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
370 GLint level) { 131 GLint level) OVERRIDE;
371 GPU_CLIENT_SINGLE_THREAD_CHECK(); 132
372 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferTexture2D(" << GLES2Ut il::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachment (attachment) << ", " << GLES2Util::GetStringTextureTarget(textarget) << ", " << texture << ", " << level << ")"); // NOLINT 133 virtual void FrontFace(GLenum mode) OVERRIDE;
373 helper_->FramebufferTexture2D(target, attachment, textarget, texture, level); 134
374 } 135 virtual void GenBuffers(GLsizei n, GLuint* buffers) OVERRIDE;
375 136
376 void FrontFace(GLenum mode) { 137 virtual void GenerateMipmap(GLenum target) OVERRIDE;
377 GPU_CLIENT_SINGLE_THREAD_CHECK(); 138
378 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFrontFace(" << GLES2Util::GetStri ngFaceMode(mode) << ")"); // NOLINT 139 virtual void GenFramebuffers(GLsizei n, GLuint* framebuffers) OVERRIDE;
379 helper_->FrontFace(mode); 140
380 } 141 virtual void GenRenderbuffers(GLsizei n, GLuint* renderbuffers) OVERRIDE;
381 142
382 void GenBuffers(GLsizei n, GLuint* buffers) { 143 virtual void GenTextures(GLsizei n, GLuint* textures) OVERRIDE;
383 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenBuffers(" << n << ", " << stat ic_cast<const void*>(buffers) << ")"); // NOLINT 144
384 if (n < 0) { 145 virtual void GetActiveAttrib(
385 SetGLError(GL_INVALID_VALUE, "glGenBuffers", "n < 0");
386 return;
387 }
388 GPU_CLIENT_SINGLE_THREAD_CHECK();
389 GetIdHandler(id_namespaces::kBuffers)->
390 MakeIds(this, 0, n, buffers);
391 helper_->GenBuffersImmediate(n, buffers);
392 GPU_CLIENT_LOG_CODE_BLOCK({
393 for (GLsizei i = 0; i < n; ++i) {
394 GPU_CLIENT_LOG(" " << i << ": " << buffers[i]);
395 }
396 });
397 }
398
399 void GenerateMipmap(GLenum target) {
400 GPU_CLIENT_SINGLE_THREAD_CHECK();
401 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenerateMipmap(" << GLES2Util::Ge tStringTextureBindTarget(target) << ")"); // NOLINT
402 helper_->GenerateMipmap(target);
403 }
404
405 void GenFramebuffers(GLsizei n, GLuint* framebuffers) {
406 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenFramebuffers(" << n << ", " << static_cast<const void*>(framebuffers) << ")"); // NOLINT
407 if (n < 0) {
408 SetGLError(GL_INVALID_VALUE, "glGenFramebuffers", "n < 0");
409 return;
410 }
411 GPU_CLIENT_SINGLE_THREAD_CHECK();
412 GetIdHandler(id_namespaces::kFramebuffers)->
413 MakeIds(this, 0, n, framebuffers);
414 helper_->GenFramebuffersImmediate(n, framebuffers);
415 GPU_CLIENT_LOG_CODE_BLOCK({
416 for (GLsizei i = 0; i < n; ++i) {
417 GPU_CLIENT_LOG(" " << i << ": " << framebuffers[i]);
418 }
419 });
420 }
421
422 void GenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
423 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenRenderbuffers(" << n << ", " < < static_cast<const void*>(renderbuffers) << ")"); // NOLINT
424 if (n < 0) {
425 SetGLError(GL_INVALID_VALUE, "glGenRenderbuffers", "n < 0");
426 return;
427 }
428 GPU_CLIENT_SINGLE_THREAD_CHECK();
429 GetIdHandler(id_namespaces::kRenderbuffers)->
430 MakeIds(this, 0, n, renderbuffers);
431 helper_->GenRenderbuffersImmediate(n, renderbuffers);
432 GPU_CLIENT_LOG_CODE_BLOCK({
433 for (GLsizei i = 0; i < n; ++i) {
434 GPU_CLIENT_LOG(" " << i << ": " << renderbuffers[i]);
435 }
436 });
437 }
438
439 void GenTextures(GLsizei n, GLuint* textures) {
440 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenTextures(" << n << ", " << sta tic_cast<const void*>(textures) << ")"); // NOLINT
441 if (n < 0) {
442 SetGLError(GL_INVALID_VALUE, "glGenTextures", "n < 0");
443 return;
444 }
445 GPU_CLIENT_SINGLE_THREAD_CHECK();
446 GetIdHandler(id_namespaces::kTextures)->
447 MakeIds(this, 0, n, textures);
448 helper_->GenTexturesImmediate(n, textures);
449 GPU_CLIENT_LOG_CODE_BLOCK({
450 for (GLsizei i = 0; i < n; ++i) {
451 GPU_CLIENT_LOG(" " << i << ": " << textures[i]);
452 }
453 });
454 }
455
456 void GetActiveAttrib(
457 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, 146 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
458 GLenum* type, char* name); 147 GLenum* type, char* name) OVERRIDE;
459 148
460 void GetActiveUniform( 149 virtual void GetActiveUniform(
461 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, 150 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
462 GLenum* type, char* name); 151 GLenum* type, char* name) OVERRIDE;
463 152
464 void GetAttachedShaders( 153 virtual void GetAttachedShaders(
465 GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); 154 GLuint program, GLsizei maxcount, GLsizei* count,
466 155 GLuint* shaders) OVERRIDE;
467 GLint GetAttribLocation(GLuint program, const char* name); 156
468 157 virtual GLint GetAttribLocation(GLuint program, const char* name) OVERRIDE;
469 void GetBooleanv(GLenum pname, GLboolean* params) { 158
470 GPU_CLIENT_SINGLE_THREAD_CHECK(); 159 virtual void GetBooleanv(GLenum pname, GLboolean* params) OVERRIDE;
471 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLboolean, params); 160
472 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetBooleanv(" << GLES2Util::GetSt ringGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLI NT 161 virtual void GetBufferParameteriv(
473 if (GetBooleanvHelper(pname, params)) { 162 GLenum target, GLenum pname, GLint* params) OVERRIDE;
474 return; 163
475 } 164 virtual GLenum GetError() OVERRIDE;
476 typedef GetBooleanv::Result Result; 165
477 Result* result = GetResultAs<Result*>(); 166 virtual void GetFloatv(GLenum pname, GLfloat* params) OVERRIDE;
478 if (!result) { 167
479 return; 168 virtual void GetFramebufferAttachmentParameteriv(
480 } 169 GLenum target, GLenum attachment, GLenum pname, GLint* params) OVERRIDE;
481 result->SetNumResults(0); 170
482 helper_->GetBooleanv(pname, 171 virtual void GetIntegerv(GLenum pname, GLint* params) OVERRIDE;
483 GetResultShmId(), GetResultShmOffset()); 172
484 WaitForCmd(); 173 virtual void GetProgramiv(
485 result->CopyResult(params); 174 GLuint program, GLenum pname, GLint* params) OVERRIDE;
486 GPU_CLIENT_LOG_CODE_BLOCK({ 175
487 for (int32 i = 0; i < result->GetNumResults(); ++i) { 176 virtual void GetProgramInfoLog(
488 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); 177 GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) OVERRIDE;
489 } 178
490 }); 179 virtual void GetRenderbufferParameteriv(
491 } 180 GLenum target, GLenum pname, GLint* params) OVERRIDE;
492 void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params) { 181
493 GPU_CLIENT_SINGLE_THREAD_CHECK(); 182 virtual void GetShaderiv(GLuint shader, GLenum pname, GLint* params) OVERRIDE;
494 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params); 183
495 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetBufferParameteriv(" << GLES2Ut il::GetStringBufferTarget(target) << ", " << GLES2Util::GetStringBufferParameter (pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT 184 virtual void GetShaderInfoLog(
496 if (GetBufferParameterivHelper(target, pname, params)) { 185 GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) OVERRIDE;
497 return; 186
498 } 187 virtual void GetShaderPrecisionFormat(
499 typedef GetBufferParameteriv::Result Result; 188 GLenum shadertype, GLenum precisiontype, GLint* range,
500 Result* result = GetResultAs<Result*>(); 189 GLint* precision) OVERRIDE;
501 if (!result) { 190
502 return; 191 virtual void GetShaderSource(
503 } 192 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) OVERRIDE;
504 result->SetNumResults(0); 193
505 helper_->GetBufferParameteriv(target, pname, 194 virtual const GLubyte* GetString(GLenum name) OVERRIDE;
506 GetResultShmId(), GetResultShmOffset()); 195
507 WaitForCmd(); 196 virtual void GetTexParameterfv(
508 result->CopyResult(params); 197 GLenum target, GLenum pname, GLfloat* params) OVERRIDE;
509 GPU_CLIENT_LOG_CODE_BLOCK({ 198
510 for (int32 i = 0; i < result->GetNumResults(); ++i) { 199 virtual void GetTexParameteriv(
511 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); 200 GLenum target, GLenum pname, GLint* params) OVERRIDE;
512 } 201
513 }); 202 virtual void GetUniformfv(
514 } 203 GLuint program, GLint location, GLfloat* params) OVERRIDE;
515 GLenum GetError(); 204
516 205 virtual void GetUniformiv(
517 void GetFloatv(GLenum pname, GLfloat* params) { 206 GLuint program, GLint location, GLint* params) OVERRIDE;
518 GPU_CLIENT_SINGLE_THREAD_CHECK(); 207
519 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetFloatv(" << GLES2Util::GetStri ngGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT 208 virtual GLint GetUniformLocation(GLuint program, const char* name) OVERRIDE;
520 if (GetFloatvHelper(pname, params)) { 209
521 return; 210 virtual void GetVertexAttribPointerv(
522 } 211 GLuint index, GLenum pname, void** pointer) OVERRIDE;
523 typedef GetFloatv::Result Result; 212
524 Result* result = GetResultAs<Result*>(); 213 virtual void Hint(GLenum target, GLenum mode) OVERRIDE;
525 if (!result) { 214
526 return; 215 virtual GLboolean IsBuffer(GLuint buffer) OVERRIDE;
527 } 216
528 result->SetNumResults(0); 217 virtual GLboolean IsEnabled(GLenum cap) OVERRIDE;
529 helper_->GetFloatv(pname, 218
530 GetResultShmId(), GetResultShmOffset()); 219 virtual GLboolean IsFramebuffer(GLuint framebuffer) OVERRIDE;
531 WaitForCmd(); 220
532 result->CopyResult(params); 221 virtual GLboolean IsProgram(GLuint program) OVERRIDE;
533 GPU_CLIENT_LOG_CODE_BLOCK({ 222
534 for (int32 i = 0; i < result->GetNumResults(); ++i) { 223 virtual GLboolean IsRenderbuffer(GLuint renderbuffer) OVERRIDE;
535 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); 224
536 } 225 virtual GLboolean IsShader(GLuint shader) OVERRIDE;
537 }); 226
538 } 227 virtual GLboolean IsTexture(GLuint texture) OVERRIDE;
539 void GetFramebufferAttachmentParameteriv( 228
540 GLenum target, GLenum attachment, GLenum pname, GLint* params) { 229 virtual void LineWidth(GLfloat width) OVERRIDE;
541 GPU_CLIENT_SINGLE_THREAD_CHECK(); 230
542 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params); 231 virtual void LinkProgram(GLuint program) OVERRIDE;
543 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetFramebufferAttachmentParameter iv(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetS tringAttachment(attachment) << ", " << GLES2Util::GetStringFrameBufferParameter( pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT 232
544 if (GetFramebufferAttachmentParameterivHelper( 233 virtual void PixelStorei(GLenum pname, GLint param) OVERRIDE;
545 target, attachment, pname, params)) { 234
546 return; 235 virtual void PolygonOffset(GLfloat factor, GLfloat units) OVERRIDE;
547 } 236
548 typedef GetFramebufferAttachmentParameteriv::Result Result; 237 virtual void ReadPixels(
549 Result* result = GetResultAs<Result*>();
550 if (!result) {
551 return;
552 }
553 result->SetNumResults(0);
554 helper_->GetFramebufferAttachmentParameteriv(target, attachment, pname,
555 GetResultShmId(), GetResultShmOffset());
556 WaitForCmd();
557 result->CopyResult(params);
558 GPU_CLIENT_LOG_CODE_BLOCK({
559 for (int32 i = 0; i < result->GetNumResults(); ++i) {
560 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
561 }
562 });
563 }
564 void GetIntegerv(GLenum pname, GLint* params) {
565 GPU_CLIENT_SINGLE_THREAD_CHECK();
566 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
567 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetIntegerv(" << GLES2Util::GetSt ringGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLI NT
568 if (GetIntegervHelper(pname, params)) {
569 return;
570 }
571 typedef GetIntegerv::Result Result;
572 Result* result = GetResultAs<Result*>();
573 if (!result) {
574 return;
575 }
576 result->SetNumResults(0);
577 helper_->GetIntegerv(pname,
578 GetResultShmId(), GetResultShmOffset());
579 WaitForCmd();
580 result->CopyResult(params);
581 GPU_CLIENT_LOG_CODE_BLOCK({
582 for (int32 i = 0; i < result->GetNumResults(); ++i) {
583 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
584 }
585 });
586 }
587 void GetProgramiv(GLuint program, GLenum pname, GLint* params) {
588 GPU_CLIENT_SINGLE_THREAD_CHECK();
589 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
590 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetProgramiv(" << program << ", " << GLES2Util::GetStringProgramParameter(pname) << ", " << static_cast<const voi d*>(params) << ")"); // NOLINT
591 if (GetProgramivHelper(program, pname, params)) {
592 return;
593 }
594 typedef GetProgramiv::Result Result;
595 Result* result = GetResultAs<Result*>();
596 if (!result) {
597 return;
598 }
599 result->SetNumResults(0);
600 helper_->GetProgramiv(program, pname,
601 GetResultShmId(), GetResultShmOffset());
602 WaitForCmd();
603 result->CopyResult(params);
604 GPU_CLIENT_LOG_CODE_BLOCK({
605 for (int32 i = 0; i < result->GetNumResults(); ++i) {
606 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
607 }
608 });
609 }
610 void GetProgramInfoLog(
611 GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) {
612 GPU_CLIENT_SINGLE_THREAD_CHECK();
613 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
614 GPU_CLIENT_LOG("[" << GetLogPrefix()
615 << "] glGetProgramInfoLog" << "("
616 << program << ", "
617 << bufsize << ", "
618 << static_cast<void*>(length) << ", "
619 << static_cast<void*>(infolog) << ")");
620 helper_->SetBucketSize(kResultBucketId, 0);
621 helper_->GetProgramInfoLog(program, kResultBucketId);
622 std::string str;
623 GLsizei max_size = 0;
624 if (GetBucketAsString(kResultBucketId, &str)) {
625 if (bufsize > 0) {
626 max_size =
627 std::min(static_cast<size_t>(bufsize) - 1, str.size());
628 memcpy(infolog, str.c_str(), max_size);
629 infolog[max_size] = '\0';
630 GPU_CLIENT_LOG("------\n" << infolog << "\n------");
631 }
632 }
633 if (length != NULL) {
634 *length = max_size;
635 }
636 }
637 void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) {
638 GPU_CLIENT_SINGLE_THREAD_CHECK();
639 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
640 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetRenderbufferParameteriv(" << G LES2Util::GetStringRenderBufferTarget(target) << ", " << GLES2Util::GetStringRen derBufferParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
641 if (GetRenderbufferParameterivHelper(target, pname, params)) {
642 return;
643 }
644 typedef GetRenderbufferParameteriv::Result Result;
645 Result* result = GetResultAs<Result*>();
646 if (!result) {
647 return;
648 }
649 result->SetNumResults(0);
650 helper_->GetRenderbufferParameteriv(target, pname,
651 GetResultShmId(), GetResultShmOffset());
652 WaitForCmd();
653 result->CopyResult(params);
654 GPU_CLIENT_LOG_CODE_BLOCK({
655 for (int32 i = 0; i < result->GetNumResults(); ++i) {
656 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
657 }
658 });
659 }
660 void GetShaderiv(GLuint shader, GLenum pname, GLint* params) {
661 GPU_CLIENT_SINGLE_THREAD_CHECK();
662 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
663 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetShaderiv(" << shader << ", " < < GLES2Util::GetStringShaderParameter(pname) << ", " << static_cast<const void*> (params) << ")"); // NOLINT
664 if (GetShaderivHelper(shader, pname, params)) {
665 return;
666 }
667 typedef GetShaderiv::Result Result;
668 Result* result = GetResultAs<Result*>();
669 if (!result) {
670 return;
671 }
672 result->SetNumResults(0);
673 helper_->GetShaderiv(shader, pname,
674 GetResultShmId(), GetResultShmOffset());
675 WaitForCmd();
676 result->CopyResult(params);
677 GPU_CLIENT_LOG_CODE_BLOCK({
678 for (int32 i = 0; i < result->GetNumResults(); ++i) {
679 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
680 }
681 });
682 }
683 void GetShaderInfoLog(
684 GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) {
685 GPU_CLIENT_SINGLE_THREAD_CHECK();
686 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
687 GPU_CLIENT_LOG("[" << GetLogPrefix()
688 << "] glGetShaderInfoLog" << "("
689 << shader << ", "
690 << bufsize << ", "
691 << static_cast<void*>(length) << ", "
692 << static_cast<void*>(infolog) << ")");
693 helper_->SetBucketSize(kResultBucketId, 0);
694 helper_->GetShaderInfoLog(shader, kResultBucketId);
695 std::string str;
696 GLsizei max_size = 0;
697 if (GetBucketAsString(kResultBucketId, &str)) {
698 if (bufsize > 0) {
699 max_size =
700 std::min(static_cast<size_t>(bufsize) - 1, str.size());
701 memcpy(infolog, str.c_str(), max_size);
702 infolog[max_size] = '\0';
703 GPU_CLIENT_LOG("------\n" << infolog << "\n------");
704 }
705 }
706 if (length != NULL) {
707 *length = max_size;
708 }
709 }
710 void GetShaderPrecisionFormat(
711 GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
712
713 void GetShaderSource(
714 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) {
715 GPU_CLIENT_SINGLE_THREAD_CHECK();
716 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
717 GPU_CLIENT_LOG("[" << GetLogPrefix()
718 << "] glGetShaderSource" << "("
719 << shader << ", "
720 << bufsize << ", "
721 << static_cast<void*>(length) << ", "
722 << static_cast<void*>(source) << ")");
723 helper_->SetBucketSize(kResultBucketId, 0);
724 helper_->GetShaderSource(shader, kResultBucketId);
725 std::string str;
726 GLsizei max_size = 0;
727 if (GetBucketAsString(kResultBucketId, &str)) {
728 if (bufsize > 0) {
729 max_size =
730 std::min(static_cast<size_t>(bufsize) - 1, str.size());
731 memcpy(source, str.c_str(), max_size);
732 source[max_size] = '\0';
733 GPU_CLIENT_LOG("------\n" << source << "\n------");
734 }
735 }
736 if (length != NULL) {
737 *length = max_size;
738 }
739 }
740 const GLubyte* GetString(GLenum name);
741
742 void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) {
743 GPU_CLIENT_SINGLE_THREAD_CHECK();
744 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetTexParameterfv(" << GLES2Util: :GetStringGetTexParamTarget(target) << ", " << GLES2Util::GetStringTextureParame ter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
745 if (GetTexParameterfvHelper(target, pname, params)) {
746 return;
747 }
748 typedef GetTexParameterfv::Result Result;
749 Result* result = GetResultAs<Result*>();
750 if (!result) {
751 return;
752 }
753 result->SetNumResults(0);
754 helper_->GetTexParameterfv(target, pname,
755 GetResultShmId(), GetResultShmOffset());
756 WaitForCmd();
757 result->CopyResult(params);
758 GPU_CLIENT_LOG_CODE_BLOCK({
759 for (int32 i = 0; i < result->GetNumResults(); ++i) {
760 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
761 }
762 });
763 }
764 void GetTexParameteriv(GLenum target, GLenum pname, GLint* params) {
765 GPU_CLIENT_SINGLE_THREAD_CHECK();
766 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
767 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetTexParameteriv(" << GLES2Util: :GetStringGetTexParamTarget(target) << ", " << GLES2Util::GetStringTextureParame ter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
768 if (GetTexParameterivHelper(target, pname, params)) {
769 return;
770 }
771 typedef GetTexParameteriv::Result Result;
772 Result* result = GetResultAs<Result*>();
773 if (!result) {
774 return;
775 }
776 result->SetNumResults(0);
777 helper_->GetTexParameteriv(target, pname,
778 GetResultShmId(), GetResultShmOffset());
779 WaitForCmd();
780 result->CopyResult(params);
781 GPU_CLIENT_LOG_CODE_BLOCK({
782 for (int32 i = 0; i < result->GetNumResults(); ++i) {
783 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
784 }
785 });
786 }
787 void GetUniformfv(GLuint program, GLint location, GLfloat* params);
788
789 void GetUniformiv(GLuint program, GLint location, GLint* params);
790
791 GLint GetUniformLocation(GLuint program, const char* name);
792
793 void GetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer);
794
795 void Hint(GLenum target, GLenum mode) {
796 GPU_CLIENT_SINGLE_THREAD_CHECK();
797 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glHint(" << GLES2Util::GetStringHin tTarget(target) << ", " << GLES2Util::GetStringHintMode(mode) << ")"); // NOLIN T
798 helper_->Hint(target, mode);
799 }
800
801 GLboolean IsBuffer(GLuint buffer) {
802 GPU_CLIENT_SINGLE_THREAD_CHECK();
803 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsBuffer(" << buffer << ")");
804 typedef IsBuffer::Result Result;
805 Result* result = GetResultAs<Result*>();
806 if (!result) {
807 return GL_FALSE;
808 }
809 *result = 0;
810 helper_->IsBuffer(buffer, GetResultShmId(), GetResultShmOffset());
811 WaitForCmd();
812 GPU_CLIENT_LOG("returned " << *result);
813 return *result;
814 }
815
816 GLboolean IsEnabled(GLenum cap);
817
818 GLboolean IsFramebuffer(GLuint framebuffer) {
819 GPU_CLIENT_SINGLE_THREAD_CHECK();
820 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsFramebuffer(" << framebuffer << ")"); // NOLINT
821 typedef IsFramebuffer::Result Result;
822 Result* result = GetResultAs<Result*>();
823 if (!result) {
824 return GL_FALSE;
825 }
826 *result = 0;
827 helper_->IsFramebuffer(framebuffer, GetResultShmId(), GetResultShmOffset());
828 WaitForCmd();
829 GPU_CLIENT_LOG("returned " << *result);
830 return *result;
831 }
832
833 GLboolean IsProgram(GLuint program) {
834 GPU_CLIENT_SINGLE_THREAD_CHECK();
835 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsProgram(" << program << ")");
836 typedef IsProgram::Result Result;
837 Result* result = GetResultAs<Result*>();
838 if (!result) {
839 return GL_FALSE;
840 }
841 *result = 0;
842 helper_->IsProgram(program, GetResultShmId(), GetResultShmOffset());
843 WaitForCmd();
844 GPU_CLIENT_LOG("returned " << *result);
845 return *result;
846 }
847
848 GLboolean IsRenderbuffer(GLuint renderbuffer) {
849 GPU_CLIENT_SINGLE_THREAD_CHECK();
850 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsRenderbuffer(" << renderbuffer << ")"); // NOLINT
851 typedef IsRenderbuffer::Result Result;
852 Result* result = GetResultAs<Result*>();
853 if (!result) {
854 return GL_FALSE;
855 }
856 *result = 0;
857 helper_->IsRenderbuffer(
858 renderbuffer, GetResultShmId(), GetResultShmOffset());
859 WaitForCmd();
860 GPU_CLIENT_LOG("returned " << *result);
861 return *result;
862 }
863
864 GLboolean IsShader(GLuint shader) {
865 GPU_CLIENT_SINGLE_THREAD_CHECK();
866 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsShader(" << shader << ")");
867 typedef IsShader::Result Result;
868 Result* result = GetResultAs<Result*>();
869 if (!result) {
870 return GL_FALSE;
871 }
872 *result = 0;
873 helper_->IsShader(shader, GetResultShmId(), GetResultShmOffset());
874 WaitForCmd();
875 GPU_CLIENT_LOG("returned " << *result);
876 return *result;
877 }
878
879 GLboolean IsTexture(GLuint texture) {
880 GPU_CLIENT_SINGLE_THREAD_CHECK();
881 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsTexture(" << texture << ")");
882 typedef IsTexture::Result Result;
883 Result* result = GetResultAs<Result*>();
884 if (!result) {
885 return GL_FALSE;
886 }
887 *result = 0;
888 helper_->IsTexture(texture, GetResultShmId(), GetResultShmOffset());
889 WaitForCmd();
890 GPU_CLIENT_LOG("returned " << *result);
891 return *result;
892 }
893
894 void LineWidth(GLfloat width) {
895 GPU_CLIENT_SINGLE_THREAD_CHECK();
896 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glLineWidth(" << width << ")");
897 helper_->LineWidth(width);
898 }
899
900 void LinkProgram(GLuint program);
901
902 void PixelStorei(GLenum pname, GLint param);
903
904 void PolygonOffset(GLfloat factor, GLfloat units) {
905 GPU_CLIENT_SINGLE_THREAD_CHECK();
906 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPolygonOffset(" << factor << ", " << units << ")"); // NOLINT
907 helper_->PolygonOffset(factor, units);
908 }
909
910 void ReadPixels(
911 GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, 238 GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
912 void* pixels); 239 void* pixels) OVERRIDE;
913 240
914 void ReleaseShaderCompiler() { 241 virtual void ReleaseShaderCompiler() OVERRIDE;
915 GPU_CLIENT_SINGLE_THREAD_CHECK(); 242
916 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReleaseShaderCompiler(" << ")"); 243 virtual void RenderbufferStorage(
917 helper_->ReleaseShaderCompiler(); 244 GLenum target, GLenum internalformat, GLsizei width,
918 } 245 GLsizei height) OVERRIDE;
919 246
920 void RenderbufferStorage( 247 virtual void SampleCoverage(GLclampf value, GLboolean invert) OVERRIDE;
921 GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { 248
922 GPU_CLIENT_SINGLE_THREAD_CHECK(); 249 virtual void Scissor(GLint x, GLint y, GLsizei width, GLsizei height) OVERRIDE;
923 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRenderbufferStorage(" << GLES2Uti l::GetStringRenderBufferTarget(target) << ", " << GLES2Util::GetStringRenderBuff erFormat(internalformat) << ", " << width << ", " << height << ")"); // NOLINT 250
924 if (width < 0) { 251 virtual void ShaderBinary(
925 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "width < 0");
926 return;
927 }
928 if (height < 0) {
929 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "height < 0");
930 return;
931 }
932 helper_->RenderbufferStorage(target, internalformat, width, height);
933 }
934
935 void SampleCoverage(GLclampf value, GLboolean invert) {
936 GPU_CLIENT_SINGLE_THREAD_CHECK();
937 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSampleCoverage(" << value << ", " << GLES2Util::GetStringBool(invert) << ")"); // NOLINT
938 helper_->SampleCoverage(value, invert);
939 }
940
941 void Scissor(GLint x, GLint y, GLsizei width, GLsizei height) {
942 GPU_CLIENT_SINGLE_THREAD_CHECK();
943 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glScissor(" << x << ", " << y << ", " << width << ", " << height << ")"); // NOLINT
944 if (width < 0) {
945 SetGLError(GL_INVALID_VALUE, "glScissor", "width < 0");
946 return;
947 }
948 if (height < 0) {
949 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0");
950 return;
951 }
952 helper_->Scissor(x, y, width, height);
953 }
954
955 void ShaderBinary(
956 GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, 252 GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary,
957 GLsizei length); 253 GLsizei length) OVERRIDE;
958 254
959 void ShaderSource( 255 virtual void ShaderSource(
960 GLuint shader, GLsizei count, const char** str, const GLint* length); 256 GLuint shader, GLsizei count, const char** str,
961 257 const GLint* length) OVERRIDE;
962 void StencilFunc(GLenum func, GLint ref, GLuint mask) { 258
963 GPU_CLIENT_SINGLE_THREAD_CHECK(); 259 virtual void StencilFunc(GLenum func, GLint ref, GLuint mask) OVERRIDE;
964 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFunc(" << GLES2Util::GetSt ringCmpFunction(func) << ", " << ref << ", " << mask << ")"); // NOLINT 260
965 helper_->StencilFunc(func, ref, mask); 261 virtual void StencilFuncSeparate(
966 } 262 GLenum face, GLenum func, GLint ref, GLuint mask) OVERRIDE;
967 263
968 void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { 264 virtual void StencilMask(GLuint mask) OVERRIDE;
969 GPU_CLIENT_SINGLE_THREAD_CHECK(); 265
970 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFuncSeparate(" << GLES2Uti l::GetStringFaceType(face) << ", " << GLES2Util::GetStringCmpFunction(func) << " , " << ref << ", " << mask << ")"); // NOLINT 266 virtual void StencilMaskSeparate(GLenum face, GLuint mask) OVERRIDE;
971 helper_->StencilFuncSeparate(face, func, ref, mask); 267
972 } 268 virtual void StencilOp(GLenum fail, GLenum zfail, GLenum zpass) OVERRIDE;
973 269
974 void StencilMask(GLuint mask) { 270 virtual void StencilOpSeparate(
975 GPU_CLIENT_SINGLE_THREAD_CHECK(); 271 GLenum face, GLenum fail, GLenum zfail, GLenum zpass) OVERRIDE;
976 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilMask(" << mask << ")"); 272
977 helper_->StencilMask(mask); 273 virtual void TexImage2D(
978 }
979
980 void StencilMaskSeparate(GLenum face, GLuint mask) {
981 GPU_CLIENT_SINGLE_THREAD_CHECK();
982 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilMaskSeparate(" << GLES2Uti l::GetStringFaceType(face) << ", " << mask << ")"); // NOLINT
983 helper_->StencilMaskSeparate(face, mask);
984 }
985
986 void StencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
987 GPU_CLIENT_SINGLE_THREAD_CHECK();
988 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilOp(" << GLES2Util::GetStri ngStencilOp(fail) << ", " << GLES2Util::GetStringStencilOp(zfail) << ", " << GLE S2Util::GetStringStencilOp(zpass) << ")"); // NOLINT
989 helper_->StencilOp(fail, zfail, zpass);
990 }
991
992 void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
993 GPU_CLIENT_SINGLE_THREAD_CHECK();
994 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilOpSeparate(" << GLES2Util: :GetStringFaceType(face) << ", " << GLES2Util::GetStringStencilOp(fail) << ", " << GLES2Util::GetStringStencilOp(zfail) << ", " << GLES2Util::GetStringStencilOp (zpass) << ")"); // NOLINT
995 helper_->StencilOpSeparate(face, fail, zfail, zpass);
996 }
997
998 void TexImage2D(
999 GLenum target, GLint level, GLint internalformat, GLsizei width, 274 GLenum target, GLint level, GLint internalformat, GLsizei width,
1000 GLsizei height, GLint border, GLenum format, GLenum type, 275 GLsizei height, GLint border, GLenum format, GLenum type,
1001 const void* pixels); 276 const void* pixels) OVERRIDE;
1002 277
1003 void TexParameterf(GLenum target, GLenum pname, GLfloat param) { 278 virtual void TexParameterf(
1004 GPU_CLIENT_SINGLE_THREAD_CHECK(); 279 GLenum target, GLenum pname, GLfloat param) OVERRIDE;
1005 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameterf(" << GLES2Util::Get StringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter( pname) << ", " << param << ")"); // NOLINT 280
1006 helper_->TexParameterf(target, pname, param); 281 virtual void TexParameterfv(
1007 } 282 GLenum target, GLenum pname, const GLfloat* params) OVERRIDE;
1008 283
1009 void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params) { 284 virtual void TexParameteri(GLenum target, GLenum pname, GLint param) OVERRIDE;
1010 GPU_CLIENT_SINGLE_THREAD_CHECK(); 285
1011 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameterfv(" << GLES2Util::Ge tStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter (pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT 286 virtual void TexParameteriv(
1012 GPU_CLIENT_LOG("values: " << params[0]); 287 GLenum target, GLenum pname, const GLint* params) OVERRIDE;
1013 helper_->TexParameterfvImmediate(target, pname, params); 288
1014 } 289 virtual void TexSubImage2D(
1015
1016 void TexParameteri(GLenum target, GLenum pname, GLint param) {
1017 GPU_CLIENT_SINGLE_THREAD_CHECK();
1018 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameteri(" << GLES2Util::Get StringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter( pname) << ", " << param << ")"); // NOLINT
1019 helper_->TexParameteri(target, pname, param);
1020 }
1021
1022 void TexParameteriv(GLenum target, GLenum pname, const GLint* params) {
1023 GPU_CLIENT_SINGLE_THREAD_CHECK();
1024 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameteriv(" << GLES2Util::Ge tStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter (pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
1025 GPU_CLIENT_LOG("values: " << params[0]);
1026 helper_->TexParameterivImmediate(target, pname, params);
1027 }
1028
1029 void TexSubImage2D(
1030 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, 290 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
1031 GLsizei height, GLenum format, GLenum type, const void* pixels); 291 GLsizei height, GLenum format, GLenum type, const void* pixels) OVERRIDE;
1032 292
1033 void Uniform1f(GLint location, GLfloat x) { 293 virtual void Uniform1f(GLint location, GLfloat x) OVERRIDE;
1034 GPU_CLIENT_SINGLE_THREAD_CHECK(); 294
1035 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1f(" << location << ", " < < x << ")"); // NOLINT 295 virtual void Uniform1fv(
1036 helper_->Uniform1f(location, x); 296 GLint location, GLsizei count, const GLfloat* v) OVERRIDE;
1037 } 297
1038 298 virtual void Uniform1i(GLint location, GLint x) OVERRIDE;
1039 void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) { 299
1040 GPU_CLIENT_SINGLE_THREAD_CHECK(); 300 virtual void Uniform1iv(
1041 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT 301 GLint location, GLsizei count, const GLint* v) OVERRIDE;
1042 GPU_CLIENT_LOG_CODE_BLOCK({ 302
1043 for (GLsizei i = 0; i < count; ++i) { 303 virtual void Uniform2f(GLint location, GLfloat x, GLfloat y) OVERRIDE;
1044 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 1]); 304
1045 } 305 virtual void Uniform2fv(
1046 }); 306 GLint location, GLsizei count, const GLfloat* v) OVERRIDE;
1047 if (count < 0) { 307
1048 SetGLError(GL_INVALID_VALUE, "glUniform1fv", "count < 0"); 308 virtual void Uniform2i(GLint location, GLint x, GLint y) OVERRIDE;
1049 return; 309
1050 } 310 virtual void Uniform2iv(
1051 helper_->Uniform1fvImmediate(location, count, v); 311 GLint location, GLsizei count, const GLint* v) OVERRIDE;
1052 } 312
1053 313 virtual void Uniform3f(
1054 void Uniform1i(GLint location, GLint x) { 314 GLint location, GLfloat x, GLfloat y, GLfloat z) OVERRIDE;
1055 GPU_CLIENT_SINGLE_THREAD_CHECK(); 315
1056 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1i(" << location << ", " < < x << ")"); // NOLINT 316 virtual void Uniform3fv(
1057 helper_->Uniform1i(location, x); 317 GLint location, GLsizei count, const GLfloat* v) OVERRIDE;
1058 } 318
1059 319 virtual void Uniform3i(GLint location, GLint x, GLint y, GLint z) OVERRIDE;
1060 void Uniform1iv(GLint location, GLsizei count, const GLint* v) { 320
1061 GPU_CLIENT_SINGLE_THREAD_CHECK(); 321 virtual void Uniform3iv(
1062 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT 322 GLint location, GLsizei count, const GLint* v) OVERRIDE;
1063 GPU_CLIENT_LOG_CODE_BLOCK({ 323
1064 for (GLsizei i = 0; i < count; ++i) { 324 virtual void Uniform4f(
1065 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 1]); 325 GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) OVERRIDE;
1066 } 326
1067 }); 327 virtual void Uniform4fv(
1068 if (count < 0) { 328 GLint location, GLsizei count, const GLfloat* v) OVERRIDE;
1069 SetGLError(GL_INVALID_VALUE, "glUniform1iv", "count < 0"); 329
1070 return; 330 virtual void Uniform4i(
1071 } 331 GLint location, GLint x, GLint y, GLint z, GLint w) OVERRIDE;
1072 helper_->Uniform1ivImmediate(location, count, v); 332
1073 } 333 virtual void Uniform4iv(
1074 334 GLint location, GLsizei count, const GLint* v) OVERRIDE;
1075 void Uniform2f(GLint location, GLfloat x, GLfloat y) { 335
1076 GPU_CLIENT_SINGLE_THREAD_CHECK(); 336 virtual void UniformMatrix2fv(
1077 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2f(" << location << ", " < < x << ", " << y << ")"); // NOLINT 337 GLint location, GLsizei count, GLboolean transpose,
1078 helper_->Uniform2f(location, x, y); 338 const GLfloat* value) OVERRIDE;
1079 } 339
1080 340 virtual void UniformMatrix3fv(
1081 void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) { 341 GLint location, GLsizei count, GLboolean transpose,
1082 GPU_CLIENT_SINGLE_THREAD_CHECK(); 342 const GLfloat* value) OVERRIDE;
1083 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT 343
1084 GPU_CLIENT_LOG_CODE_BLOCK({ 344 virtual void UniformMatrix4fv(
1085 for (GLsizei i = 0; i < count; ++i) { 345 GLint location, GLsizei count, GLboolean transpose,
1086 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 2] << ", " << v[1 + i * 2]) ; // NOLINT 346 const GLfloat* value) OVERRIDE;
1087 } 347
1088 }); 348 virtual void UseProgram(GLuint program) OVERRIDE;
1089 if (count < 0) { 349
1090 SetGLError(GL_INVALID_VALUE, "glUniform2fv", "count < 0"); 350 virtual void ValidateProgram(GLuint program) OVERRIDE;
1091 return; 351
1092 } 352 virtual void VertexAttrib1f(GLuint indx, GLfloat x) OVERRIDE;
1093 helper_->Uniform2fvImmediate(location, count, v); 353
1094 } 354 virtual void VertexAttrib1fv(GLuint indx, const GLfloat* values) OVERRIDE;
1095 355
1096 void Uniform2i(GLint location, GLint x, GLint y) { 356 virtual void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) OVERRIDE;
1097 GPU_CLIENT_SINGLE_THREAD_CHECK(); 357
1098 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2i(" << location << ", " < < x << ", " << y << ")"); // NOLINT 358 virtual void VertexAttrib2fv(GLuint indx, const GLfloat* values) OVERRIDE;
1099 helper_->Uniform2i(location, x, y); 359
1100 } 360 virtual void VertexAttrib3f(
1101 361 GLuint indx, GLfloat x, GLfloat y, GLfloat z) OVERRIDE;
1102 void Uniform2iv(GLint location, GLsizei count, const GLint* v) { 362
1103 GPU_CLIENT_SINGLE_THREAD_CHECK(); 363 virtual void VertexAttrib3fv(GLuint indx, const GLfloat* values) OVERRIDE;
1104 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT 364
1105 GPU_CLIENT_LOG_CODE_BLOCK({ 365 virtual void VertexAttrib4f(
1106 for (GLsizei i = 0; i < count; ++i) { 366 GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) OVERRIDE;
1107 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 2] << ", " << v[1 + i * 2]) ; // NOLINT 367
1108 } 368 virtual void VertexAttrib4fv(GLuint indx, const GLfloat* values) OVERRIDE;
1109 }); 369
1110 if (count < 0) { 370 virtual void VertexAttribPointer(
1111 SetGLError(GL_INVALID_VALUE, "glUniform2iv", "count < 0");
1112 return;
1113 }
1114 helper_->Uniform2ivImmediate(location, count, v);
1115 }
1116
1117 void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
1118 GPU_CLIENT_SINGLE_THREAD_CHECK();
1119 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3f(" << location << ", " < < x << ", " << y << ", " << z << ")"); // NOLINT
1120 helper_->Uniform3f(location, x, y, z);
1121 }
1122
1123 void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) {
1124 GPU_CLIENT_SINGLE_THREAD_CHECK();
1125 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1126 GPU_CLIENT_LOG_CODE_BLOCK({
1127 for (GLsizei i = 0; i < count; ++i) {
1128 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 3] << ", " << v[1 + i * 3] << ", " << v[2 + i * 3]); // NOLINT
1129 }
1130 });
1131 if (count < 0) {
1132 SetGLError(GL_INVALID_VALUE, "glUniform3fv", "count < 0");
1133 return;
1134 }
1135 helper_->Uniform3fvImmediate(location, count, v);
1136 }
1137
1138 void Uniform3i(GLint location, GLint x, GLint y, GLint z) {
1139 GPU_CLIENT_SINGLE_THREAD_CHECK();
1140 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3i(" << location << ", " < < x << ", " << y << ", " << z << ")"); // NOLINT
1141 helper_->Uniform3i(location, x, y, z);
1142 }
1143
1144 void Uniform3iv(GLint location, GLsizei count, const GLint* v) {
1145 GPU_CLIENT_SINGLE_THREAD_CHECK();
1146 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1147 GPU_CLIENT_LOG_CODE_BLOCK({
1148 for (GLsizei i = 0; i < count; ++i) {
1149 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 3] << ", " << v[1 + i * 3] << ", " << v[2 + i * 3]); // NOLINT
1150 }
1151 });
1152 if (count < 0) {
1153 SetGLError(GL_INVALID_VALUE, "glUniform3iv", "count < 0");
1154 return;
1155 }
1156 helper_->Uniform3ivImmediate(location, count, v);
1157 }
1158
1159 void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
1160 GPU_CLIENT_SINGLE_THREAD_CHECK();
1161 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4f(" << location << ", " < < x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1162 helper_->Uniform4f(location, x, y, z, w);
1163 }
1164
1165 void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) {
1166 GPU_CLIENT_SINGLE_THREAD_CHECK();
1167 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1168 GPU_CLIENT_LOG_CODE_BLOCK({
1169 for (GLsizei i = 0; i < count; ++i) {
1170 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 4] << ", " << v[1 + i * 4] << ", " << v[2 + i * 4] << ", " << v[3 + i * 4]); // NOLINT
1171 }
1172 });
1173 if (count < 0) {
1174 SetGLError(GL_INVALID_VALUE, "glUniform4fv", "count < 0");
1175 return;
1176 }
1177 helper_->Uniform4fvImmediate(location, count, v);
1178 }
1179
1180 void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) {
1181 GPU_CLIENT_SINGLE_THREAD_CHECK();
1182 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4i(" << location << ", " < < x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1183 helper_->Uniform4i(location, x, y, z, w);
1184 }
1185
1186 void Uniform4iv(GLint location, GLsizei count, const GLint* v) {
1187 GPU_CLIENT_SINGLE_THREAD_CHECK();
1188 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1189 GPU_CLIENT_LOG_CODE_BLOCK({
1190 for (GLsizei i = 0; i < count; ++i) {
1191 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 4] << ", " << v[1 + i * 4] << ", " << v[2 + i * 4] << ", " << v[3 + i * 4]); // NOLINT
1192 }
1193 });
1194 if (count < 0) {
1195 SetGLError(GL_INVALID_VALUE, "glUniform4iv", "count < 0");
1196 return;
1197 }
1198 helper_->Uniform4ivImmediate(location, count, v);
1199 }
1200
1201 void UniformMatrix2fv(
1202 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1203 GPU_CLIENT_SINGLE_THREAD_CHECK();
1204 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix2fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_ cast<const void*>(value) << ")"); // NOLINT
1205 GPU_CLIENT_LOG_CODE_BLOCK({
1206 for (GLsizei i = 0; i < count; ++i) {
1207 GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 4] << ", " << value[1 + i * 4] << ", " << value[2 + i * 4] << ", " << value[3 + i * 4]); // NOLINT
1208 }
1209 });
1210 if (count < 0) {
1211 SetGLError(GL_INVALID_VALUE, "glUniformMatrix2fv", "count < 0");
1212 return;
1213 }
1214 helper_->UniformMatrix2fvImmediate(location, count, transpose, value);
1215 }
1216
1217 void UniformMatrix3fv(
1218 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1219 GPU_CLIENT_SINGLE_THREAD_CHECK();
1220 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix3fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_ cast<const void*>(value) << ")"); // NOLINT
1221 GPU_CLIENT_LOG_CODE_BLOCK({
1222 for (GLsizei i = 0; i < count; ++i) {
1223 GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 9] << ", " << value[1 + i * 9] << ", " << value[2 + i * 9] << ", " << value[3 + i * 9] << ", " << value [4 + i * 9] << ", " << value[5 + i * 9] << ", " << value[6 + i * 9] << ", " << v alue[7 + i * 9] << ", " << value[8 + i * 9]); // NOLINT
1224 }
1225 });
1226 if (count < 0) {
1227 SetGLError(GL_INVALID_VALUE, "glUniformMatrix3fv", "count < 0");
1228 return;
1229 }
1230 helper_->UniformMatrix3fvImmediate(location, count, transpose, value);
1231 }
1232
1233 void UniformMatrix4fv(
1234 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1235 GPU_CLIENT_SINGLE_THREAD_CHECK();
1236 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix4fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_ cast<const void*>(value) << ")"); // NOLINT
1237 GPU_CLIENT_LOG_CODE_BLOCK({
1238 for (GLsizei i = 0; i < count; ++i) {
1239 GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 16] << ", " << value[1 + i * 16] << ", " << value[2 + i * 16] << ", " << value[3 + i * 16] << ", " << v alue[4 + i * 16] << ", " << value[5 + i * 16] << ", " << value[6 + i * 16] << ", " << value[7 + i * 16] << ", " << value[8 + i * 16] << ", " << value[9 + i * 16 ] << ", " << value[10 + i * 16] << ", " << value[11 + i * 16] << ", " << value[1 2 + i * 16] << ", " << value[13 + i * 16] << ", " << value[14 + i * 16] << ", " << value[15 + i * 16]); // NOLINT
1240 }
1241 });
1242 if (count < 0) {
1243 SetGLError(GL_INVALID_VALUE, "glUniformMatrix4fv", "count < 0");
1244 return;
1245 }
1246 helper_->UniformMatrix4fvImmediate(location, count, transpose, value);
1247 }
1248
1249 void UseProgram(GLuint program) {
1250 GPU_CLIENT_SINGLE_THREAD_CHECK();
1251 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUseProgram(" << program << ")");
1252 helper_->UseProgram(program);
1253 }
1254
1255 void ValidateProgram(GLuint program) {
1256 GPU_CLIENT_SINGLE_THREAD_CHECK();
1257 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glValidateProgram(" << program << " )"); // NOLINT
1258 helper_->ValidateProgram(program);
1259 }
1260
1261 void VertexAttrib1f(GLuint indx, GLfloat x) {
1262 GPU_CLIENT_SINGLE_THREAD_CHECK();
1263 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib1f(" << indx << ", " << x << ")"); // NOLINT
1264 helper_->VertexAttrib1f(indx, x);
1265 }
1266
1267 void VertexAttrib1fv(GLuint indx, const GLfloat* values) {
1268 GPU_CLIENT_SINGLE_THREAD_CHECK();
1269 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib1fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1270 GPU_CLIENT_LOG("values: " << values[0]);
1271 helper_->VertexAttrib1fvImmediate(indx, values);
1272 }
1273
1274 void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
1275 GPU_CLIENT_SINGLE_THREAD_CHECK();
1276 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib2f(" << indx << ", " << x << ", " << y << ")"); // NOLINT
1277 helper_->VertexAttrib2f(indx, x, y);
1278 }
1279
1280 void VertexAttrib2fv(GLuint indx, const GLfloat* values) {
1281 GPU_CLIENT_SINGLE_THREAD_CHECK();
1282 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib2fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1283 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1]);
1284 helper_->VertexAttrib2fvImmediate(indx, values);
1285 }
1286
1287 void VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
1288 GPU_CLIENT_SINGLE_THREAD_CHECK();
1289 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib3f(" << indx << ", " << x << ", " << y << ", " << z << ")"); // NOLINT
1290 helper_->VertexAttrib3f(indx, x, y, z);
1291 }
1292
1293 void VertexAttrib3fv(GLuint indx, const GLfloat* values) {
1294 GPU_CLIENT_SINGLE_THREAD_CHECK();
1295 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib3fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1296 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", " << values[ 2]); // NOLINT
1297 helper_->VertexAttrib3fvImmediate(indx, values);
1298 }
1299
1300 void VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
1301 GPU_CLIENT_SINGLE_THREAD_CHECK();
1302 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib4f(" << indx << ", " << x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1303 helper_->VertexAttrib4f(indx, x, y, z, w);
1304 }
1305
1306 void VertexAttrib4fv(GLuint indx, const GLfloat* values) {
1307 GPU_CLIENT_SINGLE_THREAD_CHECK();
1308 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib4fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1309 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", " << values[ 2] << ", " << values[3]); // NOLINT
1310 helper_->VertexAttrib4fvImmediate(indx, values);
1311 }
1312
1313 void VertexAttribPointer(
1314 GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, 371 GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,
1315 const void* ptr); 372 const void* ptr) OVERRIDE;
1316 373
1317 void Viewport(GLint x, GLint y, GLsizei width, GLsizei height) { 374 virtual void Viewport(
1318 GPU_CLIENT_SINGLE_THREAD_CHECK(); 375 GLint x, GLint y, GLsizei width, GLsizei height) OVERRIDE;
1319 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glViewport(" << x << ", " << y << " , " << width << ", " << height << ")"); // NOLINT 376
1320 if (width < 0) { 377 virtual void BlitFramebufferEXT(
1321 SetGLError(GL_INVALID_VALUE, "glViewport", "width < 0");
1322 return;
1323 }
1324 if (height < 0) {
1325 SetGLError(GL_INVALID_VALUE, "glViewport", "height < 0");
1326 return;
1327 }
1328 helper_->Viewport(x, y, width, height);
1329 }
1330
1331 void BlitFramebufferEXT(
1332 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, 378 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0,
1333 GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { 379 GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask,
1334 GPU_CLIENT_SINGLE_THREAD_CHECK(); 380 GLenum filter) OVERRIDE;
1335 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlitFramebufferEXT(" << srcX0 << ", " << srcY0 << ", " << srcX1 << ", " << srcY1 << ", " << dstX0 << ", " << dstY 0 << ", " << dstX1 << ", " << dstY1 << ", " << mask << ", " << GLES2Util::GetStr ingBlitFilter(filter) << ")"); // NOLINT 381
1336 helper_->BlitFramebufferEXT( 382 virtual void RenderbufferStorageMultisampleEXT(
1337 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
1338 }
1339
1340 void RenderbufferStorageMultisampleEXT(
1341 GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, 383 GLenum target, GLsizei samples, GLenum internalformat, GLsizei width,
1342 GLsizei height) { 384 GLsizei height) OVERRIDE;
1343 GPU_CLIENT_SINGLE_THREAD_CHECK(); 385
1344 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRenderbufferStorageMultisampleEXT (" << GLES2Util::GetStringRenderBufferTarget(target) << ", " << samples << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat) << ", " << width << ", " << height << ")"); // NOLINT 386 virtual void TexStorage2DEXT(
1345 if (samples < 0) {
1346 SetGLError(
1347 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0");
1348 return;
1349 }
1350 if (width < 0) {
1351 SetGLError(
1352 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0");
1353 return;
1354 }
1355 if (height < 0) {
1356 SetGLError(
1357 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0");
1358 return;
1359 }
1360 helper_->RenderbufferStorageMultisampleEXT(
1361 target, samples, internalformat, width, height);
1362 }
1363
1364 void TexStorage2DEXT(
1365 GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, 387 GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width,
1366 GLsizei height) { 388 GLsizei height) OVERRIDE;
1367 GPU_CLIENT_SINGLE_THREAD_CHECK(); 389
1368 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexStorage2DEXT(" << GLES2Util::G etStringTextureTarget(target) << ", " << levels << ", " << GLES2Util::GetStringT extureInternalFormatStorage(internalFormat) << ", " << width << ", " << height < < ")"); // NOLINT 390 virtual void GenQueriesEXT(GLsizei n, GLuint* queries) OVERRIDE;
1369 if (levels < 0) { 391
1370 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "levels < 0"); 392 virtual void DeleteQueriesEXT(GLsizei n, const GLuint* queries) OVERRIDE;
1371 return; 393
1372 } 394 virtual GLboolean IsQueryEXT(GLuint id) OVERRIDE;
1373 if (width < 0) { 395
1374 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "width < 0"); 396 virtual void BeginQueryEXT(GLenum target, GLuint id) OVERRIDE;
1375 return; 397
1376 } 398 virtual void EndQueryEXT(GLenum target) OVERRIDE;
1377 if (height < 0) { 399
1378 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0"); 400 virtual void GetQueryivEXT(
1379 return; 401 GLenum target, GLenum pname, GLint* params) OVERRIDE;
1380 } 402
1381 helper_->TexStorage2DEXT(target, levels, internalFormat, width, height); 403 virtual void GetQueryObjectuivEXT(
1382 } 404 GLuint id, GLenum pname, GLuint* params) OVERRIDE;
1383 405
1384 void GenQueriesEXT(GLsizei n, GLuint* queries) { 406 virtual void InsertEventMarkerEXT(
1385 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenQueriesEXT(" << n << ", " << s tatic_cast<const void*>(queries) << ")"); // NOLINT 407 GLsizei length, const GLchar* marker) OVERRIDE;
1386 if (n < 0) { 408
1387 SetGLError(GL_INVALID_VALUE, "glGenQueriesEXT", "n < 0"); 409 virtual void PushGroupMarkerEXT(GLsizei length, const GLchar* marker) OVERRIDE;
1388 return; 410
1389 } 411 virtual void PopGroupMarkerEXT() OVERRIDE;
1390 GPU_CLIENT_SINGLE_THREAD_CHECK(); 412
1391 GetIdHandler(id_namespaces::kQueries)-> 413 virtual void GenVertexArraysOES(GLsizei n, GLuint* arrays) OVERRIDE;
1392 MakeIds(this, 0, n, queries); 414
1393 helper_->GenQueriesEXTImmediate(n, queries); 415 virtual void DeleteVertexArraysOES(GLsizei n, const GLuint* arrays) OVERRIDE;
1394 GPU_CLIENT_LOG_CODE_BLOCK({ 416
1395 for (GLsizei i = 0; i < n; ++i) { 417 virtual GLboolean IsVertexArrayOES(GLuint array) OVERRIDE;
1396 GPU_CLIENT_LOG(" " << i << ": " << queries[i]); 418
1397 } 419 virtual void BindVertexArrayOES(GLuint array) OVERRIDE;
1398 }); 420
1399 } 421 virtual void SwapBuffers() OVERRIDE;
1400 422
1401 void DeleteQueriesEXT(GLsizei n, const GLuint* queries) { 423 virtual GLuint GetMaxValueInBufferCHROMIUM(
1402 GPU_CLIENT_SINGLE_THREAD_CHECK(); 424 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) OVERRIDE;
1403 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteQueriesEXT(" << n << ", " < < static_cast<const void*>(queries) << ")"); // NOLINT 425
1404 GPU_CLIENT_LOG_CODE_BLOCK({ 426 virtual void GenSharedIdsCHROMIUM(
1405 for (GLsizei i = 0; i < n; ++i) { 427 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) OVERRIDE;
1406 GPU_CLIENT_LOG(" " << i << ": " << queries[i]); 428
1407 } 429 virtual void DeleteSharedIdsCHROMIUM(
1408 }); 430 GLuint namespace_id, GLsizei n, const GLuint* ids) OVERRIDE;
1409 GPU_CLIENT_DCHECK_CODE_BLOCK({ 431
1410 for (GLsizei i = 0; i < n; ++i) { 432 virtual void RegisterSharedIdsCHROMIUM(
1411 GPU_DCHECK(queries[i] != 0); 433 GLuint namespace_id, GLsizei n, const GLuint* ids) OVERRIDE;
1412 } 434
1413 }); 435 virtual GLboolean EnableFeatureCHROMIUM(const char* feature) OVERRIDE;
1414 if (n < 0) { 436
1415 SetGLError(GL_INVALID_VALUE, "glDeleteQueriesEXT", "n < 0"); 437 virtual void* MapBufferSubDataCHROMIUM(
1416 return; 438 GLuint target, GLintptr offset, GLsizeiptr size, GLenum access) OVERRIDE;
1417 } 439
1418 DeleteQueriesEXTHelper(n, queries); 440 virtual void UnmapBufferSubDataCHROMIUM(const void* mem) OVERRIDE;
1419 } 441
1420 442 virtual void* MapTexSubImage2DCHROMIUM(
1421 GLboolean IsQueryEXT(GLuint id);
1422
1423 void BeginQueryEXT(GLenum target, GLuint id);
1424
1425 void EndQueryEXT(GLenum target);
1426
1427 void GetQueryivEXT(GLenum target, GLenum pname, GLint* params);
1428
1429 void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params);
1430
1431 void InsertEventMarkerEXT(GLsizei length, const GLchar* marker);
1432
1433 void PushGroupMarkerEXT(GLsizei length, const GLchar* marker);
1434
1435 void PopGroupMarkerEXT();
1436
1437 void GenVertexArraysOES(GLsizei n, GLuint* arrays) {
1438 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenVertexArraysOES(" << n << ", " << static_cast<const void*>(arrays) << ")"); // NOLINT
1439 if (n < 0) {
1440 SetGLError(GL_INVALID_VALUE, "glGenVertexArraysOES", "n < 0");
1441 return;
1442 }
1443 GPU_CLIENT_SINGLE_THREAD_CHECK();
1444 GetIdHandler(id_namespaces::kVertexArrays)->
1445 MakeIds(this, 0, n, arrays);
1446 helper_->GenVertexArraysOESImmediate(n, arrays);
1447 GPU_CLIENT_LOG_CODE_BLOCK({
1448 for (GLsizei i = 0; i < n; ++i) {
1449 GPU_CLIENT_LOG(" " << i << ": " << arrays[i]);
1450 }
1451 });
1452 }
1453
1454 void DeleteVertexArraysOES(GLsizei n, const GLuint* arrays) {
1455 GPU_CLIENT_SINGLE_THREAD_CHECK();
1456 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteVertexArraysOES(" << n << " , " << static_cast<const void*>(arrays) << ")"); // NOLINT
1457 GPU_CLIENT_LOG_CODE_BLOCK({
1458 for (GLsizei i = 0; i < n; ++i) {
1459 GPU_CLIENT_LOG(" " << i << ": " << arrays[i]);
1460 }
1461 });
1462 GPU_CLIENT_DCHECK_CODE_BLOCK({
1463 for (GLsizei i = 0; i < n; ++i) {
1464 GPU_DCHECK(arrays[i] != 0);
1465 }
1466 });
1467 if (n < 0) {
1468 SetGLError(GL_INVALID_VALUE, "glDeleteVertexArraysOES", "n < 0");
1469 return;
1470 }
1471 DeleteVertexArraysOESHelper(n, arrays);
1472 }
1473
1474 GLboolean IsVertexArrayOES(GLuint array) {
1475 GPU_CLIENT_SINGLE_THREAD_CHECK();
1476 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsVertexArrayOES(" << array << ") "); // NOLINT
1477 typedef IsVertexArrayOES::Result Result;
1478 Result* result = GetResultAs<Result*>();
1479 if (!result) {
1480 return GL_FALSE;
1481 }
1482 *result = 0;
1483 helper_->IsVertexArrayOES(array, GetResultShmId(), GetResultShmOffset());
1484 WaitForCmd();
1485 GPU_CLIENT_LOG("returned " << *result);
1486 return *result;
1487 }
1488
1489 void BindVertexArrayOES(GLuint array) {
1490 GPU_CLIENT_SINGLE_THREAD_CHECK();
1491 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindVertexArrayOES(" << array << ")"); // NOLINT
1492 if (IsVertexArrayReservedId(array)) {
1493 SetGLError(
1494 GL_INVALID_OPERATION, "BindVertexArrayOES", "array reserved id");
1495 return;
1496 }
1497 BindVertexArrayHelper(array);
1498 helper_->BindVertexArrayOES(array);
1499 }
1500
1501 void SwapBuffers();
1502
1503 GLuint GetMaxValueInBufferCHROMIUM(
1504 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset);
1505
1506 void GenSharedIdsCHROMIUM(
1507 GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids);
1508
1509 void DeleteSharedIdsCHROMIUM(
1510 GLuint namespace_id, GLsizei n, const GLuint* ids);
1511
1512 void RegisterSharedIdsCHROMIUM(
1513 GLuint namespace_id, GLsizei n, const GLuint* ids);
1514
1515 GLboolean EnableFeatureCHROMIUM(const char* feature);
1516
1517 void* MapBufferSubDataCHROMIUM(
1518 GLuint target, GLintptr offset, GLsizeiptr size, GLenum access);
1519
1520 void UnmapBufferSubDataCHROMIUM(const void* mem);
1521
1522 void* MapTexSubImage2DCHROMIUM(
1523 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, 443 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
1524 GLsizei height, GLenum format, GLenum type, GLenum access); 444 GLsizei height, GLenum format, GLenum type, GLenum access) OVERRIDE;
1525 445
1526 void UnmapTexSubImage2DCHROMIUM(const void* mem); 446 virtual void UnmapTexSubImage2DCHROMIUM(const void* mem) OVERRIDE;
1527 447
1528 void ResizeCHROMIUM(GLuint width, GLuint height); 448 virtual void ResizeCHROMIUM(GLuint width, GLuint height) OVERRIDE;
1529 449
1530 const GLchar* GetRequestableExtensionsCHROMIUM(); 450 virtual const GLchar* GetRequestableExtensionsCHROMIUM() OVERRIDE;
1531 451
1532 void RequestExtensionCHROMIUM(const char* extension); 452 virtual void RequestExtensionCHROMIUM(const char* extension) OVERRIDE;
1533 453
1534 void RateLimitOffscreenContextCHROMIUM(); 454 virtual void RateLimitOffscreenContextCHROMIUM() OVERRIDE;
1535 455
1536 void GetMultipleIntegervCHROMIUM( 456 virtual void GetMultipleIntegervCHROMIUM(
1537 const GLenum* pnames, GLuint count, GLint* results, GLsizeiptr size); 457 const GLenum* pnames, GLuint count, GLint* results,
1538 458 GLsizeiptr size) OVERRIDE;
1539 void GetProgramInfoCHROMIUM( 459
1540 GLuint program, GLsizei bufsize, GLsizei* size, void* info); 460 virtual void GetProgramInfoCHROMIUM(
1541 461 GLuint program, GLsizei bufsize, GLsizei* size, void* info) OVERRIDE;
1542 GLuint CreateStreamTextureCHROMIUM(GLuint texture); 462
1543 463 virtual GLuint CreateStreamTextureCHROMIUM(GLuint texture) OVERRIDE;
1544 void DestroyStreamTextureCHROMIUM(GLuint texture); 464
1545 465 virtual void DestroyStreamTextureCHROMIUM(GLuint texture) OVERRIDE;
1546 void GetTranslatedShaderSourceANGLE( 466
1547 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) { 467 virtual void GetTranslatedShaderSourceANGLE(
1548 GPU_CLIENT_SINGLE_THREAD_CHECK(); 468 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) OVERRIDE;
1549 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length); 469
1550 GPU_CLIENT_LOG("[" << GetLogPrefix() 470 virtual void PostSubBufferCHROMIUM(
1551 << "] glGetTranslatedShaderSourceANGLE" << "(" 471 GLint x, GLint y, GLint width, GLint height) OVERRIDE;
1552 << shader << ", " 472
1553 << bufsize << ", " 473 virtual void TexImageIOSurface2DCHROMIUM(
1554 << static_cast<void*>(length) << ", "
1555 << static_cast<void*>(source) << ")");
1556 helper_->SetBucketSize(kResultBucketId, 0);
1557 helper_->GetTranslatedShaderSourceANGLE(shader, kResultBucketId);
1558 std::string str;
1559 GLsizei max_size = 0;
1560 if (GetBucketAsString(kResultBucketId, &str)) {
1561 if (bufsize > 0) {
1562 max_size =
1563 std::min(static_cast<size_t>(bufsize) - 1, str.size());
1564 memcpy(source, str.c_str(), max_size);
1565 source[max_size] = '\0';
1566 GPU_CLIENT_LOG("------\n" << source << "\n------");
1567 }
1568 }
1569 if (length != NULL) {
1570 *length = max_size;
1571 }
1572 }
1573 void PostSubBufferCHROMIUM(GLint x, GLint y, GLint width, GLint height);
1574
1575 void TexImageIOSurface2DCHROMIUM(
1576 GLenum target, GLsizei width, GLsizei height, GLuint ioSurfaceId, 474 GLenum target, GLsizei width, GLsizei height, GLuint ioSurfaceId,
1577 GLuint plane) { 475 GLuint plane) OVERRIDE;
1578 GPU_CLIENT_SINGLE_THREAD_CHECK(); 476
1579 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexImageIOSurface2DCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << width << ", " << height << ", " << ioSurfaceId << ", " << plane << ")"); // NOLINT 477 virtual void CopyTextureCHROMIUM(
1580 if (width < 0) {
1581 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0");
1582 return;
1583 }
1584 if (height < 0) {
1585 SetGLError(
1586 GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0");
1587 return;
1588 }
1589 helper_->TexImageIOSurface2DCHROMIUM(
1590 target, width, height, ioSurfaceId, plane);
1591 }
1592
1593 void CopyTextureCHROMIUM(
1594 GLenum target, GLenum source_id, GLenum dest_id, GLint level, 478 GLenum target, GLenum source_id, GLenum dest_id, GLint level,
1595 GLint internalformat) { 479 GLint internalformat) OVERRIDE;
1596 GPU_CLIENT_SINGLE_THREAD_CHECK(); 480
1597 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTextureCHROMIUM(" << GLES2Uti l::GetStringEnum(target) << ", " << GLES2Util::GetStringEnum(source_id) << ", " << GLES2Util::GetStringEnum(dest_id) << ", " << level << ", " << internalformat << ")"); // NOLINT 481 virtual void DrawArraysInstancedANGLE(
1598 helper_->CopyTextureCHROMIUM( 482 GLenum mode, GLint first, GLsizei count, GLsizei primcount) OVERRIDE;
1599 target, source_id, dest_id, level, internalformat); 483
1600 } 484 virtual void DrawElementsInstancedANGLE(
1601
1602 void DrawArraysInstancedANGLE(
1603 GLenum mode, GLint first, GLsizei count, GLsizei primcount);
1604
1605 void DrawElementsInstancedANGLE(
1606 GLenum mode, GLsizei count, GLenum type, const void* indices, 485 GLenum mode, GLsizei count, GLenum type, const void* indices,
1607 GLsizei primcount); 486 GLsizei primcount) OVERRIDE;
1608 487
1609 void VertexAttribDivisorANGLE(GLuint index, GLuint divisor); 488 virtual void VertexAttribDivisorANGLE(GLuint index, GLuint divisor) OVERRIDE;
1610 489
1611 void GenMailboxCHROMIUM(GLbyte* mailbox); 490 virtual void GenMailboxCHROMIUM(GLbyte* mailbox) OVERRIDE;
1612 491
1613 void ProduceTextureCHROMIUM(GLenum target, const GLbyte* mailbox) { 492 virtual void ProduceTextureCHROMIUM(
1614 GPU_CLIENT_SINGLE_THREAD_CHECK(); 493 GLenum target, const GLbyte* mailbox) OVERRIDE;
1615 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glProduceTextureCHROMIUM(" << GLES2 Util::GetStringTextureTarget(target) << ", " << static_cast<const void*>(mailbox ) << ")"); // NOLINT 494
1616 GPU_CLIENT_LOG("values: " << mailbox[0] << ", " << mailbox[1] << ", " << mailb ox[2] << ", " << mailbox[3] << ", " << mailbox[4] << ", " << mailbox[5] << ", " << mailbox[6] << ", " << mailbox[7] << ", " << mailbox[8] << ", " << mailbox[9] << ", " << mailbox[10] << ", " << mailbox[11] << ", " << mailbox[12] << ", " << mailbox[13] << ", " << mailbox[14] << ", " << mailbox[15] << ", " << mailbox[16] << ", " << mailbox[17] << ", " << mailbox[18] << ", " << mailbox[19] << ", " << mailbox[20] << ", " << mailbox[21] << ", " << mailbox[22] << ", " << mailbox[23 ] << ", " << mailbox[24] << ", " << mailbox[25] << ", " << mailbox[26] << ", " < < mailbox[27] << ", " << mailbox[28] << ", " << mailbox[29] << ", " << mailbox[3 0] << ", " << mailbox[31] << ", " << mailbox[32] << ", " << mailbox[33] << ", " << mailbox[34] << ", " << mailbox[35] << ", " << mailbox[36] << ", " << mailbox[ 37] << ", " << mailbox[38] << ", " << mailbox[39] << ", " << mailbox[40] << ", " << mailbox[41] << ", " << mailbox[42] << ", " << mailbox[43] << ", " << mailbox [44] << ", " << mailbox[45] << ", " << mailbox[46] << ", " << mailbox[47] << ", " << mailbox[48] << ", " << mailbox[49] << ", " << mailbox[50] << ", " << mailbo x[51] << ", " << mailbox[52] << ", " << mailbox[53] << ", " << mailbox[54] << ", " << mailbox[55] << ", " << mailbox[56] << ", " << mailbox[57] << ", " << mailb ox[58] << ", " << mailbox[59] << ", " << mailbox[60] << ", " << mailbox[61] << " , " << mailbox[62] << ", " << mailbox[63]); // NOLINT 495 virtual void ConsumeTextureCHROMIUM(
1617 helper_->ProduceTextureCHROMIUMImmediate(target, mailbox); 496 GLenum target, const GLbyte* mailbox) OVERRIDE;
1618 } 497
1619 498 virtual void BindUniformLocationCHROMIUM(
1620 void ConsumeTextureCHROMIUM(GLenum target, const GLbyte* mailbox) { 499 GLuint program, GLint location, const char* name) OVERRIDE;
1621 GPU_CLIENT_SINGLE_THREAD_CHECK();
1622 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glConsumeTextureCHROMIUM(" << GLES2 Util::GetStringTextureTarget(target) << ", " << static_cast<const void*>(mailbox ) << ")"); // NOLINT
1623 GPU_CLIENT_LOG("values: " << mailbox[0] << ", " << mailbox[1] << ", " << mailb ox[2] << ", " << mailbox[3] << ", " << mailbox[4] << ", " << mailbox[5] << ", " << mailbox[6] << ", " << mailbox[7] << ", " << mailbox[8] << ", " << mailbox[9] << ", " << mailbox[10] << ", " << mailbox[11] << ", " << mailbox[12] << ", " << mailbox[13] << ", " << mailbox[14] << ", " << mailbox[15] << ", " << mailbox[16] << ", " << mailbox[17] << ", " << mailbox[18] << ", " << mailbox[19] << ", " << mailbox[20] << ", " << mailbox[21] << ", " << mailbox[22] << ", " << mailbox[23 ] << ", " << mailbox[24] << ", " << mailbox[25] << ", " << mailbox[26] << ", " < < mailbox[27] << ", " << mailbox[28] << ", " << mailbox[29] << ", " << mailbox[3 0] << ", " << mailbox[31] << ", " << mailbox[32] << ", " << mailbox[33] << ", " << mailbox[34] << ", " << mailbox[35] << ", " << mailbox[36] << ", " << mailbox[ 37] << ", " << mailbox[38] << ", " << mailbox[39] << ", " << mailbox[40] << ", " << mailbox[41] << ", " << mailbox[42] << ", " << mailbox[43] << ", " << mailbox [44] << ", " << mailbox[45] << ", " << mailbox[46] << ", " << mailbox[47] << ", " << mailbox[48] << ", " << mailbox[49] << ", " << mailbox[50] << ", " << mailbo x[51] << ", " << mailbox[52] << ", " << mailbox[53] << ", " << mailbox[54] << ", " << mailbox[55] << ", " << mailbox[56] << ", " << mailbox[57] << ", " << mailb ox[58] << ", " << mailbox[59] << ", " << mailbox[60] << ", " << mailbox[61] << " , " << mailbox[62] << ", " << mailbox[63]); // NOLINT
1624 helper_->ConsumeTextureCHROMIUMImmediate(target, mailbox);
1625 }
1626
1627 void BindUniformLocationCHROMIUM(
1628 GLuint program, GLint location, const char* name);
1629 500
1630 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_ 501 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_
1631 502
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation.cc ('k') | gpu/command_buffer/client/gles2_implementation_impl_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698