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_