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.
5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py
9 // This file is included by gles2_implementation.cc to define the
11 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_
12 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_
14 void GLES2Implementation::AttachShader(GLuint program, GLuint shader) {
15 GPU_CLIENT_SINGLE_THREAD_CHECK();
16 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glAttachShader(" << program << ", " << shader << ")"); // NOLINT
17 helper_->AttachShader(program, shader);
21 void GLES2Implementation::BindBuffer(GLenum target, GLuint buffer) {
22 GPU_CLIENT_SINGLE_THREAD_CHECK();
23 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindBuffer(" << GLES2Util::GetStringBufferTarget(target) << ", " << buffer << ")"); // NOLINT
24 if (IsBufferReservedId(buffer)) {
25 SetGLError(GL_INVALID_OPERATION, "BindBuffer", "buffer reserved id");
28 if (BindBufferHelper(target, buffer)) {
29 helper_->BindBuffer(target, buffer);
34 void GLES2Implementation::BindFramebuffer(GLenum target, GLuint framebuffer) {
35 GPU_CLIENT_SINGLE_THREAD_CHECK();
36 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindFramebuffer(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << framebuffer << ")"); // NOLINT
37 if (IsFramebufferReservedId(framebuffer)) {
39 GL_INVALID_OPERATION, "BindFramebuffer", "framebuffer reserved id");
42 if (BindFramebufferHelper(target, framebuffer)) {
43 helper_->BindFramebuffer(target, framebuffer);
48 void GLES2Implementation::BindRenderbuffer(
49 GLenum target, GLuint renderbuffer) {
50 GPU_CLIENT_SINGLE_THREAD_CHECK();
51 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindRenderbuffer(" << GLES2Util::GetStringRenderBufferTarget(target) << ", " << renderbuffer << ")"); // NOLINT
52 if (IsRenderbufferReservedId(renderbuffer)) {
54 GL_INVALID_OPERATION, "BindRenderbuffer", "renderbuffer reserved id");
57 if (BindRenderbufferHelper(target, renderbuffer)) {
58 helper_->BindRenderbuffer(target, renderbuffer);
63 void GLES2Implementation::BindTexture(GLenum target, GLuint texture) {
64 GPU_CLIENT_SINGLE_THREAD_CHECK();
65 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexture(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << texture << ")"); // NOLINT
66 if (IsTextureReservedId(texture)) {
67 SetGLError(GL_INVALID_OPERATION, "BindTexture", "texture reserved id");
70 if (BindTextureHelper(target, texture)) {
71 helper_->BindTexture(target, texture);
76 void GLES2Implementation::BlendColor(
77 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
78 GPU_CLIENT_SINGLE_THREAD_CHECK();
79 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendColor(" << red << ", " << green << ", " << blue << ", " << alpha << ")"); // NOLINT
80 helper_->BlendColor(red, green, blue, alpha);
84 void GLES2Implementation::BlendEquation(GLenum mode) {
85 GPU_CLIENT_SINGLE_THREAD_CHECK();
86 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendEquation(" << GLES2Util::GetStringEquation(mode) << ")"); // NOLINT
87 helper_->BlendEquation(mode);
91 void GLES2Implementation::BlendEquationSeparate(
92 GLenum modeRGB, GLenum modeAlpha) {
93 GPU_CLIENT_SINGLE_THREAD_CHECK();
94 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendEquationSeparate(" << GLES2Util::GetStringEquation(modeRGB) << ", " << GLES2Util::GetStringEquation(modeAlpha) << ")"); // NOLINT
95 helper_->BlendEquationSeparate(modeRGB, modeAlpha);
99 void GLES2Implementation::BlendFunc(GLenum sfactor, GLenum dfactor) {
100 GPU_CLIENT_SINGLE_THREAD_CHECK();
101 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendFunc(" << GLES2Util::GetStringSrcBlendFactor(sfactor) << ", " << GLES2Util::GetStringDstBlendFactor(dfactor) << ")"); // NOLINT
102 helper_->BlendFunc(sfactor, dfactor);
106 void GLES2Implementation::BlendFuncSeparate(
107 GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
108 GPU_CLIENT_SINGLE_THREAD_CHECK();
109 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendFuncSeparate(" << GLES2Util::GetStringSrcBlendFactor(srcRGB) << ", " << GLES2Util::GetStringDstBlendFactor(dstRGB) << ", " << GLES2Util::GetStringSrcBlendFactor(srcAlpha) << ", " << GLES2Util::GetStringDstBlendFactor(dstAlpha) << ")"); // NOLINT
110 helper_->BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
114 GLenum GLES2Implementation::CheckFramebufferStatus(GLenum target) {
115 GPU_CLIENT_SINGLE_THREAD_CHECK();
116 TRACE_EVENT0("gpu", "GLES2Implementation::CheckFramebufferStatus");
117 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCheckFramebufferStatus(" << GLES2Util::GetStringFrameBufferTarget(target) << ")"); // NOLINT
118 typedef cmds::CheckFramebufferStatus::Result Result;
119 Result* result = GetResultAs<Result*>();
121 return GL_FRAMEBUFFER_UNSUPPORTED;
124 helper_->CheckFramebufferStatus(
125 target, GetResultShmId(), GetResultShmOffset());
127 GLenum result_value = *result;
128 GPU_CLIENT_LOG("returned " << result_value);
133 void GLES2Implementation::Clear(GLbitfield mask) {
134 GPU_CLIENT_SINGLE_THREAD_CHECK();
135 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClear(" << mask << ")");
136 helper_->Clear(mask);
140 void GLES2Implementation::ClearColor(
141 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
142 GPU_CLIENT_SINGLE_THREAD_CHECK();
143 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearColor(" << red << ", " << green << ", " << blue << ", " << alpha << ")"); // NOLINT
144 helper_->ClearColor(red, green, blue, alpha);
148 void GLES2Implementation::ClearDepthf(GLclampf depth) {
149 GPU_CLIENT_SINGLE_THREAD_CHECK();
150 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearDepthf(" << depth << ")");
151 helper_->ClearDepthf(depth);
155 void GLES2Implementation::ClearStencil(GLint s) {
156 GPU_CLIENT_SINGLE_THREAD_CHECK();
157 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClearStencil(" << s << ")");
158 helper_->ClearStencil(s);
162 void GLES2Implementation::ColorMask(
163 GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
164 GPU_CLIENT_SINGLE_THREAD_CHECK();
165 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glColorMask(" << GLES2Util::GetStringBool(red) << ", " << GLES2Util::GetStringBool(green) << ", " << GLES2Util::GetStringBool(blue) << ", " << GLES2Util::GetStringBool(alpha) << ")"); // NOLINT
166 helper_->ColorMask(red, green, blue, alpha);
170 void GLES2Implementation::CompileShader(GLuint shader) {
171 GPU_CLIENT_SINGLE_THREAD_CHECK();
172 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCompileShader(" << shader << ")"); // NOLINT
173 helper_->CompileShader(shader);
177 void GLES2Implementation::CopyTexImage2D(
178 GLenum target, GLint level, GLenum internalformat, GLint x, GLint y,
179 GLsizei width, GLsizei height, GLint border) {
180 GPU_CLIENT_SINGLE_THREAD_CHECK();
181 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTexImage2D(" << GLES2Util::GetStringTextureTarget(target) << ", " << level << ", " << GLES2Util::GetStringTextureInternalFormat(internalformat) << ", " << x << ", " << y << ", " << width << ", " << height << ", " << border << ")"); // NOLINT
183 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "width < 0");
187 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "height < 0");
190 helper_->CopyTexImage2D(
191 target, level, internalformat, x, y, width, height, border);
195 void GLES2Implementation::CopyTexSubImage2D(
196 GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y,
197 GLsizei width, GLsizei height) {
198 GPU_CLIENT_SINGLE_THREAD_CHECK();
199 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTexSubImage2D(" << GLES2Util::GetStringTextureTarget(target) << ", " << level << ", " << xoffset << ", " << yoffset << ", " << x << ", " << y << ", " << width << ", " << height << ")"); // NOLINT
201 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "width < 0");
205 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0");
208 helper_->CopyTexSubImage2D(
209 target, level, xoffset, yoffset, x, y, width, height);
213 GLuint GLES2Implementation::CreateProgram() {
214 GPU_CLIENT_SINGLE_THREAD_CHECK();
215 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateProgram(" << ")");
217 GetIdHandler(id_namespaces::kProgramsAndShaders)->
218 MakeIds(this, 0, 1, &client_id);
219 helper_->CreateProgram(client_id);
220 GPU_CLIENT_LOG("returned " << client_id);
225 GLuint GLES2Implementation::CreateShader(GLenum type) {
226 GPU_CLIENT_SINGLE_THREAD_CHECK();
227 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateShader(" << GLES2Util::GetStringShaderType(type) << ")"); // NOLINT
229 GetIdHandler(id_namespaces::kProgramsAndShaders)->
230 MakeIds(this, 0, 1, &client_id);
231 helper_->CreateShader(type, client_id);
232 GPU_CLIENT_LOG("returned " << client_id);
237 void GLES2Implementation::CullFace(GLenum mode) {
238 GPU_CLIENT_SINGLE_THREAD_CHECK();
239 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCullFace(" << GLES2Util::GetStringFaceType(mode) << ")"); // NOLINT
240 helper_->CullFace(mode);
244 void GLES2Implementation::DeleteBuffers(GLsizei n, const GLuint* buffers) {
245 GPU_CLIENT_SINGLE_THREAD_CHECK();
246 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteBuffers(" << n << ", " << static_cast<const void*>(buffers) << ")"); // NOLINT
247 GPU_CLIENT_LOG_CODE_BLOCK({
248 for (GLsizei i = 0; i < n; ++i) {
249 GPU_CLIENT_LOG(" " << i << ": " << buffers[i]);
252 GPU_CLIENT_DCHECK_CODE_BLOCK({
253 for (GLsizei i = 0; i < n; ++i) {
254 GPU_DCHECK(buffers[i] != 0);
258 SetGLError(GL_INVALID_VALUE, "glDeleteBuffers", "n < 0");
261 DeleteBuffersHelper(n, buffers);
265 void GLES2Implementation::DeleteFramebuffers(
266 GLsizei n, const GLuint* framebuffers) {
267 GPU_CLIENT_SINGLE_THREAD_CHECK();
268 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteFramebuffers(" << n << ", " << static_cast<const void*>(framebuffers) << ")"); // NOLINT
269 GPU_CLIENT_LOG_CODE_BLOCK({
270 for (GLsizei i = 0; i < n; ++i) {
271 GPU_CLIENT_LOG(" " << i << ": " << framebuffers[i]);
274 GPU_CLIENT_DCHECK_CODE_BLOCK({
275 for (GLsizei i = 0; i < n; ++i) {
276 GPU_DCHECK(framebuffers[i] != 0);
280 SetGLError(GL_INVALID_VALUE, "glDeleteFramebuffers", "n < 0");
283 DeleteFramebuffersHelper(n, framebuffers);
287 void GLES2Implementation::DeleteProgram(GLuint program) {
288 GPU_CLIENT_SINGLE_THREAD_CHECK();
289 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteProgram(" << program << ")"); // NOLINT
290 GPU_CLIENT_DCHECK(program != 0);
291 DeleteProgramHelper(program);
295 void GLES2Implementation::DeleteRenderbuffers(
296 GLsizei n, const GLuint* renderbuffers) {
297 GPU_CLIENT_SINGLE_THREAD_CHECK();
298 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteRenderbuffers(" << n << ", " << static_cast<const void*>(renderbuffers) << ")"); // NOLINT
299 GPU_CLIENT_LOG_CODE_BLOCK({
300 for (GLsizei i = 0; i < n; ++i) {
301 GPU_CLIENT_LOG(" " << i << ": " << renderbuffers[i]);
304 GPU_CLIENT_DCHECK_CODE_BLOCK({
305 for (GLsizei i = 0; i < n; ++i) {
306 GPU_DCHECK(renderbuffers[i] != 0);
310 SetGLError(GL_INVALID_VALUE, "glDeleteRenderbuffers", "n < 0");
313 DeleteRenderbuffersHelper(n, renderbuffers);
317 void GLES2Implementation::DeleteShader(GLuint shader) {
318 GPU_CLIENT_SINGLE_THREAD_CHECK();
319 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteShader(" << shader << ")");
320 GPU_CLIENT_DCHECK(shader != 0);
321 DeleteShaderHelper(shader);
325 void GLES2Implementation::DeleteTextures(GLsizei n, const GLuint* textures) {
326 GPU_CLIENT_SINGLE_THREAD_CHECK();
327 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteTextures(" << n << ", " << static_cast<const void*>(textures) << ")"); // NOLINT
328 GPU_CLIENT_LOG_CODE_BLOCK({
329 for (GLsizei i = 0; i < n; ++i) {
330 GPU_CLIENT_LOG(" " << i << ": " << textures[i]);
333 GPU_CLIENT_DCHECK_CODE_BLOCK({
334 for (GLsizei i = 0; i < n; ++i) {
335 GPU_DCHECK(textures[i] != 0);
339 SetGLError(GL_INVALID_VALUE, "glDeleteTextures", "n < 0");
342 DeleteTexturesHelper(n, textures);
346 void GLES2Implementation::DepthFunc(GLenum func) {
347 GPU_CLIENT_SINGLE_THREAD_CHECK();
348 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthFunc(" << GLES2Util::GetStringCmpFunction(func) << ")"); // NOLINT
349 helper_->DepthFunc(func);
353 void GLES2Implementation::DepthMask(GLboolean flag) {
354 GPU_CLIENT_SINGLE_THREAD_CHECK();
355 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthMask(" << GLES2Util::GetStringBool(flag) << ")"); // NOLINT
356 helper_->DepthMask(flag);
360 void GLES2Implementation::DepthRangef(GLclampf zNear, GLclampf zFar) {
361 GPU_CLIENT_SINGLE_THREAD_CHECK();
362 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDepthRangef(" << zNear << ", " << zFar << ")"); // NOLINT
363 helper_->DepthRangef(zNear, zFar);
367 void GLES2Implementation::DetachShader(GLuint program, GLuint shader) {
368 GPU_CLIENT_SINGLE_THREAD_CHECK();
369 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDetachShader(" << program << ", " << shader << ")"); // NOLINT
370 helper_->DetachShader(program, shader);
374 void GLES2Implementation::FramebufferRenderbuffer(
375 GLenum target, GLenum attachment, GLenum renderbuffertarget,
376 GLuint renderbuffer) {
377 GPU_CLIENT_SINGLE_THREAD_CHECK();
378 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferRenderbuffer(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachment(attachment) << ", " << GLES2Util::GetStringRenderBufferTarget(renderbuffertarget) << ", " << renderbuffer << ")"); // NOLINT
379 helper_->FramebufferRenderbuffer(
380 target, attachment, renderbuffertarget, renderbuffer);
384 void GLES2Implementation::FramebufferTexture2D(
385 GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
387 GPU_CLIENT_SINGLE_THREAD_CHECK();
388 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferTexture2D(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachment(attachment) << ", " << GLES2Util::GetStringTextureTarget(textarget) << ", " << texture << ", " << level << ")"); // NOLINT
389 helper_->FramebufferTexture2D(target, attachment, textarget, texture, level);
393 void GLES2Implementation::FrontFace(GLenum mode) {
394 GPU_CLIENT_SINGLE_THREAD_CHECK();
395 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFrontFace(" << GLES2Util::GetStringFaceMode(mode) << ")"); // NOLINT
396 helper_->FrontFace(mode);
400 void GLES2Implementation::GenBuffers(GLsizei n, GLuint* buffers) {
401 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenBuffers(" << n << ", " << static_cast<const void*>(buffers) << ")"); // NOLINT
403 SetGLError(GL_INVALID_VALUE, "glGenBuffers", "n < 0");
406 GPU_CLIENT_SINGLE_THREAD_CHECK();
407 GetIdHandler(id_namespaces::kBuffers)->
408 MakeIds(this, 0, n, buffers);
409 GenBuffersHelper(n, buffers);
410 helper_->GenBuffersImmediate(n, buffers);
411 helper_->CommandBufferHelper::Flush();
412 GPU_CLIENT_LOG_CODE_BLOCK({
413 for (GLsizei i = 0; i < n; ++i) {
414 GPU_CLIENT_LOG(" " << i << ": " << buffers[i]);
420 void GLES2Implementation::GenerateMipmap(GLenum target) {
421 GPU_CLIENT_SINGLE_THREAD_CHECK();
422 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenerateMipmap(" << GLES2Util::GetStringTextureBindTarget(target) << ")"); // NOLINT
423 helper_->GenerateMipmap(target);
427 void GLES2Implementation::GenFramebuffers(GLsizei n, GLuint* framebuffers) {
428 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenFramebuffers(" << n << ", " << static_cast<const void*>(framebuffers) << ")"); // NOLINT
430 SetGLError(GL_INVALID_VALUE, "glGenFramebuffers", "n < 0");
433 GPU_CLIENT_SINGLE_THREAD_CHECK();
434 GetIdHandler(id_namespaces::kFramebuffers)->
435 MakeIds(this, 0, n, framebuffers);
436 GenFramebuffersHelper(n, framebuffers);
437 helper_->GenFramebuffersImmediate(n, framebuffers);
438 helper_->CommandBufferHelper::Flush();
439 GPU_CLIENT_LOG_CODE_BLOCK({
440 for (GLsizei i = 0; i < n; ++i) {
441 GPU_CLIENT_LOG(" " << i << ": " << framebuffers[i]);
447 void GLES2Implementation::GenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
448 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenRenderbuffers(" << n << ", " << static_cast<const void*>(renderbuffers) << ")"); // NOLINT
450 SetGLError(GL_INVALID_VALUE, "glGenRenderbuffers", "n < 0");
453 GPU_CLIENT_SINGLE_THREAD_CHECK();
454 GetIdHandler(id_namespaces::kRenderbuffers)->
455 MakeIds(this, 0, n, renderbuffers);
456 GenRenderbuffersHelper(n, renderbuffers);
457 helper_->GenRenderbuffersImmediate(n, renderbuffers);
458 helper_->CommandBufferHelper::Flush();
459 GPU_CLIENT_LOG_CODE_BLOCK({
460 for (GLsizei i = 0; i < n; ++i) {
461 GPU_CLIENT_LOG(" " << i << ": " << renderbuffers[i]);
467 void GLES2Implementation::GenTextures(GLsizei n, GLuint* textures) {
468 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenTextures(" << n << ", " << static_cast<const void*>(textures) << ")"); // NOLINT
470 SetGLError(GL_INVALID_VALUE, "glGenTextures", "n < 0");
473 GPU_CLIENT_SINGLE_THREAD_CHECK();
474 GetIdHandler(id_namespaces::kTextures)->
475 MakeIds(this, 0, n, textures);
476 GenTexturesHelper(n, textures);
477 helper_->GenTexturesImmediate(n, textures);
478 helper_->CommandBufferHelper::Flush();
479 GPU_CLIENT_LOG_CODE_BLOCK({
480 for (GLsizei i = 0; i < n; ++i) {
481 GPU_CLIENT_LOG(" " << i << ": " << textures[i]);
487 void GLES2Implementation::GetBooleanv(GLenum pname, GLboolean* params) {
488 GPU_CLIENT_SINGLE_THREAD_CHECK();
489 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLboolean, params);
490 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetBooleanv(" << GLES2Util::GetStringGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
491 TRACE_EVENT0("gpu", "GLES2Implementation::GetBooleanv");
492 if (GetBooleanvHelper(pname, params)) {
495 typedef cmds::GetBooleanv::Result Result;
496 Result* result = GetResultAs<Result*>();
500 result->SetNumResults(0);
501 helper_->GetBooleanv(pname,
502 GetResultShmId(), GetResultShmOffset());
504 result->CopyResult(params);
505 GPU_CLIENT_LOG_CODE_BLOCK({
506 for (int32 i = 0; i < result->GetNumResults(); ++i) {
507 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
512 void GLES2Implementation::GetBufferParameteriv(
513 GLenum target, GLenum pname, GLint* params) {
514 GPU_CLIENT_SINGLE_THREAD_CHECK();
515 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
516 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetBufferParameteriv(" << GLES2Util::GetStringBufferTarget(target) << ", " << GLES2Util::GetStringBufferParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
517 TRACE_EVENT0("gpu", "GLES2Implementation::GetBufferParameteriv");
518 if (GetBufferParameterivHelper(target, pname, params)) {
521 typedef cmds::GetBufferParameteriv::Result Result;
522 Result* result = GetResultAs<Result*>();
526 result->SetNumResults(0);
527 helper_->GetBufferParameteriv(target, pname,
528 GetResultShmId(), GetResultShmOffset());
530 result->CopyResult(params);
531 GPU_CLIENT_LOG_CODE_BLOCK({
532 for (int32 i = 0; i < result->GetNumResults(); ++i) {
533 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
538 void GLES2Implementation::GetFloatv(GLenum pname, GLfloat* params) {
539 GPU_CLIENT_SINGLE_THREAD_CHECK();
540 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetFloatv(" << GLES2Util::GetStringGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
541 TRACE_EVENT0("gpu", "GLES2Implementation::GetFloatv");
542 if (GetFloatvHelper(pname, params)) {
545 typedef cmds::GetFloatv::Result Result;
546 Result* result = GetResultAs<Result*>();
550 result->SetNumResults(0);
551 helper_->GetFloatv(pname,
552 GetResultShmId(), GetResultShmOffset());
554 result->CopyResult(params);
555 GPU_CLIENT_LOG_CODE_BLOCK({
556 for (int32 i = 0; i < result->GetNumResults(); ++i) {
557 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
562 void GLES2Implementation::GetFramebufferAttachmentParameteriv(
563 GLenum target, GLenum attachment, GLenum pname, GLint* params) {
564 GPU_CLIENT_SINGLE_THREAD_CHECK();
565 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
566 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetFramebufferAttachmentParameteriv(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachment(attachment) << ", " << GLES2Util::GetStringFrameBufferParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
567 TRACE_EVENT0("gpu", "GLES2Implementation::GetFramebufferAttachmentParameteriv"); // NOLINT
568 if (GetFramebufferAttachmentParameterivHelper(
569 target, attachment, pname, params)) {
572 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result;
573 Result* result = GetResultAs<Result*>();
577 result->SetNumResults(0);
578 helper_->GetFramebufferAttachmentParameteriv(target, attachment, pname,
579 GetResultShmId(), GetResultShmOffset());
581 result->CopyResult(params);
582 GPU_CLIENT_LOG_CODE_BLOCK({
583 for (int32 i = 0; i < result->GetNumResults(); ++i) {
584 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
589 void GLES2Implementation::GetIntegerv(GLenum pname, GLint* params) {
590 GPU_CLIENT_SINGLE_THREAD_CHECK();
591 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
592 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetIntegerv(" << GLES2Util::GetStringGLState(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
593 TRACE_EVENT0("gpu", "GLES2Implementation::GetIntegerv");
594 if (GetIntegervHelper(pname, params)) {
597 typedef cmds::GetIntegerv::Result Result;
598 Result* result = GetResultAs<Result*>();
602 result->SetNumResults(0);
603 helper_->GetIntegerv(pname,
604 GetResultShmId(), GetResultShmOffset());
606 result->CopyResult(params);
607 GPU_CLIENT_LOG_CODE_BLOCK({
608 for (int32 i = 0; i < result->GetNumResults(); ++i) {
609 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
614 void GLES2Implementation::GetProgramiv(
615 GLuint program, GLenum pname, GLint* params) {
616 GPU_CLIENT_SINGLE_THREAD_CHECK();
617 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
618 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetProgramiv(" << program << ", " << GLES2Util::GetStringProgramParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
619 TRACE_EVENT0("gpu", "GLES2Implementation::GetProgramiv");
620 if (GetProgramivHelper(program, pname, params)) {
623 typedef cmds::GetProgramiv::Result Result;
624 Result* result = GetResultAs<Result*>();
628 result->SetNumResults(0);
629 helper_->GetProgramiv(program, pname,
630 GetResultShmId(), GetResultShmOffset());
632 result->CopyResult(params);
633 GPU_CLIENT_LOG_CODE_BLOCK({
634 for (int32 i = 0; i < result->GetNumResults(); ++i) {
635 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
640 void GLES2Implementation::GetProgramInfoLog(
641 GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) {
642 GPU_CLIENT_SINGLE_THREAD_CHECK();
643 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
644 GPU_CLIENT_LOG("[" << GetLogPrefix()
645 << "] glGetProgramInfoLog" << "("
648 << static_cast<void*>(length) << ", "
649 << static_cast<void*>(infolog) << ")");
650 helper_->SetBucketSize(kResultBucketId, 0);
651 helper_->GetProgramInfoLog(program, kResultBucketId);
653 GLsizei max_size = 0;
654 if (GetBucketAsString(kResultBucketId, &str)) {
657 std::min(static_cast<size_t>(bufsize) - 1, str.size());
658 memcpy(infolog, str.c_str(), max_size);
659 infolog[max_size] = '\0';
660 GPU_CLIENT_LOG("------\n" << infolog << "\n------");
663 if (length != NULL) {
668 void GLES2Implementation::GetRenderbufferParameteriv(
669 GLenum target, GLenum pname, GLint* params) {
670 GPU_CLIENT_SINGLE_THREAD_CHECK();
671 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
672 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetRenderbufferParameteriv(" << GLES2Util::GetStringRenderBufferTarget(target) << ", " << GLES2Util::GetStringRenderBufferParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
673 TRACE_EVENT0("gpu", "GLES2Implementation::GetRenderbufferParameteriv");
674 if (GetRenderbufferParameterivHelper(target, pname, params)) {
677 typedef cmds::GetRenderbufferParameteriv::Result Result;
678 Result* result = GetResultAs<Result*>();
682 result->SetNumResults(0);
683 helper_->GetRenderbufferParameteriv(target, pname,
684 GetResultShmId(), GetResultShmOffset());
686 result->CopyResult(params);
687 GPU_CLIENT_LOG_CODE_BLOCK({
688 for (int32 i = 0; i < result->GetNumResults(); ++i) {
689 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
694 void GLES2Implementation::GetShaderiv(
695 GLuint shader, GLenum pname, GLint* params) {
696 GPU_CLIENT_SINGLE_THREAD_CHECK();
697 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
698 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetShaderiv(" << shader << ", " << GLES2Util::GetStringShaderParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
699 TRACE_EVENT0("gpu", "GLES2Implementation::GetShaderiv");
700 if (GetShaderivHelper(shader, pname, params)) {
703 typedef cmds::GetShaderiv::Result Result;
704 Result* result = GetResultAs<Result*>();
708 result->SetNumResults(0);
709 helper_->GetShaderiv(shader, pname,
710 GetResultShmId(), GetResultShmOffset());
712 result->CopyResult(params);
713 GPU_CLIENT_LOG_CODE_BLOCK({
714 for (int32 i = 0; i < result->GetNumResults(); ++i) {
715 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
720 void GLES2Implementation::GetShaderInfoLog(
721 GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) {
722 GPU_CLIENT_SINGLE_THREAD_CHECK();
723 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
724 GPU_CLIENT_LOG("[" << GetLogPrefix()
725 << "] glGetShaderInfoLog" << "("
728 << static_cast<void*>(length) << ", "
729 << static_cast<void*>(infolog) << ")");
730 helper_->SetBucketSize(kResultBucketId, 0);
731 helper_->GetShaderInfoLog(shader, kResultBucketId);
733 GLsizei max_size = 0;
734 if (GetBucketAsString(kResultBucketId, &str)) {
737 std::min(static_cast<size_t>(bufsize) - 1, str.size());
738 memcpy(infolog, str.c_str(), max_size);
739 infolog[max_size] = '\0';
740 GPU_CLIENT_LOG("------\n" << infolog << "\n------");
743 if (length != NULL) {
748 void GLES2Implementation::GetShaderSource(
749 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) {
750 GPU_CLIENT_SINGLE_THREAD_CHECK();
751 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
752 GPU_CLIENT_LOG("[" << GetLogPrefix()
753 << "] glGetShaderSource" << "("
756 << static_cast<void*>(length) << ", "
757 << static_cast<void*>(source) << ")");
758 helper_->SetBucketSize(kResultBucketId, 0);
759 helper_->GetShaderSource(shader, kResultBucketId);
761 GLsizei max_size = 0;
762 if (GetBucketAsString(kResultBucketId, &str)) {
765 std::min(static_cast<size_t>(bufsize) - 1, str.size());
766 memcpy(source, str.c_str(), max_size);
767 source[max_size] = '\0';
768 GPU_CLIENT_LOG("------\n" << source << "\n------");
771 if (length != NULL) {
776 void GLES2Implementation::GetTexParameterfv(
777 GLenum target, GLenum pname, GLfloat* params) {
778 GPU_CLIENT_SINGLE_THREAD_CHECK();
779 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetTexParameterfv(" << GLES2Util::GetStringGetTexParamTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
780 TRACE_EVENT0("gpu", "GLES2Implementation::GetTexParameterfv");
781 if (GetTexParameterfvHelper(target, pname, params)) {
784 typedef cmds::GetTexParameterfv::Result Result;
785 Result* result = GetResultAs<Result*>();
789 result->SetNumResults(0);
790 helper_->GetTexParameterfv(target, pname,
791 GetResultShmId(), GetResultShmOffset());
793 result->CopyResult(params);
794 GPU_CLIENT_LOG_CODE_BLOCK({
795 for (int32 i = 0; i < result->GetNumResults(); ++i) {
796 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
801 void GLES2Implementation::GetTexParameteriv(
802 GLenum target, GLenum pname, GLint* params) {
803 GPU_CLIENT_SINGLE_THREAD_CHECK();
804 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION(GLint, params);
805 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetTexParameteriv(" << GLES2Util::GetStringGetTexParamTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
806 TRACE_EVENT0("gpu", "GLES2Implementation::GetTexParameteriv");
807 if (GetTexParameterivHelper(target, pname, params)) {
810 typedef cmds::GetTexParameteriv::Result Result;
811 Result* result = GetResultAs<Result*>();
815 result->SetNumResults(0);
816 helper_->GetTexParameteriv(target, pname,
817 GetResultShmId(), GetResultShmOffset());
819 result->CopyResult(params);
820 GPU_CLIENT_LOG_CODE_BLOCK({
821 for (int32 i = 0; i < result->GetNumResults(); ++i) {
822 GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
827 void GLES2Implementation::Hint(GLenum target, GLenum mode) {
828 GPU_CLIENT_SINGLE_THREAD_CHECK();
829 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glHint(" << GLES2Util::GetStringHintTarget(target) << ", " << GLES2Util::GetStringHintMode(mode) << ")"); // NOLINT
830 helper_->Hint(target, mode);
834 GLboolean GLES2Implementation::IsBuffer(GLuint buffer) {
835 GPU_CLIENT_SINGLE_THREAD_CHECK();
836 TRACE_EVENT0("gpu", "GLES2Implementation::IsBuffer");
837 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsBuffer(" << buffer << ")");
838 typedef cmds::IsBuffer::Result Result;
839 Result* result = GetResultAs<Result*>();
844 helper_->IsBuffer(buffer, GetResultShmId(), GetResultShmOffset());
846 GLboolean result_value = *result;
847 GPU_CLIENT_LOG("returned " << result_value);
852 GLboolean GLES2Implementation::IsFramebuffer(GLuint framebuffer) {
853 GPU_CLIENT_SINGLE_THREAD_CHECK();
854 TRACE_EVENT0("gpu", "GLES2Implementation::IsFramebuffer");
855 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsFramebuffer(" << framebuffer << ")"); // NOLINT
856 typedef cmds::IsFramebuffer::Result Result;
857 Result* result = GetResultAs<Result*>();
862 helper_->IsFramebuffer(framebuffer, GetResultShmId(), GetResultShmOffset());
864 GLboolean result_value = *result;
865 GPU_CLIENT_LOG("returned " << result_value);
870 GLboolean GLES2Implementation::IsProgram(GLuint program) {
871 GPU_CLIENT_SINGLE_THREAD_CHECK();
872 TRACE_EVENT0("gpu", "GLES2Implementation::IsProgram");
873 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsProgram(" << program << ")");
874 typedef cmds::IsProgram::Result Result;
875 Result* result = GetResultAs<Result*>();
880 helper_->IsProgram(program, GetResultShmId(), GetResultShmOffset());
882 GLboolean result_value = *result;
883 GPU_CLIENT_LOG("returned " << result_value);
888 GLboolean GLES2Implementation::IsRenderbuffer(GLuint renderbuffer) {
889 GPU_CLIENT_SINGLE_THREAD_CHECK();
890 TRACE_EVENT0("gpu", "GLES2Implementation::IsRenderbuffer");
891 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsRenderbuffer(" << renderbuffer << ")"); // NOLINT
892 typedef cmds::IsRenderbuffer::Result Result;
893 Result* result = GetResultAs<Result*>();
898 helper_->IsRenderbuffer(
899 renderbuffer, GetResultShmId(), GetResultShmOffset());
901 GLboolean result_value = *result;
902 GPU_CLIENT_LOG("returned " << result_value);
907 GLboolean GLES2Implementation::IsShader(GLuint shader) {
908 GPU_CLIENT_SINGLE_THREAD_CHECK();
909 TRACE_EVENT0("gpu", "GLES2Implementation::IsShader");
910 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsShader(" << shader << ")");
911 typedef cmds::IsShader::Result Result;
912 Result* result = GetResultAs<Result*>();
917 helper_->IsShader(shader, GetResultShmId(), GetResultShmOffset());
919 GLboolean result_value = *result;
920 GPU_CLIENT_LOG("returned " << result_value);
925 GLboolean GLES2Implementation::IsTexture(GLuint texture) {
926 GPU_CLIENT_SINGLE_THREAD_CHECK();
927 TRACE_EVENT0("gpu", "GLES2Implementation::IsTexture");
928 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsTexture(" << texture << ")");
929 typedef cmds::IsTexture::Result Result;
930 Result* result = GetResultAs<Result*>();
935 helper_->IsTexture(texture, GetResultShmId(), GetResultShmOffset());
937 GLboolean result_value = *result;
938 GPU_CLIENT_LOG("returned " << result_value);
943 void GLES2Implementation::LineWidth(GLfloat width) {
944 GPU_CLIENT_SINGLE_THREAD_CHECK();
945 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glLineWidth(" << width << ")");
946 helper_->LineWidth(width);
950 void GLES2Implementation::PolygonOffset(GLfloat factor, GLfloat units) {
951 GPU_CLIENT_SINGLE_THREAD_CHECK();
952 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPolygonOffset(" << factor << ", " << units << ")"); // NOLINT
953 helper_->PolygonOffset(factor, units);
957 void GLES2Implementation::ReleaseShaderCompiler() {
958 GPU_CLIENT_SINGLE_THREAD_CHECK();
959 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReleaseShaderCompiler(" << ")");
960 helper_->ReleaseShaderCompiler();
964 void GLES2Implementation::RenderbufferStorage(
965 GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
966 GPU_CLIENT_SINGLE_THREAD_CHECK();
967 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRenderbufferStorage(" << GLES2Util::GetStringRenderBufferTarget(target) << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat) << ", " << width << ", " << height << ")"); // NOLINT
969 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "width < 0");
973 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "height < 0");
976 helper_->RenderbufferStorage(target, internalformat, width, height);
980 void GLES2Implementation::SampleCoverage(GLclampf value, GLboolean invert) {
981 GPU_CLIENT_SINGLE_THREAD_CHECK();
982 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSampleCoverage(" << value << ", " << GLES2Util::GetStringBool(invert) << ")"); // NOLINT
983 helper_->SampleCoverage(value, invert);
987 void GLES2Implementation::Scissor(
988 GLint x, GLint y, GLsizei width, GLsizei height) {
989 GPU_CLIENT_SINGLE_THREAD_CHECK();
990 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glScissor(" << x << ", " << y << ", " << width << ", " << height << ")"); // NOLINT
992 SetGLError(GL_INVALID_VALUE, "glScissor", "width < 0");
996 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0");
999 helper_->Scissor(x, y, width, height);
1003 void GLES2Implementation::StencilFunc(GLenum func, GLint ref, GLuint mask) {
1004 GPU_CLIENT_SINGLE_THREAD_CHECK();
1005 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFunc(" << GLES2Util::GetStringCmpFunction(func) << ", " << ref << ", " << mask << ")"); // NOLINT
1006 helper_->StencilFunc(func, ref, mask);
1010 void GLES2Implementation::StencilFuncSeparate(
1011 GLenum face, GLenum func, GLint ref, GLuint mask) {
1012 GPU_CLIENT_SINGLE_THREAD_CHECK();
1013 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFuncSeparate(" << GLES2Util::GetStringFaceType(face) << ", " << GLES2Util::GetStringCmpFunction(func) << ", " << ref << ", " << mask << ")"); // NOLINT
1014 helper_->StencilFuncSeparate(face, func, ref, mask);
1018 void GLES2Implementation::StencilMask(GLuint mask) {
1019 GPU_CLIENT_SINGLE_THREAD_CHECK();
1020 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilMask(" << mask << ")");
1021 helper_->StencilMask(mask);
1025 void GLES2Implementation::StencilMaskSeparate(GLenum face, GLuint mask) {
1026 GPU_CLIENT_SINGLE_THREAD_CHECK();
1027 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilMaskSeparate(" << GLES2Util::GetStringFaceType(face) << ", " << mask << ")"); // NOLINT
1028 helper_->StencilMaskSeparate(face, mask);
1032 void GLES2Implementation::StencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
1033 GPU_CLIENT_SINGLE_THREAD_CHECK();
1034 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilOp(" << GLES2Util::GetStringStencilOp(fail) << ", " << GLES2Util::GetStringStencilOp(zfail) << ", " << GLES2Util::GetStringStencilOp(zpass) << ")"); // NOLINT
1035 helper_->StencilOp(fail, zfail, zpass);
1039 void GLES2Implementation::StencilOpSeparate(
1040 GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
1041 GPU_CLIENT_SINGLE_THREAD_CHECK();
1042 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilOpSeparate(" << GLES2Util::GetStringFaceType(face) << ", " << GLES2Util::GetStringStencilOp(fail) << ", " << GLES2Util::GetStringStencilOp(zfail) << ", " << GLES2Util::GetStringStencilOp(zpass) << ")"); // NOLINT
1043 helper_->StencilOpSeparate(face, fail, zfail, zpass);
1047 void GLES2Implementation::TexParameterf(
1048 GLenum target, GLenum pname, GLfloat param) {
1049 GPU_CLIENT_SINGLE_THREAD_CHECK();
1050 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameterf(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << param << ")"); // NOLINT
1051 helper_->TexParameterf(target, pname, param);
1055 void GLES2Implementation::TexParameterfv(
1056 GLenum target, GLenum pname, const GLfloat* params) {
1057 GPU_CLIENT_SINGLE_THREAD_CHECK();
1058 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameterfv(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
1059 GPU_CLIENT_LOG("values: " << params[0]);
1060 helper_->TexParameterfvImmediate(target, pname, params);
1064 void GLES2Implementation::TexParameteri(
1065 GLenum target, GLenum pname, GLint param) {
1066 GPU_CLIENT_SINGLE_THREAD_CHECK();
1067 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameteri(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << param << ")"); // NOLINT
1068 helper_->TexParameteri(target, pname, param);
1072 void GLES2Implementation::TexParameteriv(
1073 GLenum target, GLenum pname, const GLint* params) {
1074 GPU_CLIENT_SINGLE_THREAD_CHECK();
1075 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexParameteriv(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << GLES2Util::GetStringTextureParameter(pname) << ", " << static_cast<const void*>(params) << ")"); // NOLINT
1076 GPU_CLIENT_LOG("values: " << params[0]);
1077 helper_->TexParameterivImmediate(target, pname, params);
1081 void GLES2Implementation::Uniform1f(GLint location, GLfloat x) {
1082 GPU_CLIENT_SINGLE_THREAD_CHECK();
1083 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1f(" << location << ", " << x << ")"); // NOLINT
1084 helper_->Uniform1f(location, x);
1088 void GLES2Implementation::Uniform1fv(
1089 GLint location, GLsizei count, const GLfloat* v) {
1090 GPU_CLIENT_SINGLE_THREAD_CHECK();
1091 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1092 GPU_CLIENT_LOG_CODE_BLOCK({
1093 for (GLsizei i = 0; i < count; ++i) {
1094 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 1]);
1098 SetGLError(GL_INVALID_VALUE, "glUniform1fv", "count < 0");
1101 helper_->Uniform1fvImmediate(location, count, v);
1105 void GLES2Implementation::Uniform1i(GLint location, GLint x) {
1106 GPU_CLIENT_SINGLE_THREAD_CHECK();
1107 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1i(" << location << ", " << x << ")"); // NOLINT
1108 helper_->Uniform1i(location, x);
1112 void GLES2Implementation::Uniform1iv(
1113 GLint location, GLsizei count, const GLint* v) {
1114 GPU_CLIENT_SINGLE_THREAD_CHECK();
1115 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1116 GPU_CLIENT_LOG_CODE_BLOCK({
1117 for (GLsizei i = 0; i < count; ++i) {
1118 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 1]);
1122 SetGLError(GL_INVALID_VALUE, "glUniform1iv", "count < 0");
1125 helper_->Uniform1ivImmediate(location, count, v);
1129 void GLES2Implementation::Uniform2f(GLint location, GLfloat x, GLfloat y) {
1130 GPU_CLIENT_SINGLE_THREAD_CHECK();
1131 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2f(" << location << ", " << x << ", " << y << ")"); // NOLINT
1132 helper_->Uniform2f(location, x, y);
1136 void GLES2Implementation::Uniform2fv(
1137 GLint location, GLsizei count, const GLfloat* v) {
1138 GPU_CLIENT_SINGLE_THREAD_CHECK();
1139 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1140 GPU_CLIENT_LOG_CODE_BLOCK({
1141 for (GLsizei i = 0; i < count; ++i) {
1142 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 2] << ", " << v[1 + i * 2]); // NOLINT
1146 SetGLError(GL_INVALID_VALUE, "glUniform2fv", "count < 0");
1149 helper_->Uniform2fvImmediate(location, count, v);
1153 void GLES2Implementation::Uniform2i(GLint location, GLint x, GLint y) {
1154 GPU_CLIENT_SINGLE_THREAD_CHECK();
1155 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2i(" << location << ", " << x << ", " << y << ")"); // NOLINT
1156 helper_->Uniform2i(location, x, y);
1160 void GLES2Implementation::Uniform2iv(
1161 GLint location, GLsizei count, const GLint* v) {
1162 GPU_CLIENT_SINGLE_THREAD_CHECK();
1163 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform2iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1164 GPU_CLIENT_LOG_CODE_BLOCK({
1165 for (GLsizei i = 0; i < count; ++i) {
1166 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 2] << ", " << v[1 + i * 2]); // NOLINT
1170 SetGLError(GL_INVALID_VALUE, "glUniform2iv", "count < 0");
1173 helper_->Uniform2ivImmediate(location, count, v);
1177 void GLES2Implementation::Uniform3f(
1178 GLint location, GLfloat x, GLfloat y, GLfloat z) {
1179 GPU_CLIENT_SINGLE_THREAD_CHECK();
1180 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3f(" << location << ", " << x << ", " << y << ", " << z << ")"); // NOLINT
1181 helper_->Uniform3f(location, x, y, z);
1185 void GLES2Implementation::Uniform3fv(
1186 GLint location, GLsizei count, const GLfloat* v) {
1187 GPU_CLIENT_SINGLE_THREAD_CHECK();
1188 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3fv(" << 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 * 3] << ", " << v[1 + i * 3] << ", " << v[2 + i * 3]); // NOLINT
1195 SetGLError(GL_INVALID_VALUE, "glUniform3fv", "count < 0");
1198 helper_->Uniform3fvImmediate(location, count, v);
1202 void GLES2Implementation::Uniform3i(
1203 GLint location, GLint x, GLint y, GLint z) {
1204 GPU_CLIENT_SINGLE_THREAD_CHECK();
1205 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3i(" << location << ", " << x << ", " << y << ", " << z << ")"); // NOLINT
1206 helper_->Uniform3i(location, x, y, z);
1210 void GLES2Implementation::Uniform3iv(
1211 GLint location, GLsizei count, const GLint* v) {
1212 GPU_CLIENT_SINGLE_THREAD_CHECK();
1213 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform3iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1214 GPU_CLIENT_LOG_CODE_BLOCK({
1215 for (GLsizei i = 0; i < count; ++i) {
1216 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 3] << ", " << v[1 + i * 3] << ", " << v[2 + i * 3]); // NOLINT
1220 SetGLError(GL_INVALID_VALUE, "glUniform3iv", "count < 0");
1223 helper_->Uniform3ivImmediate(location, count, v);
1227 void GLES2Implementation::Uniform4f(
1228 GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
1229 GPU_CLIENT_SINGLE_THREAD_CHECK();
1230 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4f(" << location << ", " << x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1231 helper_->Uniform4f(location, x, y, z, w);
1235 void GLES2Implementation::Uniform4fv(
1236 GLint location, GLsizei count, const GLfloat* v) {
1237 GPU_CLIENT_SINGLE_THREAD_CHECK();
1238 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4fv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1239 GPU_CLIENT_LOG_CODE_BLOCK({
1240 for (GLsizei i = 0; i < count; ++i) {
1241 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 4] << ", " << v[1 + i * 4] << ", " << v[2 + i * 4] << ", " << v[3 + i * 4]); // NOLINT
1245 SetGLError(GL_INVALID_VALUE, "glUniform4fv", "count < 0");
1248 helper_->Uniform4fvImmediate(location, count, v);
1252 void GLES2Implementation::Uniform4i(
1253 GLint location, GLint x, GLint y, GLint z, GLint w) {
1254 GPU_CLIENT_SINGLE_THREAD_CHECK();
1255 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4i(" << location << ", " << x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1256 helper_->Uniform4i(location, x, y, z, w);
1260 void GLES2Implementation::Uniform4iv(
1261 GLint location, GLsizei count, const GLint* v) {
1262 GPU_CLIENT_SINGLE_THREAD_CHECK();
1263 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform4iv(" << location << ", " << count << ", " << static_cast<const void*>(v) << ")"); // NOLINT
1264 GPU_CLIENT_LOG_CODE_BLOCK({
1265 for (GLsizei i = 0; i < count; ++i) {
1266 GPU_CLIENT_LOG(" " << i << ": " << v[0 + i * 4] << ", " << v[1 + i * 4] << ", " << v[2 + i * 4] << ", " << v[3 + i * 4]); // NOLINT
1270 SetGLError(GL_INVALID_VALUE, "glUniform4iv", "count < 0");
1273 helper_->Uniform4ivImmediate(location, count, v);
1277 void GLES2Implementation::UniformMatrix2fv(
1278 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1279 GPU_CLIENT_SINGLE_THREAD_CHECK();
1280 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix2fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_cast<const void*>(value) << ")"); // NOLINT
1281 GPU_CLIENT_LOG_CODE_BLOCK({
1282 for (GLsizei i = 0; i < count; ++i) {
1283 GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 4] << ", " << value[1 + i * 4] << ", " << value[2 + i * 4] << ", " << value[3 + i * 4]); // NOLINT
1287 SetGLError(GL_INVALID_VALUE, "glUniformMatrix2fv", "count < 0");
1290 helper_->UniformMatrix2fvImmediate(location, count, transpose, value);
1294 void GLES2Implementation::UniformMatrix3fv(
1295 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1296 GPU_CLIENT_SINGLE_THREAD_CHECK();
1297 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix3fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_cast<const void*>(value) << ")"); // NOLINT
1298 GPU_CLIENT_LOG_CODE_BLOCK({
1299 for (GLsizei i = 0; i < count; ++i) {
1300 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] << ", " << value[7 + i * 9] << ", " << value[8 + i * 9]); // NOLINT
1304 SetGLError(GL_INVALID_VALUE, "glUniformMatrix3fv", "count < 0");
1307 helper_->UniformMatrix3fvImmediate(location, count, transpose, value);
1311 void GLES2Implementation::UniformMatrix4fv(
1312 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
1313 GPU_CLIENT_SINGLE_THREAD_CHECK();
1314 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniformMatrix4fv(" << location << ", " << count << ", " << GLES2Util::GetStringBool(transpose) << ", " << static_cast<const void*>(value) << ")"); // NOLINT
1315 GPU_CLIENT_LOG_CODE_BLOCK({
1316 for (GLsizei i = 0; i < count; ++i) {
1317 GPU_CLIENT_LOG(" " << i << ": " << value[0 + i * 16] << ", " << value[1 + i * 16] << ", " << value[2 + i * 16] << ", " << value[3 + i * 16] << ", " << value[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[12 + i * 16] << ", " << value[13 + i * 16] << ", " << value[14 + i * 16] << ", " << value[15 + i * 16]); // NOLINT
1321 SetGLError(GL_INVALID_VALUE, "glUniformMatrix4fv", "count < 0");
1324 helper_->UniformMatrix4fvImmediate(location, count, transpose, value);
1328 void GLES2Implementation::ValidateProgram(GLuint program) {
1329 GPU_CLIENT_SINGLE_THREAD_CHECK();
1330 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glValidateProgram(" << program << ")"); // NOLINT
1331 helper_->ValidateProgram(program);
1335 void GLES2Implementation::VertexAttrib1f(GLuint indx, GLfloat x) {
1336 GPU_CLIENT_SINGLE_THREAD_CHECK();
1337 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib1f(" << indx << ", " << x << ")"); // NOLINT
1338 helper_->VertexAttrib1f(indx, x);
1342 void GLES2Implementation::VertexAttrib1fv(GLuint indx, const GLfloat* values) {
1343 GPU_CLIENT_SINGLE_THREAD_CHECK();
1344 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib1fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1345 GPU_CLIENT_LOG("values: " << values[0]);
1346 helper_->VertexAttrib1fvImmediate(indx, values);
1350 void GLES2Implementation::VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
1351 GPU_CLIENT_SINGLE_THREAD_CHECK();
1352 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib2f(" << indx << ", " << x << ", " << y << ")"); // NOLINT
1353 helper_->VertexAttrib2f(indx, x, y);
1357 void GLES2Implementation::VertexAttrib2fv(GLuint indx, const GLfloat* values) {
1358 GPU_CLIENT_SINGLE_THREAD_CHECK();
1359 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib2fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1360 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1]);
1361 helper_->VertexAttrib2fvImmediate(indx, values);
1365 void GLES2Implementation::VertexAttrib3f(
1366 GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
1367 GPU_CLIENT_SINGLE_THREAD_CHECK();
1368 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib3f(" << indx << ", " << x << ", " << y << ", " << z << ")"); // NOLINT
1369 helper_->VertexAttrib3f(indx, x, y, z);
1373 void GLES2Implementation::VertexAttrib3fv(GLuint indx, const GLfloat* values) {
1374 GPU_CLIENT_SINGLE_THREAD_CHECK();
1375 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib3fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1376 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", " << values[2]); // NOLINT
1377 helper_->VertexAttrib3fvImmediate(indx, values);
1381 void GLES2Implementation::VertexAttrib4f(
1382 GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
1383 GPU_CLIENT_SINGLE_THREAD_CHECK();
1384 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib4f(" << indx << ", " << x << ", " << y << ", " << z << ", " << w << ")"); // NOLINT
1385 helper_->VertexAttrib4f(indx, x, y, z, w);
1389 void GLES2Implementation::VertexAttrib4fv(GLuint indx, const GLfloat* values) {
1390 GPU_CLIENT_SINGLE_THREAD_CHECK();
1391 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttrib4fv(" << indx << ", " << static_cast<const void*>(values) << ")"); // NOLINT
1392 GPU_CLIENT_LOG("values: " << values[0] << ", " << values[1] << ", " << values[2] << ", " << values[3]); // NOLINT
1393 helper_->VertexAttrib4fvImmediate(indx, values);
1397 void GLES2Implementation::Viewport(
1398 GLint x, GLint y, GLsizei width, GLsizei height) {
1399 GPU_CLIENT_SINGLE_THREAD_CHECK();
1400 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glViewport(" << x << ", " << y << ", " << width << ", " << height << ")"); // NOLINT
1402 SetGLError(GL_INVALID_VALUE, "glViewport", "width < 0");
1406 SetGLError(GL_INVALID_VALUE, "glViewport", "height < 0");
1409 helper_->Viewport(x, y, width, height);
1413 void GLES2Implementation::BlitFramebufferEXT(
1414 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0,
1415 GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
1416 GPU_CLIENT_SINGLE_THREAD_CHECK();
1417 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlitFramebufferEXT(" << srcX0 << ", " << srcY0 << ", " << srcX1 << ", " << srcY1 << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 << ", " << dstY1 << ", " << mask << ", " << GLES2Util::GetStringBlitFilter(filter) << ")"); // NOLINT
1418 helper_->BlitFramebufferEXT(
1419 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
1423 void GLES2Implementation::RenderbufferStorageMultisampleEXT(
1424 GLenum target, GLsizei samples, GLenum internalformat, GLsizei width,
1426 GPU_CLIENT_SINGLE_THREAD_CHECK();
1427 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRenderbufferStorageMultisampleEXT(" << GLES2Util::GetStringRenderBufferTarget(target) << ", " << samples << ", " << GLES2Util::GetStringRenderBufferFormat(internalformat) << ", " << width << ", " << height << ")"); // NOLINT
1430 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0");
1435 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0");
1440 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0");
1443 helper_->RenderbufferStorageMultisampleEXT(
1444 target, samples, internalformat, width, height);
1448 void GLES2Implementation::FramebufferTexture2DMultisampleEXT(
1449 GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
1450 GLint level, GLsizei samples) {
1451 GPU_CLIENT_SINGLE_THREAD_CHECK();
1452 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferTexture2DMultisampleEXT(" << GLES2Util::GetStringFrameBufferTarget(target) << ", " << GLES2Util::GetStringAttachment(attachment) << ", " << GLES2Util::GetStringTextureTarget(textarget) << ", " << texture << ", " << level << ", " << samples << ")"); // NOLINT
1455 GL_INVALID_VALUE, "glFramebufferTexture2DMultisampleEXT", "samples < 0"); // NOLINT
1458 helper_->FramebufferTexture2DMultisampleEXT(
1459 target, attachment, textarget, texture, level, samples);
1463 void GLES2Implementation::TexStorage2DEXT(
1464 GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width,
1466 GPU_CLIENT_SINGLE_THREAD_CHECK();
1467 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexStorage2DEXT(" << GLES2Util::GetStringTextureTarget(target) << ", " << levels << ", " << GLES2Util::GetStringTextureInternalFormatStorage(internalFormat) << ", " << width << ", " << height << ")"); // NOLINT
1469 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "levels < 0");
1473 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "width < 0");
1477 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0");
1480 helper_->TexStorage2DEXT(target, levels, internalFormat, width, height);
1484 void GLES2Implementation::GenQueriesEXT(GLsizei n, GLuint* queries) {
1485 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenQueriesEXT(" << n << ", " << static_cast<const void*>(queries) << ")"); // NOLINT
1487 SetGLError(GL_INVALID_VALUE, "glGenQueriesEXT", "n < 0");
1490 GPU_CLIENT_SINGLE_THREAD_CHECK();
1491 GetIdHandler(id_namespaces::kQueries)->
1492 MakeIds(this, 0, n, queries);
1493 GenQueriesEXTHelper(n, queries);
1494 helper_->GenQueriesEXTImmediate(n, queries);
1495 helper_->CommandBufferHelper::Flush();
1496 GPU_CLIENT_LOG_CODE_BLOCK({
1497 for (GLsizei i = 0; i < n; ++i) {
1498 GPU_CLIENT_LOG(" " << i << ": " << queries[i]);
1504 void GLES2Implementation::DeleteQueriesEXT(GLsizei n, const GLuint* queries) {
1505 GPU_CLIENT_SINGLE_THREAD_CHECK();
1506 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteQueriesEXT(" << n << ", " << static_cast<const void*>(queries) << ")"); // NOLINT
1507 GPU_CLIENT_LOG_CODE_BLOCK({
1508 for (GLsizei i = 0; i < n; ++i) {
1509 GPU_CLIENT_LOG(" " << i << ": " << queries[i]);
1512 GPU_CLIENT_DCHECK_CODE_BLOCK({
1513 for (GLsizei i = 0; i < n; ++i) {
1514 GPU_DCHECK(queries[i] != 0);
1518 SetGLError(GL_INVALID_VALUE, "glDeleteQueriesEXT", "n < 0");
1521 DeleteQueriesEXTHelper(n, queries);
1525 void GLES2Implementation::GenVertexArraysOES(GLsizei n, GLuint* arrays) {
1526 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenVertexArraysOES(" << n << ", " << static_cast<const void*>(arrays) << ")"); // NOLINT
1528 SetGLError(GL_INVALID_VALUE, "glGenVertexArraysOES", "n < 0");
1531 GPU_CLIENT_SINGLE_THREAD_CHECK();
1532 GetIdHandler(id_namespaces::kVertexArrays)->
1533 MakeIds(this, 0, n, arrays);
1534 GenVertexArraysOESHelper(n, arrays);
1535 helper_->GenVertexArraysOESImmediate(n, arrays);
1536 helper_->CommandBufferHelper::Flush();
1537 GPU_CLIENT_LOG_CODE_BLOCK({
1538 for (GLsizei i = 0; i < n; ++i) {
1539 GPU_CLIENT_LOG(" " << i << ": " << arrays[i]);
1545 void GLES2Implementation::DeleteVertexArraysOES(
1546 GLsizei n, const GLuint* arrays) {
1547 GPU_CLIENT_SINGLE_THREAD_CHECK();
1548 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteVertexArraysOES(" << n << ", " << static_cast<const void*>(arrays) << ")"); // NOLINT
1549 GPU_CLIENT_LOG_CODE_BLOCK({
1550 for (GLsizei i = 0; i < n; ++i) {
1551 GPU_CLIENT_LOG(" " << i << ": " << arrays[i]);
1554 GPU_CLIENT_DCHECK_CODE_BLOCK({
1555 for (GLsizei i = 0; i < n; ++i) {
1556 GPU_DCHECK(arrays[i] != 0);
1560 SetGLError(GL_INVALID_VALUE, "glDeleteVertexArraysOES", "n < 0");
1563 DeleteVertexArraysOESHelper(n, arrays);
1567 GLboolean GLES2Implementation::IsVertexArrayOES(GLuint array) {
1568 GPU_CLIENT_SINGLE_THREAD_CHECK();
1569 TRACE_EVENT0("gpu", "GLES2Implementation::IsVertexArrayOES");
1570 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsVertexArrayOES(" << array << ")"); // NOLINT
1571 typedef cmds::IsVertexArrayOES::Result Result;
1572 Result* result = GetResultAs<Result*>();
1577 helper_->IsVertexArrayOES(array, GetResultShmId(), GetResultShmOffset());
1579 GLboolean result_value = *result;
1580 GPU_CLIENT_LOG("returned " << result_value);
1582 return result_value;
1585 void GLES2Implementation::BindVertexArrayOES(GLuint array) {
1586 GPU_CLIENT_SINGLE_THREAD_CHECK();
1587 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindVertexArrayOES(" << array << ")"); // NOLINT
1588 if (IsVertexArrayReservedId(array)) {
1590 GL_INVALID_OPERATION, "BindVertexArrayOES", "array reserved id");
1593 if (BindVertexArrayHelper(array)) {
1594 helper_->BindVertexArrayOES(array);
1599 void GLES2Implementation::GetTranslatedShaderSourceANGLE(
1600 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) {
1601 GPU_CLIENT_SINGLE_THREAD_CHECK();
1602 GPU_CLIENT_VALIDATE_DESTINATION_OPTIONAL_INITALIZATION(GLsizei, length);
1603 GPU_CLIENT_LOG("[" << GetLogPrefix()
1604 << "] glGetTranslatedShaderSourceANGLE" << "("
1607 << static_cast<void*>(length) << ", "
1608 << static_cast<void*>(source) << ")");
1609 helper_->SetBucketSize(kResultBucketId, 0);
1610 helper_->GetTranslatedShaderSourceANGLE(shader, kResultBucketId);
1612 GLsizei max_size = 0;
1613 if (GetBucketAsString(kResultBucketId, &str)) {
1616 std::min(static_cast<size_t>(bufsize) - 1, str.size());
1617 memcpy(source, str.c_str(), max_size);
1618 source[max_size] = '\0';
1619 GPU_CLIENT_LOG("------\n" << source << "\n------");
1622 if (length != NULL) {
1627 void GLES2Implementation::TexImageIOSurface2DCHROMIUM(
1628 GLenum target, GLsizei width, GLsizei height, GLuint ioSurfaceId,
1630 GPU_CLIENT_SINGLE_THREAD_CHECK();
1631 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexImageIOSurface2DCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << width << ", " << height << ", " << ioSurfaceId << ", " << plane << ")"); // NOLINT
1633 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0");
1638 GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0");
1641 helper_->TexImageIOSurface2DCHROMIUM(
1642 target, width, height, ioSurfaceId, plane);
1646 void GLES2Implementation::CopyTextureCHROMIUM(
1647 GLenum target, GLenum source_id, GLenum dest_id, GLint level,
1648 GLint internalformat, GLenum dest_type) {
1649 GPU_CLIENT_SINGLE_THREAD_CHECK();
1650 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCopyTextureCHROMIUM(" << GLES2Util::GetStringEnum(target) << ", " << GLES2Util::GetStringEnum(source_id) << ", " << GLES2Util::GetStringEnum(dest_id) << ", " << level << ", " << internalformat << ", " << GLES2Util::GetStringPixelType(dest_type) << ")"); // NOLINT
1651 helper_->CopyTextureCHROMIUM(
1652 target, source_id, dest_id, level, internalformat, dest_type);
1656 void GLES2Implementation::ProduceTextureCHROMIUM(
1657 GLenum target, const GLbyte* mailbox) {
1658 GPU_CLIENT_SINGLE_THREAD_CHECK();
1659 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glProduceTextureCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << static_cast<const void*>(mailbox) << ")"); // NOLINT
1660 GPU_CLIENT_LOG("values: " << mailbox[0] << ", " << mailbox[1] << ", " << mailbox[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[30] << ", " << 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] << ", " << mailbox[51] << ", " << mailbox[52] << ", " << mailbox[53] << ", " << mailbox[54] << ", " << mailbox[55] << ", " << mailbox[56] << ", " << mailbox[57] << ", " << mailbox[58] << ", " << mailbox[59] << ", " << mailbox[60] << ", " << mailbox[61] << ", " << mailbox[62] << ", " << mailbox[63]); // NOLINT
1661 helper_->ProduceTextureCHROMIUMImmediate(target, mailbox);
1665 void GLES2Implementation::ConsumeTextureCHROMIUM(
1666 GLenum target, const GLbyte* mailbox) {
1667 GPU_CLIENT_SINGLE_THREAD_CHECK();
1668 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glConsumeTextureCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << static_cast<const void*>(mailbox) << ")"); // NOLINT
1669 GPU_CLIENT_LOG("values: " << mailbox[0] << ", " << mailbox[1] << ", " << mailbox[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[30] << ", " << 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] << ", " << mailbox[51] << ", " << mailbox[52] << ", " << mailbox[53] << ", " << mailbox[54] << ", " << mailbox[55] << ", " << mailbox[56] << ", " << mailbox[57] << ", " << mailbox[58] << ", " << mailbox[59] << ", " << mailbox[60] << ", " << mailbox[61] << ", " << mailbox[62] << ", " << mailbox[63]); // NOLINT
1670 helper_->ConsumeTextureCHROMIUMImmediate(target, mailbox);
1674 void GLES2Implementation::BindTexImage2DCHROMIUM(
1675 GLenum target, GLint imageId) {
1676 GPU_CLIENT_SINGLE_THREAD_CHECK();
1677 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindTexImage2DCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << imageId << ")"); // NOLINT
1678 helper_->BindTexImage2DCHROMIUM(target, imageId);
1682 void GLES2Implementation::ReleaseTexImage2DCHROMIUM(
1683 GLenum target, GLint imageId) {
1684 GPU_CLIENT_SINGLE_THREAD_CHECK();
1685 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReleaseTexImage2DCHROMIUM(" << GLES2Util::GetStringTextureBindTarget(target) << ", " << imageId << ")"); // NOLINT
1686 helper_->ReleaseTexImage2DCHROMIUM(target, imageId);
1690 void GLES2Implementation::DiscardFramebufferEXT(
1691 GLenum target, GLsizei count, const GLenum* attachments) {
1692 GPU_CLIENT_SINGLE_THREAD_CHECK();
1693 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDiscardFramebufferEXT(" << GLES2Util::GetStringEnum(target) << ", " << count << ", " << static_cast<const void*>(attachments) << ")"); // NOLINT
1694 GPU_CLIENT_LOG_CODE_BLOCK({
1695 for (GLsizei i = 0; i < count; ++i) {
1696 GPU_CLIENT_LOG(" " << i << ": " << attachments[0 + i * 1]);
1700 SetGLError(GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0");
1703 helper_->DiscardFramebufferEXTImmediate(target, count, attachments);
1707 void GLES2Implementation::LoseContextCHROMIUM(GLenum current, GLenum other) {
1708 GPU_CLIENT_SINGLE_THREAD_CHECK();
1709 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glLoseContextCHROMIUM(" << GLES2Util::GetStringEnum(current) << ", " << GLES2Util::GetStringEnum(other) << ")"); // NOLINT
1710 helper_->LoseContextCHROMIUM(current, other);
1714 void GLES2Implementation::WaitSyncPointCHROMIUM(GLuint sync_point) {
1715 GPU_CLIENT_SINGLE_THREAD_CHECK();
1716 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glWaitSyncPointCHROMIUM(" << sync_point << ")"); // NOLINT
1717 helper_->WaitSyncPointCHROMIUM(sync_point);
1721 void GLES2Implementation::DrawBuffersEXT(GLsizei count, const GLenum* bufs) {
1722 GPU_CLIENT_SINGLE_THREAD_CHECK();
1723 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDrawBuffersEXT(" << count << ", " << static_cast<const void*>(bufs) << ")"); // NOLINT
1724 GPU_CLIENT_LOG_CODE_BLOCK({
1725 for (GLsizei i = 0; i < count; ++i) {
1726 GPU_CLIENT_LOG(" " << i << ": " << bufs[0 + i * 1]);
1730 SetGLError(GL_INVALID_VALUE, "glDrawBuffersEXT", "count < 0");
1733 helper_->DrawBuffersEXTImmediate(count, bufs);
1737 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_