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

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

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

Powered by Google App Engine
This is Rietveld 408576698