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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h

Issue 10535073: Enforce compressed texture restrictions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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 // It is included by gles2_cmd_decoder.cc 9 // It is included by gles2_cmd_decoder.cc
10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 10 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
(...skipping 12 matching lines...) Expand all
23 GLuint shader = c.shader; 23 GLuint shader = c.shader;
24 DoAttachShader(program, shader); 24 DoAttachShader(program, shader);
25 return error::kNoError; 25 return error::kNoError;
26 } 26 }
27 27
28 error::Error GLES2DecoderImpl::HandleBindBuffer( 28 error::Error GLES2DecoderImpl::HandleBindBuffer(
29 uint32 immediate_data_size, const gles2::BindBuffer& c) { 29 uint32 immediate_data_size, const gles2::BindBuffer& c) {
30 GLenum target = static_cast<GLenum>(c.target); 30 GLenum target = static_cast<GLenum>(c.target);
31 GLuint buffer = c.buffer; 31 GLuint buffer = c.buffer;
32 if (!validators_->buffer_target.IsValid(target)) { 32 if (!validators_->buffer_target.IsValid(target)) {
33 SetGLError(GL_INVALID_ENUM, "glBindBuffer: target GL_INVALID_ENUM"); 33 SetGLError(GL_INVALID_ENUM, "glBindBuffer", "target GL_INVALID_ENUM");
34 return error::kNoError; 34 return error::kNoError;
35 } 35 }
36 DoBindBuffer(target, buffer); 36 DoBindBuffer(target, buffer);
37 return error::kNoError; 37 return error::kNoError;
38 } 38 }
39 39
40 error::Error GLES2DecoderImpl::HandleBindFramebuffer( 40 error::Error GLES2DecoderImpl::HandleBindFramebuffer(
41 uint32 immediate_data_size, const gles2::BindFramebuffer& c) { 41 uint32 immediate_data_size, const gles2::BindFramebuffer& c) {
42 GLenum target = static_cast<GLenum>(c.target); 42 GLenum target = static_cast<GLenum>(c.target);
43 GLuint framebuffer = c.framebuffer; 43 GLuint framebuffer = c.framebuffer;
44 if (!validators_->frame_buffer_target.IsValid(target)) { 44 if (!validators_->frame_buffer_target.IsValid(target)) {
45 SetGLError(GL_INVALID_ENUM, "glBindFramebuffer: target GL_INVALID_ENUM"); 45 SetGLError(GL_INVALID_ENUM, "glBindFramebuffer", "target GL_INVALID_ENUM");
46 return error::kNoError; 46 return error::kNoError;
47 } 47 }
48 DoBindFramebuffer(target, framebuffer); 48 DoBindFramebuffer(target, framebuffer);
49 return error::kNoError; 49 return error::kNoError;
50 } 50 }
51 51
52 error::Error GLES2DecoderImpl::HandleBindRenderbuffer( 52 error::Error GLES2DecoderImpl::HandleBindRenderbuffer(
53 uint32 immediate_data_size, const gles2::BindRenderbuffer& c) { 53 uint32 immediate_data_size, const gles2::BindRenderbuffer& c) {
54 GLenum target = static_cast<GLenum>(c.target); 54 GLenum target = static_cast<GLenum>(c.target);
55 GLuint renderbuffer = c.renderbuffer; 55 GLuint renderbuffer = c.renderbuffer;
56 if (!validators_->render_buffer_target.IsValid(target)) { 56 if (!validators_->render_buffer_target.IsValid(target)) {
57 SetGLError(GL_INVALID_ENUM, "glBindRenderbuffer: target GL_INVALID_ENUM"); 57 SetGLError(
58 GL_INVALID_ENUM, "glBindRenderbuffer", "target GL_INVALID_ENUM");
58 return error::kNoError; 59 return error::kNoError;
59 } 60 }
60 DoBindRenderbuffer(target, renderbuffer); 61 DoBindRenderbuffer(target, renderbuffer);
61 return error::kNoError; 62 return error::kNoError;
62 } 63 }
63 64
64 error::Error GLES2DecoderImpl::HandleBindTexture( 65 error::Error GLES2DecoderImpl::HandleBindTexture(
65 uint32 immediate_data_size, const gles2::BindTexture& c) { 66 uint32 immediate_data_size, const gles2::BindTexture& c) {
66 GLenum target = static_cast<GLenum>(c.target); 67 GLenum target = static_cast<GLenum>(c.target);
67 GLuint texture = c.texture; 68 GLuint texture = c.texture;
68 if (!validators_->texture_bind_target.IsValid(target)) { 69 if (!validators_->texture_bind_target.IsValid(target)) {
69 SetGLError(GL_INVALID_ENUM, "glBindTexture: target GL_INVALID_ENUM"); 70 SetGLError(GL_INVALID_ENUM, "glBindTexture", "target GL_INVALID_ENUM");
70 return error::kNoError; 71 return error::kNoError;
71 } 72 }
72 DoBindTexture(target, texture); 73 DoBindTexture(target, texture);
73 return error::kNoError; 74 return error::kNoError;
74 } 75 }
75 76
76 error::Error GLES2DecoderImpl::HandleBlendColor( 77 error::Error GLES2DecoderImpl::HandleBlendColor(
77 uint32 immediate_data_size, const gles2::BlendColor& c) { 78 uint32 immediate_data_size, const gles2::BlendColor& c) {
78 GLclampf red = static_cast<GLclampf>(c.red); 79 GLclampf red = static_cast<GLclampf>(c.red);
79 GLclampf green = static_cast<GLclampf>(c.green); 80 GLclampf green = static_cast<GLclampf>(c.green);
80 GLclampf blue = static_cast<GLclampf>(c.blue); 81 GLclampf blue = static_cast<GLclampf>(c.blue);
81 GLclampf alpha = static_cast<GLclampf>(c.alpha); 82 GLclampf alpha = static_cast<GLclampf>(c.alpha);
82 glBlendColor(red, green, blue, alpha); 83 glBlendColor(red, green, blue, alpha);
83 return error::kNoError; 84 return error::kNoError;
84 } 85 }
85 86
86 error::Error GLES2DecoderImpl::HandleBlendEquation( 87 error::Error GLES2DecoderImpl::HandleBlendEquation(
87 uint32 immediate_data_size, const gles2::BlendEquation& c) { 88 uint32 immediate_data_size, const gles2::BlendEquation& c) {
88 GLenum mode = static_cast<GLenum>(c.mode); 89 GLenum mode = static_cast<GLenum>(c.mode);
89 if (!validators_->equation.IsValid(mode)) { 90 if (!validators_->equation.IsValid(mode)) {
90 SetGLError(GL_INVALID_ENUM, "glBlendEquation: mode GL_INVALID_ENUM"); 91 SetGLError(GL_INVALID_ENUM, "glBlendEquation", "mode GL_INVALID_ENUM");
91 return error::kNoError; 92 return error::kNoError;
92 } 93 }
93 glBlendEquation(mode); 94 glBlendEquation(mode);
94 return error::kNoError; 95 return error::kNoError;
95 } 96 }
96 97
97 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate( 98 error::Error GLES2DecoderImpl::HandleBlendEquationSeparate(
98 uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) { 99 uint32 immediate_data_size, const gles2::BlendEquationSeparate& c) {
99 GLenum modeRGB = static_cast<GLenum>(c.modeRGB); 100 GLenum modeRGB = static_cast<GLenum>(c.modeRGB);
100 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha); 101 GLenum modeAlpha = static_cast<GLenum>(c.modeAlpha);
101 if (!validators_->equation.IsValid(modeRGB)) { 102 if (!validators_->equation.IsValid(modeRGB)) {
102 SetGLError( 103 SetGLError(
103 GL_INVALID_ENUM, "glBlendEquationSeparate: modeRGB GL_INVALID_ENUM"); 104 GL_INVALID_ENUM, "glBlendEquationSeparate", "modeRGB GL_INVALID_ENUM");
104 return error::kNoError; 105 return error::kNoError;
105 } 106 }
106 if (!validators_->equation.IsValid(modeAlpha)) { 107 if (!validators_->equation.IsValid(modeAlpha)) {
107 SetGLError( 108 SetGLError(
108 GL_INVALID_ENUM, "glBlendEquationSeparate: modeAlpha GL_INVALID_ENUM"); 109 GL_INVALID_ENUM, "glBlendEquationSeparate", "modeAlpha GL_INVALID_ENUM") ; // NOLINT
109 return error::kNoError; 110 return error::kNoError;
110 } 111 }
111 glBlendEquationSeparate(modeRGB, modeAlpha); 112 glBlendEquationSeparate(modeRGB, modeAlpha);
112 return error::kNoError; 113 return error::kNoError;
113 } 114 }
114 115
115 error::Error GLES2DecoderImpl::HandleBlendFunc( 116 error::Error GLES2DecoderImpl::HandleBlendFunc(
116 uint32 immediate_data_size, const gles2::BlendFunc& c) { 117 uint32 immediate_data_size, const gles2::BlendFunc& c) {
117 GLenum sfactor = static_cast<GLenum>(c.sfactor); 118 GLenum sfactor = static_cast<GLenum>(c.sfactor);
118 GLenum dfactor = static_cast<GLenum>(c.dfactor); 119 GLenum dfactor = static_cast<GLenum>(c.dfactor);
119 if (!validators_->src_blend_factor.IsValid(sfactor)) { 120 if (!validators_->src_blend_factor.IsValid(sfactor)) {
120 SetGLError(GL_INVALID_ENUM, "glBlendFunc: sfactor GL_INVALID_ENUM"); 121 SetGLError(GL_INVALID_ENUM, "glBlendFunc", "sfactor GL_INVALID_ENUM");
121 return error::kNoError; 122 return error::kNoError;
122 } 123 }
123 if (!validators_->dst_blend_factor.IsValid(dfactor)) { 124 if (!validators_->dst_blend_factor.IsValid(dfactor)) {
124 SetGLError(GL_INVALID_ENUM, "glBlendFunc: dfactor GL_INVALID_ENUM"); 125 SetGLError(GL_INVALID_ENUM, "glBlendFunc", "dfactor GL_INVALID_ENUM");
125 return error::kNoError; 126 return error::kNoError;
126 } 127 }
127 glBlendFunc(sfactor, dfactor); 128 glBlendFunc(sfactor, dfactor);
128 return error::kNoError; 129 return error::kNoError;
129 } 130 }
130 131
131 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate( 132 error::Error GLES2DecoderImpl::HandleBlendFuncSeparate(
132 uint32 immediate_data_size, const gles2::BlendFuncSeparate& c) { 133 uint32 immediate_data_size, const gles2::BlendFuncSeparate& c) {
133 GLenum srcRGB = static_cast<GLenum>(c.srcRGB); 134 GLenum srcRGB = static_cast<GLenum>(c.srcRGB);
134 GLenum dstRGB = static_cast<GLenum>(c.dstRGB); 135 GLenum dstRGB = static_cast<GLenum>(c.dstRGB);
135 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha); 136 GLenum srcAlpha = static_cast<GLenum>(c.srcAlpha);
136 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha); 137 GLenum dstAlpha = static_cast<GLenum>(c.dstAlpha);
137 if (!validators_->src_blend_factor.IsValid(srcRGB)) { 138 if (!validators_->src_blend_factor.IsValid(srcRGB)) {
138 SetGLError(GL_INVALID_ENUM, "glBlendFuncSeparate: srcRGB GL_INVALID_ENUM"); 139 SetGLError(
140 GL_INVALID_ENUM, "glBlendFuncSeparate", "srcRGB GL_INVALID_ENUM");
139 return error::kNoError; 141 return error::kNoError;
140 } 142 }
141 if (!validators_->dst_blend_factor.IsValid(dstRGB)) { 143 if (!validators_->dst_blend_factor.IsValid(dstRGB)) {
142 SetGLError(GL_INVALID_ENUM, "glBlendFuncSeparate: dstRGB GL_INVALID_ENUM"); 144 SetGLError(
145 GL_INVALID_ENUM, "glBlendFuncSeparate", "dstRGB GL_INVALID_ENUM");
143 return error::kNoError; 146 return error::kNoError;
144 } 147 }
145 if (!validators_->src_blend_factor.IsValid(srcAlpha)) { 148 if (!validators_->src_blend_factor.IsValid(srcAlpha)) {
146 SetGLError( 149 SetGLError(
147 GL_INVALID_ENUM, "glBlendFuncSeparate: srcAlpha GL_INVALID_ENUM"); 150 GL_INVALID_ENUM, "glBlendFuncSeparate", "srcAlpha GL_INVALID_ENUM");
148 return error::kNoError; 151 return error::kNoError;
149 } 152 }
150 if (!validators_->dst_blend_factor.IsValid(dstAlpha)) { 153 if (!validators_->dst_blend_factor.IsValid(dstAlpha)) {
151 SetGLError( 154 SetGLError(
152 GL_INVALID_ENUM, "glBlendFuncSeparate: dstAlpha GL_INVALID_ENUM"); 155 GL_INVALID_ENUM, "glBlendFuncSeparate", "dstAlpha GL_INVALID_ENUM");
153 return error::kNoError; 156 return error::kNoError;
154 } 157 }
155 glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); 158 glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
156 return error::kNoError; 159 return error::kNoError;
157 } 160 }
158 161
159 error::Error GLES2DecoderImpl::HandleBufferSubData( 162 error::Error GLES2DecoderImpl::HandleBufferSubData(
160 uint32 immediate_data_size, const gles2::BufferSubData& c) { 163 uint32 immediate_data_size, const gles2::BufferSubData& c) {
161 GLenum target = static_cast<GLenum>(c.target); 164 GLenum target = static_cast<GLenum>(c.target);
162 GLintptr offset = static_cast<GLintptr>(c.offset); 165 GLintptr offset = static_cast<GLintptr>(c.offset);
163 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 166 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
164 uint32 data_size = size; 167 uint32 data_size = size;
165 const void* data = GetSharedMemoryAs<const void*>( 168 const void* data = GetSharedMemoryAs<const void*>(
166 c.data_shm_id, c.data_shm_offset, data_size); 169 c.data_shm_id, c.data_shm_offset, data_size);
167 if (!validators_->buffer_target.IsValid(target)) { 170 if (!validators_->buffer_target.IsValid(target)) {
168 SetGLError(GL_INVALID_ENUM, "glBufferSubData: target GL_INVALID_ENUM"); 171 SetGLError(GL_INVALID_ENUM, "glBufferSubData", "target GL_INVALID_ENUM");
169 return error::kNoError; 172 return error::kNoError;
170 } 173 }
171 if (size < 0) { 174 if (size < 0) {
172 SetGLError(GL_INVALID_VALUE, "glBufferSubData: size < 0"); 175 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0");
173 return error::kNoError; 176 return error::kNoError;
174 } 177 }
175 if (data == NULL) { 178 if (data == NULL) {
176 return error::kOutOfBounds; 179 return error::kOutOfBounds;
177 } 180 }
178 DoBufferSubData(target, offset, size, data); 181 DoBufferSubData(target, offset, size, data);
179 return error::kNoError; 182 return error::kNoError;
180 } 183 }
181 184
182 error::Error GLES2DecoderImpl::HandleBufferSubDataImmediate( 185 error::Error GLES2DecoderImpl::HandleBufferSubDataImmediate(
183 uint32 immediate_data_size, const gles2::BufferSubDataImmediate& c) { 186 uint32 immediate_data_size, const gles2::BufferSubDataImmediate& c) {
184 GLenum target = static_cast<GLenum>(c.target); 187 GLenum target = static_cast<GLenum>(c.target);
185 GLintptr offset = static_cast<GLintptr>(c.offset); 188 GLintptr offset = static_cast<GLintptr>(c.offset);
186 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 189 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
187 uint32 data_size = size; 190 uint32 data_size = size;
188 const void* data = GetImmediateDataAs<const void*>( 191 const void* data = GetImmediateDataAs<const void*>(
189 c, data_size, immediate_data_size); 192 c, data_size, immediate_data_size);
190 if (!validators_->buffer_target.IsValid(target)) { 193 if (!validators_->buffer_target.IsValid(target)) {
191 SetGLError(GL_INVALID_ENUM, "glBufferSubData: target GL_INVALID_ENUM"); 194 SetGLError(GL_INVALID_ENUM, "glBufferSubData", "target GL_INVALID_ENUM");
192 return error::kNoError; 195 return error::kNoError;
193 } 196 }
194 if (size < 0) { 197 if (size < 0) {
195 SetGLError(GL_INVALID_VALUE, "glBufferSubData: size < 0"); 198 SetGLError(GL_INVALID_VALUE, "glBufferSubData", "size < 0");
196 return error::kNoError; 199 return error::kNoError;
197 } 200 }
198 if (data == NULL) { 201 if (data == NULL) {
199 return error::kOutOfBounds; 202 return error::kOutOfBounds;
200 } 203 }
201 DoBufferSubData(target, offset, size, data); 204 DoBufferSubData(target, offset, size, data);
202 return error::kNoError; 205 return error::kNoError;
203 } 206 }
204 207
205 error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus( 208 error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus(
206 uint32 immediate_data_size, const gles2::CheckFramebufferStatus& c) { 209 uint32 immediate_data_size, const gles2::CheckFramebufferStatus& c) {
207 GLenum target = static_cast<GLenum>(c.target); 210 GLenum target = static_cast<GLenum>(c.target);
208 typedef CheckFramebufferStatus::Result Result; 211 typedef CheckFramebufferStatus::Result Result;
209 Result* result_dst = GetSharedMemoryAs<Result*>( 212 Result* result_dst = GetSharedMemoryAs<Result*>(
210 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 213 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
211 if (!result_dst) { 214 if (!result_dst) {
212 return error::kOutOfBounds; 215 return error::kOutOfBounds;
213 } 216 }
214 if (!validators_->frame_buffer_target.IsValid(target)) { 217 if (!validators_->frame_buffer_target.IsValid(target)) {
215 SetGLError( 218 SetGLError(
216 GL_INVALID_ENUM, "glCheckFramebufferStatus: target GL_INVALID_ENUM"); 219 GL_INVALID_ENUM, "glCheckFramebufferStatus", "target GL_INVALID_ENUM");
217 return error::kNoError; 220 return error::kNoError;
218 } 221 }
219 *result_dst = DoCheckFramebufferStatus(target); 222 *result_dst = DoCheckFramebufferStatus(target);
220 return error::kNoError; 223 return error::kNoError;
221 } 224 }
222 225
223 error::Error GLES2DecoderImpl::HandleClear( 226 error::Error GLES2DecoderImpl::HandleClear(
224 uint32 immediate_data_size, const gles2::Clear& c) { 227 uint32 immediate_data_size, const gles2::Clear& c) {
225 GLbitfield mask = static_cast<GLbitfield>(c.mask); 228 GLbitfield mask = static_cast<GLbitfield>(c.mask);
226 DoClear(mask); 229 DoClear(mask);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 GLint yoffset = static_cast<GLint>(c.yoffset); 279 GLint yoffset = static_cast<GLint>(c.yoffset);
277 GLsizei width = static_cast<GLsizei>(c.width); 280 GLsizei width = static_cast<GLsizei>(c.width);
278 GLsizei height = static_cast<GLsizei>(c.height); 281 GLsizei height = static_cast<GLsizei>(c.height);
279 GLenum format = static_cast<GLenum>(c.format); 282 GLenum format = static_cast<GLenum>(c.format);
280 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 283 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
281 uint32 data_size = imageSize; 284 uint32 data_size = imageSize;
282 const void* data = GetSharedMemoryAs<const void*>( 285 const void* data = GetSharedMemoryAs<const void*>(
283 c.data_shm_id, c.data_shm_offset, data_size); 286 c.data_shm_id, c.data_shm_offset, data_size);
284 if (!validators_->texture_target.IsValid(target)) { 287 if (!validators_->texture_target.IsValid(target)) {
285 SetGLError( 288 SetGLError(
286 GL_INVALID_ENUM, "glCompressedTexSubImage2D: target GL_INVALID_ENUM"); 289 GL_INVALID_ENUM, "glCompressedTexSubImage2D", "target GL_INVALID_ENUM");
287 return error::kNoError; 290 return error::kNoError;
288 } 291 }
289 if (width < 0) { 292 if (width < 0) {
290 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: width < 0"); 293 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "width < 0");
291 return error::kNoError; 294 return error::kNoError;
292 } 295 }
293 if (height < 0) { 296 if (height < 0) {
294 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: height < 0"); 297 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "height < 0");
295 return error::kNoError; 298 return error::kNoError;
296 } 299 }
297 if (!validators_->compressed_texture_format.IsValid(format)) { 300 if (!validators_->compressed_texture_format.IsValid(format)) {
298 SetGLError( 301 SetGLError(
299 GL_INVALID_ENUM, "glCompressedTexSubImage2D: format GL_INVALID_ENUM"); 302 GL_INVALID_ENUM, "glCompressedTexSubImage2D", "format GL_INVALID_ENUM");
300 return error::kNoError; 303 return error::kNoError;
301 } 304 }
302 if (imageSize < 0) { 305 if (imageSize < 0) {
303 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: imageSize < 0"); 306 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "imageSize < 0");
304 return error::kNoError; 307 return error::kNoError;
305 } 308 }
306 if (data == NULL) { 309 if (data == NULL) {
307 return error::kOutOfBounds; 310 return error::kOutOfBounds;
308 } 311 }
309 DoCompressedTexSubImage2D( 312 DoCompressedTexSubImage2D(
310 target, level, xoffset, yoffset, width, height, format, imageSize, data); 313 target, level, xoffset, yoffset, width, height, format, imageSize, data);
311 return error::kNoError; 314 return error::kNoError;
312 } 315 }
313 316
314 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DImmediate( 317 error::Error GLES2DecoderImpl::HandleCompressedTexSubImage2DImmediate(
315 uint32 immediate_data_size, 318 uint32 immediate_data_size,
316 const gles2::CompressedTexSubImage2DImmediate& c) { 319 const gles2::CompressedTexSubImage2DImmediate& c) {
317 GLenum target = static_cast<GLenum>(c.target); 320 GLenum target = static_cast<GLenum>(c.target);
318 GLint level = static_cast<GLint>(c.level); 321 GLint level = static_cast<GLint>(c.level);
319 GLint xoffset = static_cast<GLint>(c.xoffset); 322 GLint xoffset = static_cast<GLint>(c.xoffset);
320 GLint yoffset = static_cast<GLint>(c.yoffset); 323 GLint yoffset = static_cast<GLint>(c.yoffset);
321 GLsizei width = static_cast<GLsizei>(c.width); 324 GLsizei width = static_cast<GLsizei>(c.width);
322 GLsizei height = static_cast<GLsizei>(c.height); 325 GLsizei height = static_cast<GLsizei>(c.height);
323 GLenum format = static_cast<GLenum>(c.format); 326 GLenum format = static_cast<GLenum>(c.format);
324 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 327 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
325 uint32 data_size = imageSize; 328 uint32 data_size = imageSize;
326 const void* data = GetImmediateDataAs<const void*>( 329 const void* data = GetImmediateDataAs<const void*>(
327 c, data_size, immediate_data_size); 330 c, data_size, immediate_data_size);
328 if (!validators_->texture_target.IsValid(target)) { 331 if (!validators_->texture_target.IsValid(target)) {
329 SetGLError( 332 SetGLError(
330 GL_INVALID_ENUM, "glCompressedTexSubImage2D: target GL_INVALID_ENUM"); 333 GL_INVALID_ENUM, "glCompressedTexSubImage2D", "target GL_INVALID_ENUM");
331 return error::kNoError; 334 return error::kNoError;
332 } 335 }
333 if (width < 0) { 336 if (width < 0) {
334 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: width < 0"); 337 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "width < 0");
335 return error::kNoError; 338 return error::kNoError;
336 } 339 }
337 if (height < 0) { 340 if (height < 0) {
338 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: height < 0"); 341 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "height < 0");
339 return error::kNoError; 342 return error::kNoError;
340 } 343 }
341 if (!validators_->compressed_texture_format.IsValid(format)) { 344 if (!validators_->compressed_texture_format.IsValid(format)) {
342 SetGLError( 345 SetGLError(
343 GL_INVALID_ENUM, "glCompressedTexSubImage2D: format GL_INVALID_ENUM"); 346 GL_INVALID_ENUM, "glCompressedTexSubImage2D", "format GL_INVALID_ENUM");
344 return error::kNoError; 347 return error::kNoError;
345 } 348 }
346 if (imageSize < 0) { 349 if (imageSize < 0) {
347 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D: imageSize < 0"); 350 SetGLError(GL_INVALID_VALUE, "glCompressedTexSubImage2D", "imageSize < 0");
348 return error::kNoError; 351 return error::kNoError;
349 } 352 }
350 if (data == NULL) { 353 if (data == NULL) {
351 return error::kOutOfBounds; 354 return error::kOutOfBounds;
352 } 355 }
353 DoCompressedTexSubImage2D( 356 DoCompressedTexSubImage2D(
354 target, level, xoffset, yoffset, width, height, format, imageSize, data); 357 target, level, xoffset, yoffset, width, height, format, imageSize, data);
355 return error::kNoError; 358 return error::kNoError;
356 } 359 }
357 360
358 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( 361 error::Error GLES2DecoderImpl::HandleCopyTexImage2D(
359 uint32 immediate_data_size, const gles2::CopyTexImage2D& c) { 362 uint32 immediate_data_size, const gles2::CopyTexImage2D& c) {
360 GLenum target = static_cast<GLenum>(c.target); 363 GLenum target = static_cast<GLenum>(c.target);
361 GLint level = static_cast<GLint>(c.level); 364 GLint level = static_cast<GLint>(c.level);
362 GLenum internalformat = static_cast<GLenum>(c.internalformat); 365 GLenum internalformat = static_cast<GLenum>(c.internalformat);
363 GLint x = static_cast<GLint>(c.x); 366 GLint x = static_cast<GLint>(c.x);
364 GLint y = static_cast<GLint>(c.y); 367 GLint y = static_cast<GLint>(c.y);
365 GLsizei width = static_cast<GLsizei>(c.width); 368 GLsizei width = static_cast<GLsizei>(c.width);
366 GLsizei height = static_cast<GLsizei>(c.height); 369 GLsizei height = static_cast<GLsizei>(c.height);
367 GLint border = static_cast<GLint>(c.border); 370 GLint border = static_cast<GLint>(c.border);
368 if (!validators_->texture_target.IsValid(target)) { 371 if (!validators_->texture_target.IsValid(target)) {
369 SetGLError(GL_INVALID_ENUM, "glCopyTexImage2D: target GL_INVALID_ENUM"); 372 SetGLError(GL_INVALID_ENUM, "glCopyTexImage2D", "target GL_INVALID_ENUM");
370 return error::kNoError; 373 return error::kNoError;
371 } 374 }
372 if (!validators_->texture_internal_format.IsValid(internalformat)) { 375 if (!validators_->texture_internal_format.IsValid(internalformat)) {
373 SetGLError( 376 SetGLError(
374 GL_INVALID_ENUM, "glCopyTexImage2D: internalformat GL_INVALID_ENUM"); 377 GL_INVALID_ENUM, "glCopyTexImage2D", "internalformat GL_INVALID_ENUM");
375 return error::kNoError; 378 return error::kNoError;
376 } 379 }
377 if (width < 0) { 380 if (width < 0) {
378 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D: width < 0"); 381 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "width < 0");
379 return error::kNoError; 382 return error::kNoError;
380 } 383 }
381 if (height < 0) { 384 if (height < 0) {
382 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D: height < 0"); 385 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D", "height < 0");
383 return error::kNoError; 386 return error::kNoError;
384 } 387 }
385 if (!validators_->texture_border.IsValid(border)) { 388 if (!validators_->texture_border.IsValid(border)) {
386 SetGLError(GL_INVALID_VALUE, "glCopyTexImage2D: border GL_INVALID_VALUE"); 389 SetGLError(
390 GL_INVALID_VALUE, "glCopyTexImage2D", "border GL_INVALID_VALUE");
387 return error::kNoError; 391 return error::kNoError;
388 } 392 }
389 DoCopyTexImage2D(target, level, internalformat, x, y, width, height, border); 393 DoCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
390 return error::kNoError; 394 return error::kNoError;
391 } 395 }
392 396
393 error::Error GLES2DecoderImpl::HandleCopyTexSubImage2D( 397 error::Error GLES2DecoderImpl::HandleCopyTexSubImage2D(
394 uint32 immediate_data_size, const gles2::CopyTexSubImage2D& c) { 398 uint32 immediate_data_size, const gles2::CopyTexSubImage2D& c) {
395 GLenum target = static_cast<GLenum>(c.target); 399 GLenum target = static_cast<GLenum>(c.target);
396 GLint level = static_cast<GLint>(c.level); 400 GLint level = static_cast<GLint>(c.level);
397 GLint xoffset = static_cast<GLint>(c.xoffset); 401 GLint xoffset = static_cast<GLint>(c.xoffset);
398 GLint yoffset = static_cast<GLint>(c.yoffset); 402 GLint yoffset = static_cast<GLint>(c.yoffset);
399 GLint x = static_cast<GLint>(c.x); 403 GLint x = static_cast<GLint>(c.x);
400 GLint y = static_cast<GLint>(c.y); 404 GLint y = static_cast<GLint>(c.y);
401 GLsizei width = static_cast<GLsizei>(c.width); 405 GLsizei width = static_cast<GLsizei>(c.width);
402 GLsizei height = static_cast<GLsizei>(c.height); 406 GLsizei height = static_cast<GLsizei>(c.height);
403 if (!validators_->texture_target.IsValid(target)) { 407 if (!validators_->texture_target.IsValid(target)) {
404 SetGLError(GL_INVALID_ENUM, "glCopyTexSubImage2D: target GL_INVALID_ENUM"); 408 SetGLError(
409 GL_INVALID_ENUM, "glCopyTexSubImage2D", "target GL_INVALID_ENUM");
405 return error::kNoError; 410 return error::kNoError;
406 } 411 }
407 if (width < 0) { 412 if (width < 0) {
408 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D: width < 0"); 413 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "width < 0");
409 return error::kNoError; 414 return error::kNoError;
410 } 415 }
411 if (height < 0) { 416 if (height < 0) {
412 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D: height < 0"); 417 SetGLError(GL_INVALID_VALUE, "glCopyTexSubImage2D", "height < 0");
413 return error::kNoError; 418 return error::kNoError;
414 } 419 }
415 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); 420 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
416 return error::kNoError; 421 return error::kNoError;
417 } 422 }
418 423
419 error::Error GLES2DecoderImpl::HandleCreateProgram( 424 error::Error GLES2DecoderImpl::HandleCreateProgram(
420 uint32 immediate_data_size, const gles2::CreateProgram& c) { 425 uint32 immediate_data_size, const gles2::CreateProgram& c) {
421 uint32 client_id = c.client_id; 426 uint32 client_id = c.client_id;
422 if (!CreateProgramHelper(client_id)) { 427 if (!CreateProgramHelper(client_id)) {
423 return error::kInvalidArguments; 428 return error::kInvalidArguments;
424 } 429 }
425 return error::kNoError; 430 return error::kNoError;
426 } 431 }
427 432
428 error::Error GLES2DecoderImpl::HandleCreateShader( 433 error::Error GLES2DecoderImpl::HandleCreateShader(
429 uint32 immediate_data_size, const gles2::CreateShader& c) { 434 uint32 immediate_data_size, const gles2::CreateShader& c) {
430 GLenum type = static_cast<GLenum>(c.type); 435 GLenum type = static_cast<GLenum>(c.type);
431 if (!validators_->shader_type.IsValid(type)) { 436 if (!validators_->shader_type.IsValid(type)) {
432 SetGLError(GL_INVALID_ENUM, "glCreateShader: type GL_INVALID_ENUM"); 437 SetGLError(GL_INVALID_ENUM, "glCreateShader", "type GL_INVALID_ENUM");
433 return error::kNoError; 438 return error::kNoError;
434 } 439 }
435 uint32 client_id = c.client_id; 440 uint32 client_id = c.client_id;
436 if (!CreateShaderHelper(type, client_id)) { 441 if (!CreateShaderHelper(type, client_id)) {
437 return error::kInvalidArguments; 442 return error::kInvalidArguments;
438 } 443 }
439 return error::kNoError; 444 return error::kNoError;
440 } 445 }
441 446
442 error::Error GLES2DecoderImpl::HandleCullFace( 447 error::Error GLES2DecoderImpl::HandleCullFace(
443 uint32 immediate_data_size, const gles2::CullFace& c) { 448 uint32 immediate_data_size, const gles2::CullFace& c) {
444 GLenum mode = static_cast<GLenum>(c.mode); 449 GLenum mode = static_cast<GLenum>(c.mode);
445 if (!validators_->face_type.IsValid(mode)) { 450 if (!validators_->face_type.IsValid(mode)) {
446 SetGLError(GL_INVALID_ENUM, "glCullFace: mode GL_INVALID_ENUM"); 451 SetGLError(GL_INVALID_ENUM, "glCullFace", "mode GL_INVALID_ENUM");
447 return error::kNoError; 452 return error::kNoError;
448 } 453 }
449 glCullFace(mode); 454 glCullFace(mode);
450 return error::kNoError; 455 return error::kNoError;
451 } 456 }
452 457
453 error::Error GLES2DecoderImpl::HandleDeleteBuffers( 458 error::Error GLES2DecoderImpl::HandleDeleteBuffers(
454 uint32 immediate_data_size, const gles2::DeleteBuffers& c) { 459 uint32 immediate_data_size, const gles2::DeleteBuffers& c) {
455 GLsizei n = static_cast<GLsizei>(c.n); 460 GLsizei n = static_cast<GLsizei>(c.n);
456 uint32 data_size; 461 uint32 data_size;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 return error::kOutOfBounds; 580 return error::kOutOfBounds;
576 } 581 }
577 DeleteTexturesHelper(n, textures); 582 DeleteTexturesHelper(n, textures);
578 return error::kNoError; 583 return error::kNoError;
579 } 584 }
580 585
581 error::Error GLES2DecoderImpl::HandleDepthFunc( 586 error::Error GLES2DecoderImpl::HandleDepthFunc(
582 uint32 immediate_data_size, const gles2::DepthFunc& c) { 587 uint32 immediate_data_size, const gles2::DepthFunc& c) {
583 GLenum func = static_cast<GLenum>(c.func); 588 GLenum func = static_cast<GLenum>(c.func);
584 if (!validators_->cmp_function.IsValid(func)) { 589 if (!validators_->cmp_function.IsValid(func)) {
585 SetGLError(GL_INVALID_ENUM, "glDepthFunc: func GL_INVALID_ENUM"); 590 SetGLError(GL_INVALID_ENUM, "glDepthFunc", "func GL_INVALID_ENUM");
586 return error::kNoError; 591 return error::kNoError;
587 } 592 }
588 glDepthFunc(func); 593 glDepthFunc(func);
589 return error::kNoError; 594 return error::kNoError;
590 } 595 }
591 596
592 error::Error GLES2DecoderImpl::HandleDepthMask( 597 error::Error GLES2DecoderImpl::HandleDepthMask(
593 uint32 immediate_data_size, const gles2::DepthMask& c) { 598 uint32 immediate_data_size, const gles2::DepthMask& c) {
594 GLboolean flag = static_cast<GLboolean>(c.flag); 599 GLboolean flag = static_cast<GLboolean>(c.flag);
595 DoDepthMask(flag); 600 DoDepthMask(flag);
(...skipping 13 matching lines...) Expand all
609 GLuint program = c.program; 614 GLuint program = c.program;
610 GLuint shader = c.shader; 615 GLuint shader = c.shader;
611 DoDetachShader(program, shader); 616 DoDetachShader(program, shader);
612 return error::kNoError; 617 return error::kNoError;
613 } 618 }
614 619
615 error::Error GLES2DecoderImpl::HandleDisable( 620 error::Error GLES2DecoderImpl::HandleDisable(
616 uint32 immediate_data_size, const gles2::Disable& c) { 621 uint32 immediate_data_size, const gles2::Disable& c) {
617 GLenum cap = static_cast<GLenum>(c.cap); 622 GLenum cap = static_cast<GLenum>(c.cap);
618 if (!validators_->capability.IsValid(cap)) { 623 if (!validators_->capability.IsValid(cap)) {
619 SetGLError(GL_INVALID_ENUM, "glDisable: cap GL_INVALID_ENUM"); 624 SetGLError(GL_INVALID_ENUM, "glDisable", "cap GL_INVALID_ENUM");
620 return error::kNoError; 625 return error::kNoError;
621 } 626 }
622 DoDisable(cap); 627 DoDisable(cap);
623 return error::kNoError; 628 return error::kNoError;
624 } 629 }
625 630
626 error::Error GLES2DecoderImpl::HandleDisableVertexAttribArray( 631 error::Error GLES2DecoderImpl::HandleDisableVertexAttribArray(
627 uint32 immediate_data_size, const gles2::DisableVertexAttribArray& c) { 632 uint32 immediate_data_size, const gles2::DisableVertexAttribArray& c) {
628 GLuint index = static_cast<GLuint>(c.index); 633 GLuint index = static_cast<GLuint>(c.index);
629 DoDisableVertexAttribArray(index); 634 DoDisableVertexAttribArray(index);
630 return error::kNoError; 635 return error::kNoError;
631 } 636 }
632 637
633 error::Error GLES2DecoderImpl::HandleEnable( 638 error::Error GLES2DecoderImpl::HandleEnable(
634 uint32 immediate_data_size, const gles2::Enable& c) { 639 uint32 immediate_data_size, const gles2::Enable& c) {
635 GLenum cap = static_cast<GLenum>(c.cap); 640 GLenum cap = static_cast<GLenum>(c.cap);
636 if (!validators_->capability.IsValid(cap)) { 641 if (!validators_->capability.IsValid(cap)) {
637 SetGLError(GL_INVALID_ENUM, "glEnable: cap GL_INVALID_ENUM"); 642 SetGLError(GL_INVALID_ENUM, "glEnable", "cap GL_INVALID_ENUM");
638 return error::kNoError; 643 return error::kNoError;
639 } 644 }
640 DoEnable(cap); 645 DoEnable(cap);
641 return error::kNoError; 646 return error::kNoError;
642 } 647 }
643 648
644 error::Error GLES2DecoderImpl::HandleEnableVertexAttribArray( 649 error::Error GLES2DecoderImpl::HandleEnableVertexAttribArray(
645 uint32 immediate_data_size, const gles2::EnableVertexAttribArray& c) { 650 uint32 immediate_data_size, const gles2::EnableVertexAttribArray& c) {
646 GLuint index = static_cast<GLuint>(c.index); 651 GLuint index = static_cast<GLuint>(c.index);
647 DoEnableVertexAttribArray(index); 652 DoEnableVertexAttribArray(index);
(...skipping 13 matching lines...) Expand all
661 } 666 }
662 667
663 error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer( 668 error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer(
664 uint32 immediate_data_size, const gles2::FramebufferRenderbuffer& c) { 669 uint32 immediate_data_size, const gles2::FramebufferRenderbuffer& c) {
665 GLenum target = static_cast<GLenum>(c.target); 670 GLenum target = static_cast<GLenum>(c.target);
666 GLenum attachment = static_cast<GLenum>(c.attachment); 671 GLenum attachment = static_cast<GLenum>(c.attachment);
667 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget); 672 GLenum renderbuffertarget = static_cast<GLenum>(c.renderbuffertarget);
668 GLuint renderbuffer = c.renderbuffer; 673 GLuint renderbuffer = c.renderbuffer;
669 if (!validators_->frame_buffer_target.IsValid(target)) { 674 if (!validators_->frame_buffer_target.IsValid(target)) {
670 SetGLError( 675 SetGLError(
671 GL_INVALID_ENUM, "glFramebufferRenderbuffer: target GL_INVALID_ENUM"); 676 GL_INVALID_ENUM, "glFramebufferRenderbuffer", "target GL_INVALID_ENUM");
672 return error::kNoError; 677 return error::kNoError;
673 } 678 }
674 if (!validators_->attachment.IsValid(attachment)) { 679 if (!validators_->attachment.IsValid(attachment)) {
675 SetGLError( 680 SetGLError(
676 GL_INVALID_ENUM, 681 GL_INVALID_ENUM, "glFramebufferRenderbuffer", "attachment GL_INVALID_ENU M"); // NOLINT
677 "glFramebufferRenderbuffer: attachment GL_INVALID_ENUM");
678 return error::kNoError; 682 return error::kNoError;
679 } 683 }
680 if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) { 684 if (!validators_->render_buffer_target.IsValid(renderbuffertarget)) {
681 SetGLError( 685 SetGLError(
682 GL_INVALID_ENUM, 686 GL_INVALID_ENUM, "glFramebufferRenderbuffer", "renderbuffertarget GL_INV ALID_ENUM"); // NOLINT
683 "glFramebufferRenderbuffer: renderbuffertarget GL_INVALID_ENUM");
684 return error::kNoError; 687 return error::kNoError;
685 } 688 }
686 DoFramebufferRenderbuffer( 689 DoFramebufferRenderbuffer(
687 target, attachment, renderbuffertarget, renderbuffer); 690 target, attachment, renderbuffertarget, renderbuffer);
688 return error::kNoError; 691 return error::kNoError;
689 } 692 }
690 693
691 error::Error GLES2DecoderImpl::HandleFramebufferTexture2D( 694 error::Error GLES2DecoderImpl::HandleFramebufferTexture2D(
692 uint32 immediate_data_size, const gles2::FramebufferTexture2D& c) { 695 uint32 immediate_data_size, const gles2::FramebufferTexture2D& c) {
693 GLenum target = static_cast<GLenum>(c.target); 696 GLenum target = static_cast<GLenum>(c.target);
694 GLenum attachment = static_cast<GLenum>(c.attachment); 697 GLenum attachment = static_cast<GLenum>(c.attachment);
695 GLenum textarget = static_cast<GLenum>(c.textarget); 698 GLenum textarget = static_cast<GLenum>(c.textarget);
696 GLuint texture = c.texture; 699 GLuint texture = c.texture;
697 GLint level = static_cast<GLint>(c.level); 700 GLint level = static_cast<GLint>(c.level);
698 if (!validators_->frame_buffer_target.IsValid(target)) { 701 if (!validators_->frame_buffer_target.IsValid(target)) {
699 SetGLError( 702 SetGLError(
700 GL_INVALID_ENUM, "glFramebufferTexture2D: target GL_INVALID_ENUM"); 703 GL_INVALID_ENUM, "glFramebufferTexture2D", "target GL_INVALID_ENUM");
701 return error::kNoError; 704 return error::kNoError;
702 } 705 }
703 if (!validators_->attachment.IsValid(attachment)) { 706 if (!validators_->attachment.IsValid(attachment)) {
704 SetGLError( 707 SetGLError(
705 GL_INVALID_ENUM, "glFramebufferTexture2D: attachment GL_INVALID_ENUM"); 708 GL_INVALID_ENUM, "glFramebufferTexture2D", "attachment GL_INVALID_ENUM") ; // NOLINT
706 return error::kNoError; 709 return error::kNoError;
707 } 710 }
708 if (!validators_->texture_target.IsValid(textarget)) { 711 if (!validators_->texture_target.IsValid(textarget)) {
709 SetGLError( 712 SetGLError(
710 GL_INVALID_ENUM, "glFramebufferTexture2D: textarget GL_INVALID_ENUM"); 713 GL_INVALID_ENUM, "glFramebufferTexture2D", "textarget GL_INVALID_ENUM");
711 return error::kNoError; 714 return error::kNoError;
712 } 715 }
713 if (!validators_->zero_only.IsValid(level)) { 716 if (!validators_->zero_only.IsValid(level)) {
714 SetGLError( 717 SetGLError(
715 GL_INVALID_VALUE, "glFramebufferTexture2D: level GL_INVALID_VALUE"); 718 GL_INVALID_VALUE, "glFramebufferTexture2D", "level GL_INVALID_VALUE");
716 return error::kNoError; 719 return error::kNoError;
717 } 720 }
718 DoFramebufferTexture2D(target, attachment, textarget, texture, level); 721 DoFramebufferTexture2D(target, attachment, textarget, texture, level);
719 return error::kNoError; 722 return error::kNoError;
720 } 723 }
721 724
722 error::Error GLES2DecoderImpl::HandleFrontFace( 725 error::Error GLES2DecoderImpl::HandleFrontFace(
723 uint32 immediate_data_size, const gles2::FrontFace& c) { 726 uint32 immediate_data_size, const gles2::FrontFace& c) {
724 GLenum mode = static_cast<GLenum>(c.mode); 727 GLenum mode = static_cast<GLenum>(c.mode);
725 if (!validators_->face_mode.IsValid(mode)) { 728 if (!validators_->face_mode.IsValid(mode)) {
726 SetGLError(GL_INVALID_ENUM, "glFrontFace: mode GL_INVALID_ENUM"); 729 SetGLError(GL_INVALID_ENUM, "glFrontFace", "mode GL_INVALID_ENUM");
727 return error::kNoError; 730 return error::kNoError;
728 } 731 }
729 glFrontFace(mode); 732 glFrontFace(mode);
730 return error::kNoError; 733 return error::kNoError;
731 } 734 }
732 735
733 error::Error GLES2DecoderImpl::HandleGenBuffers( 736 error::Error GLES2DecoderImpl::HandleGenBuffers(
734 uint32 immediate_data_size, const gles2::GenBuffers& c) { 737 uint32 immediate_data_size, const gles2::GenBuffers& c) {
735 GLsizei n = static_cast<GLsizei>(c.n); 738 GLsizei n = static_cast<GLsizei>(c.n);
736 uint32 data_size; 739 uint32 data_size;
(...skipping 26 matching lines...) Expand all
763 if (!GenBuffersHelper(n, buffers)) { 766 if (!GenBuffersHelper(n, buffers)) {
764 return error::kInvalidArguments; 767 return error::kInvalidArguments;
765 } 768 }
766 return error::kNoError; 769 return error::kNoError;
767 } 770 }
768 771
769 error::Error GLES2DecoderImpl::HandleGenerateMipmap( 772 error::Error GLES2DecoderImpl::HandleGenerateMipmap(
770 uint32 immediate_data_size, const gles2::GenerateMipmap& c) { 773 uint32 immediate_data_size, const gles2::GenerateMipmap& c) {
771 GLenum target = static_cast<GLenum>(c.target); 774 GLenum target = static_cast<GLenum>(c.target);
772 if (!validators_->texture_bind_target.IsValid(target)) { 775 if (!validators_->texture_bind_target.IsValid(target)) {
773 SetGLError(GL_INVALID_ENUM, "glGenerateMipmap: target GL_INVALID_ENUM"); 776 SetGLError(GL_INVALID_ENUM, "glGenerateMipmap", "target GL_INVALID_ENUM");
774 return error::kNoError; 777 return error::kNoError;
775 } 778 }
776 DoGenerateMipmap(target); 779 DoGenerateMipmap(target);
777 return error::kNoError; 780 return error::kNoError;
778 } 781 }
779 782
780 error::Error GLES2DecoderImpl::HandleGenFramebuffers( 783 error::Error GLES2DecoderImpl::HandleGenFramebuffers(
781 uint32 immediate_data_size, const gles2::GenFramebuffers& c) { 784 uint32 immediate_data_size, const gles2::GenFramebuffers& c) {
782 GLsizei n = static_cast<GLsizei>(c.n); 785 GLsizei n = static_cast<GLsizei>(c.n);
783 uint32 data_size; 786 uint32 data_size;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 error::Error GLES2DecoderImpl::HandleGetBooleanv( 891 error::Error GLES2DecoderImpl::HandleGetBooleanv(
889 uint32 immediate_data_size, const gles2::GetBooleanv& c) { 892 uint32 immediate_data_size, const gles2::GetBooleanv& c) {
890 GLenum pname = static_cast<GLenum>(c.pname); 893 GLenum pname = static_cast<GLenum>(c.pname);
891 typedef GetBooleanv::Result Result; 894 typedef GetBooleanv::Result Result;
892 GLsizei num_values = 0; 895 GLsizei num_values = 0;
893 GetNumValuesReturnedForGLGet(pname, &num_values); 896 GetNumValuesReturnedForGLGet(pname, &num_values);
894 Result* result = GetSharedMemoryAs<Result*>( 897 Result* result = GetSharedMemoryAs<Result*>(
895 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 898 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
896 GLboolean* params = result ? result->GetData() : NULL; 899 GLboolean* params = result ? result->GetData() : NULL;
897 if (!validators_->g_l_state.IsValid(pname)) { 900 if (!validators_->g_l_state.IsValid(pname)) {
898 SetGLError(GL_INVALID_ENUM, "glGetBooleanv: pname GL_INVALID_ENUM"); 901 SetGLError(GL_INVALID_ENUM, "glGetBooleanv", "pname GL_INVALID_ENUM");
899 return error::kNoError; 902 return error::kNoError;
900 } 903 }
901 if (params == NULL) { 904 if (params == NULL) {
902 return error::kOutOfBounds; 905 return error::kOutOfBounds;
903 } 906 }
904 // Check that the client initialized the result. 907 // Check that the client initialized the result.
905 if (result->size != 0) { 908 if (result->size != 0) {
906 return error::kInvalidArguments; 909 return error::kInvalidArguments;
907 } 910 }
908 CopyRealGLErrorsToWrapper(); 911 CopyRealGLErrorsToWrapper();
909 DoGetBooleanv(pname, params); 912 DoGetBooleanv(pname, params);
910 GLenum error = glGetError(); 913 GLenum error = glGetError();
911 if (error == GL_NO_ERROR) { 914 if (error == GL_NO_ERROR) {
912 result->SetNumResults(num_values); 915 result->SetNumResults(num_values);
913 } else { 916 } else {
914 SetGLError(error, NULL); 917 SetGLError(error, "", "");
915 } 918 }
916 return error::kNoError; 919 return error::kNoError;
917 } 920 }
918 921
919 error::Error GLES2DecoderImpl::HandleGetBufferParameteriv( 922 error::Error GLES2DecoderImpl::HandleGetBufferParameteriv(
920 uint32 immediate_data_size, const gles2::GetBufferParameteriv& c) { 923 uint32 immediate_data_size, const gles2::GetBufferParameteriv& c) {
921 GLenum target = static_cast<GLenum>(c.target); 924 GLenum target = static_cast<GLenum>(c.target);
922 GLenum pname = static_cast<GLenum>(c.pname); 925 GLenum pname = static_cast<GLenum>(c.pname);
923 typedef GetBufferParameteriv::Result Result; 926 typedef GetBufferParameteriv::Result Result;
924 GLsizei num_values = 0; 927 GLsizei num_values = 0;
925 GetNumValuesReturnedForGLGet(pname, &num_values); 928 GetNumValuesReturnedForGLGet(pname, &num_values);
926 Result* result = GetSharedMemoryAs<Result*>( 929 Result* result = GetSharedMemoryAs<Result*>(
927 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 930 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
928 GLint* params = result ? result->GetData() : NULL; 931 GLint* params = result ? result->GetData() : NULL;
929 if (!validators_->buffer_target.IsValid(target)) { 932 if (!validators_->buffer_target.IsValid(target)) {
930 SetGLError( 933 SetGLError(
931 GL_INVALID_ENUM, "glGetBufferParameteriv: target GL_INVALID_ENUM"); 934 GL_INVALID_ENUM, "glGetBufferParameteriv", "target GL_INVALID_ENUM");
932 return error::kNoError; 935 return error::kNoError;
933 } 936 }
934 if (!validators_->buffer_parameter.IsValid(pname)) { 937 if (!validators_->buffer_parameter.IsValid(pname)) {
935 SetGLError( 938 SetGLError(
936 GL_INVALID_ENUM, "glGetBufferParameteriv: pname GL_INVALID_ENUM"); 939 GL_INVALID_ENUM, "glGetBufferParameteriv", "pname GL_INVALID_ENUM");
937 return error::kNoError; 940 return error::kNoError;
938 } 941 }
939 if (params == NULL) { 942 if (params == NULL) {
940 return error::kOutOfBounds; 943 return error::kOutOfBounds;
941 } 944 }
942 // Check that the client initialized the result. 945 // Check that the client initialized the result.
943 if (result->size != 0) { 946 if (result->size != 0) {
944 return error::kInvalidArguments; 947 return error::kInvalidArguments;
945 } 948 }
946 CopyRealGLErrorsToWrapper(); 949 CopyRealGLErrorsToWrapper();
947 glGetBufferParameteriv(target, pname, params); 950 glGetBufferParameteriv(target, pname, params);
948 GLenum error = glGetError(); 951 GLenum error = glGetError();
949 if (error == GL_NO_ERROR) { 952 if (error == GL_NO_ERROR) {
950 result->SetNumResults(num_values); 953 result->SetNumResults(num_values);
951 } else { 954 } else {
952 SetGLError(error, NULL); 955 SetGLError(error, "", "");
953 } 956 }
954 return error::kNoError; 957 return error::kNoError;
955 } 958 }
956 959
957 error::Error GLES2DecoderImpl::HandleGetError( 960 error::Error GLES2DecoderImpl::HandleGetError(
958 uint32 immediate_data_size, const gles2::GetError& c) { 961 uint32 immediate_data_size, const gles2::GetError& c) {
959 typedef GetError::Result Result; 962 typedef GetError::Result Result;
960 Result* result_dst = GetSharedMemoryAs<Result*>( 963 Result* result_dst = GetSharedMemoryAs<Result*>(
961 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 964 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
962 if (!result_dst) { 965 if (!result_dst) {
963 return error::kOutOfBounds; 966 return error::kOutOfBounds;
964 } 967 }
965 *result_dst = GetGLError(); 968 *result_dst = GetGLError();
966 return error::kNoError; 969 return error::kNoError;
967 } 970 }
968 971
969 error::Error GLES2DecoderImpl::HandleGetFloatv( 972 error::Error GLES2DecoderImpl::HandleGetFloatv(
970 uint32 immediate_data_size, const gles2::GetFloatv& c) { 973 uint32 immediate_data_size, const gles2::GetFloatv& c) {
971 GLenum pname = static_cast<GLenum>(c.pname); 974 GLenum pname = static_cast<GLenum>(c.pname);
972 typedef GetFloatv::Result Result; 975 typedef GetFloatv::Result Result;
973 GLsizei num_values = 0; 976 GLsizei num_values = 0;
974 GetNumValuesReturnedForGLGet(pname, &num_values); 977 GetNumValuesReturnedForGLGet(pname, &num_values);
975 Result* result = GetSharedMemoryAs<Result*>( 978 Result* result = GetSharedMemoryAs<Result*>(
976 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 979 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
977 GLfloat* params = result ? result->GetData() : NULL; 980 GLfloat* params = result ? result->GetData() : NULL;
978 if (!validators_->g_l_state.IsValid(pname)) { 981 if (!validators_->g_l_state.IsValid(pname)) {
979 SetGLError(GL_INVALID_ENUM, "glGetFloatv: pname GL_INVALID_ENUM"); 982 SetGLError(GL_INVALID_ENUM, "glGetFloatv", "pname GL_INVALID_ENUM");
980 return error::kNoError; 983 return error::kNoError;
981 } 984 }
982 if (params == NULL) { 985 if (params == NULL) {
983 return error::kOutOfBounds; 986 return error::kOutOfBounds;
984 } 987 }
985 // Check that the client initialized the result. 988 // Check that the client initialized the result.
986 if (result->size != 0) { 989 if (result->size != 0) {
987 return error::kInvalidArguments; 990 return error::kInvalidArguments;
988 } 991 }
989 CopyRealGLErrorsToWrapper(); 992 CopyRealGLErrorsToWrapper();
990 DoGetFloatv(pname, params); 993 DoGetFloatv(pname, params);
991 GLenum error = glGetError(); 994 GLenum error = glGetError();
992 if (error == GL_NO_ERROR) { 995 if (error == GL_NO_ERROR) {
993 result->SetNumResults(num_values); 996 result->SetNumResults(num_values);
994 } else { 997 } else {
995 SetGLError(error, NULL); 998 SetGLError(error, "", "");
996 } 999 }
997 return error::kNoError; 1000 return error::kNoError;
998 } 1001 }
999 1002
1000 error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv( 1003 error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv(
1001 uint32 immediate_data_size, 1004 uint32 immediate_data_size,
1002 const gles2::GetFramebufferAttachmentParameteriv& c) { 1005 const gles2::GetFramebufferAttachmentParameteriv& c) {
1003 GLenum target = static_cast<GLenum>(c.target); 1006 GLenum target = static_cast<GLenum>(c.target);
1004 GLenum attachment = static_cast<GLenum>(c.attachment); 1007 GLenum attachment = static_cast<GLenum>(c.attachment);
1005 GLenum pname = static_cast<GLenum>(c.pname); 1008 GLenum pname = static_cast<GLenum>(c.pname);
1006 typedef GetFramebufferAttachmentParameteriv::Result Result; 1009 typedef GetFramebufferAttachmentParameteriv::Result Result;
1007 GLsizei num_values = 0; 1010 GLsizei num_values = 0;
1008 GetNumValuesReturnedForGLGet(pname, &num_values); 1011 GetNumValuesReturnedForGLGet(pname, &num_values);
1009 Result* result = GetSharedMemoryAs<Result*>( 1012 Result* result = GetSharedMemoryAs<Result*>(
1010 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1013 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1011 GLint* params = result ? result->GetData() : NULL; 1014 GLint* params = result ? result->GetData() : NULL;
1012 if (!validators_->frame_buffer_target.IsValid(target)) { 1015 if (!validators_->frame_buffer_target.IsValid(target)) {
1013 SetGLError( 1016 SetGLError(
1014 GL_INVALID_ENUM, 1017 GL_INVALID_ENUM, "glGetFramebufferAttachmentParameteriv", "target GL_INV ALID_ENUM"); // NOLINT
1015 "glGetFramebufferAttachmentParameteriv: target GL_INVALID_ENUM");
1016 return error::kNoError; 1018 return error::kNoError;
1017 } 1019 }
1018 if (!validators_->attachment.IsValid(attachment)) { 1020 if (!validators_->attachment.IsValid(attachment)) {
1019 SetGLError( 1021 SetGLError(
1020 GL_INVALID_ENUM, 1022 GL_INVALID_ENUM, "glGetFramebufferAttachmentParameteriv", "attachment GL _INVALID_ENUM"); // NOLINT
1021 "glGetFramebufferAttachmentParameteriv: attachment GL_INVALID_ENUM");
1022 return error::kNoError; 1023 return error::kNoError;
1023 } 1024 }
1024 if (!validators_->frame_buffer_parameter.IsValid(pname)) { 1025 if (!validators_->frame_buffer_parameter.IsValid(pname)) {
1025 SetGLError( 1026 SetGLError(
1026 GL_INVALID_ENUM, 1027 GL_INVALID_ENUM, "glGetFramebufferAttachmentParameteriv", "pname GL_INVA LID_ENUM"); // NOLINT
1027 "glGetFramebufferAttachmentParameteriv: pname GL_INVALID_ENUM");
1028 return error::kNoError; 1028 return error::kNoError;
1029 } 1029 }
1030 if (params == NULL) { 1030 if (params == NULL) {
1031 return error::kOutOfBounds; 1031 return error::kOutOfBounds;
1032 } 1032 }
1033 // Check that the client initialized the result. 1033 // Check that the client initialized the result.
1034 if (result->size != 0) { 1034 if (result->size != 0) {
1035 return error::kInvalidArguments; 1035 return error::kInvalidArguments;
1036 } 1036 }
1037 CopyRealGLErrorsToWrapper(); 1037 CopyRealGLErrorsToWrapper();
1038 DoGetFramebufferAttachmentParameteriv(target, attachment, pname, params); 1038 DoGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
1039 GLenum error = glGetError(); 1039 GLenum error = glGetError();
1040 if (error == GL_NO_ERROR) { 1040 if (error == GL_NO_ERROR) {
1041 result->SetNumResults(num_values); 1041 result->SetNumResults(num_values);
1042 } else { 1042 } else {
1043 SetGLError(error, NULL); 1043 SetGLError(error, "", "");
1044 } 1044 }
1045 return error::kNoError; 1045 return error::kNoError;
1046 } 1046 }
1047 1047
1048 error::Error GLES2DecoderImpl::HandleGetIntegerv( 1048 error::Error GLES2DecoderImpl::HandleGetIntegerv(
1049 uint32 immediate_data_size, const gles2::GetIntegerv& c) { 1049 uint32 immediate_data_size, const gles2::GetIntegerv& c) {
1050 GLenum pname = static_cast<GLenum>(c.pname); 1050 GLenum pname = static_cast<GLenum>(c.pname);
1051 typedef GetIntegerv::Result Result; 1051 typedef GetIntegerv::Result Result;
1052 GLsizei num_values = 0; 1052 GLsizei num_values = 0;
1053 GetNumValuesReturnedForGLGet(pname, &num_values); 1053 GetNumValuesReturnedForGLGet(pname, &num_values);
1054 Result* result = GetSharedMemoryAs<Result*>( 1054 Result* result = GetSharedMemoryAs<Result*>(
1055 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1055 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1056 GLint* params = result ? result->GetData() : NULL; 1056 GLint* params = result ? result->GetData() : NULL;
1057 if (!validators_->g_l_state.IsValid(pname)) { 1057 if (!validators_->g_l_state.IsValid(pname)) {
1058 SetGLError(GL_INVALID_ENUM, "glGetIntegerv: pname GL_INVALID_ENUM"); 1058 SetGLError(GL_INVALID_ENUM, "glGetIntegerv", "pname GL_INVALID_ENUM");
1059 return error::kNoError; 1059 return error::kNoError;
1060 } 1060 }
1061 if (params == NULL) { 1061 if (params == NULL) {
1062 return error::kOutOfBounds; 1062 return error::kOutOfBounds;
1063 } 1063 }
1064 // Check that the client initialized the result. 1064 // Check that the client initialized the result.
1065 if (result->size != 0) { 1065 if (result->size != 0) {
1066 return error::kInvalidArguments; 1066 return error::kInvalidArguments;
1067 } 1067 }
1068 CopyRealGLErrorsToWrapper(); 1068 CopyRealGLErrorsToWrapper();
1069 DoGetIntegerv(pname, params); 1069 DoGetIntegerv(pname, params);
1070 GLenum error = glGetError(); 1070 GLenum error = glGetError();
1071 if (error == GL_NO_ERROR) { 1071 if (error == GL_NO_ERROR) {
1072 result->SetNumResults(num_values); 1072 result->SetNumResults(num_values);
1073 } else { 1073 } else {
1074 SetGLError(error, NULL); 1074 SetGLError(error, "", "");
1075 } 1075 }
1076 return error::kNoError; 1076 return error::kNoError;
1077 } 1077 }
1078 1078
1079 error::Error GLES2DecoderImpl::HandleGetProgramiv( 1079 error::Error GLES2DecoderImpl::HandleGetProgramiv(
1080 uint32 immediate_data_size, const gles2::GetProgramiv& c) { 1080 uint32 immediate_data_size, const gles2::GetProgramiv& c) {
1081 GLuint program = c.program; 1081 GLuint program = c.program;
1082 GLenum pname = static_cast<GLenum>(c.pname); 1082 GLenum pname = static_cast<GLenum>(c.pname);
1083 typedef GetProgramiv::Result Result; 1083 typedef GetProgramiv::Result Result;
1084 GLsizei num_values = 0; 1084 GLsizei num_values = 0;
1085 GetNumValuesReturnedForGLGet(pname, &num_values); 1085 GetNumValuesReturnedForGLGet(pname, &num_values);
1086 Result* result = GetSharedMemoryAs<Result*>( 1086 Result* result = GetSharedMemoryAs<Result*>(
1087 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1087 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1088 GLint* params = result ? result->GetData() : NULL; 1088 GLint* params = result ? result->GetData() : NULL;
1089 if (!validators_->program_parameter.IsValid(pname)) { 1089 if (!validators_->program_parameter.IsValid(pname)) {
1090 SetGLError(GL_INVALID_ENUM, "glGetProgramiv: pname GL_INVALID_ENUM"); 1090 SetGLError(GL_INVALID_ENUM, "glGetProgramiv", "pname GL_INVALID_ENUM");
1091 return error::kNoError; 1091 return error::kNoError;
1092 } 1092 }
1093 if (params == NULL) { 1093 if (params == NULL) {
1094 return error::kOutOfBounds; 1094 return error::kOutOfBounds;
1095 } 1095 }
1096 // Check that the client initialized the result. 1096 // Check that the client initialized the result.
1097 if (result->size != 0) { 1097 if (result->size != 0) {
1098 return error::kInvalidArguments; 1098 return error::kInvalidArguments;
1099 } 1099 }
1100 CopyRealGLErrorsToWrapper(); 1100 CopyRealGLErrorsToWrapper();
1101 DoGetProgramiv(program, pname, params); 1101 DoGetProgramiv(program, pname, params);
1102 GLenum error = glGetError(); 1102 GLenum error = glGetError();
1103 if (error == GL_NO_ERROR) { 1103 if (error == GL_NO_ERROR) {
1104 result->SetNumResults(num_values); 1104 result->SetNumResults(num_values);
1105 } else { 1105 } else {
1106 SetGLError(error, NULL); 1106 SetGLError(error, "", "");
1107 } 1107 }
1108 return error::kNoError; 1108 return error::kNoError;
1109 } 1109 }
1110 1110
1111 error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv( 1111 error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv(
1112 uint32 immediate_data_size, const gles2::GetRenderbufferParameteriv& c) { 1112 uint32 immediate_data_size, const gles2::GetRenderbufferParameteriv& c) {
1113 GLenum target = static_cast<GLenum>(c.target); 1113 GLenum target = static_cast<GLenum>(c.target);
1114 GLenum pname = static_cast<GLenum>(c.pname); 1114 GLenum pname = static_cast<GLenum>(c.pname);
1115 typedef GetRenderbufferParameteriv::Result Result; 1115 typedef GetRenderbufferParameteriv::Result Result;
1116 GLsizei num_values = 0; 1116 GLsizei num_values = 0;
1117 GetNumValuesReturnedForGLGet(pname, &num_values); 1117 GetNumValuesReturnedForGLGet(pname, &num_values);
1118 Result* result = GetSharedMemoryAs<Result*>( 1118 Result* result = GetSharedMemoryAs<Result*>(
1119 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1119 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1120 GLint* params = result ? result->GetData() : NULL; 1120 GLint* params = result ? result->GetData() : NULL;
1121 if (!validators_->render_buffer_target.IsValid(target)) { 1121 if (!validators_->render_buffer_target.IsValid(target)) {
1122 SetGLError( 1122 SetGLError(
1123 GL_INVALID_ENUM, 1123 GL_INVALID_ENUM, "glGetRenderbufferParameteriv", "target GL_INVALID_ENUM "); // NOLINT
1124 "glGetRenderbufferParameteriv: target GL_INVALID_ENUM");
1125 return error::kNoError; 1124 return error::kNoError;
1126 } 1125 }
1127 if (!validators_->render_buffer_parameter.IsValid(pname)) { 1126 if (!validators_->render_buffer_parameter.IsValid(pname)) {
1128 SetGLError( 1127 SetGLError(
1129 GL_INVALID_ENUM, 1128 GL_INVALID_ENUM, "glGetRenderbufferParameteriv", "pname GL_INVALID_ENUM" ); // NOLINT
1130 "glGetRenderbufferParameteriv: pname GL_INVALID_ENUM");
1131 return error::kNoError; 1129 return error::kNoError;
1132 } 1130 }
1133 if (params == NULL) { 1131 if (params == NULL) {
1134 return error::kOutOfBounds; 1132 return error::kOutOfBounds;
1135 } 1133 }
1136 // Check that the client initialized the result. 1134 // Check that the client initialized the result.
1137 if (result->size != 0) { 1135 if (result->size != 0) {
1138 return error::kInvalidArguments; 1136 return error::kInvalidArguments;
1139 } 1137 }
1140 CopyRealGLErrorsToWrapper(); 1138 CopyRealGLErrorsToWrapper();
1141 DoGetRenderbufferParameteriv(target, pname, params); 1139 DoGetRenderbufferParameteriv(target, pname, params);
1142 GLenum error = glGetError(); 1140 GLenum error = glGetError();
1143 if (error == GL_NO_ERROR) { 1141 if (error == GL_NO_ERROR) {
1144 result->SetNumResults(num_values); 1142 result->SetNumResults(num_values);
1145 } else { 1143 } else {
1146 SetGLError(error, NULL); 1144 SetGLError(error, "", "");
1147 } 1145 }
1148 return error::kNoError; 1146 return error::kNoError;
1149 } 1147 }
1150 1148
1151 error::Error GLES2DecoderImpl::HandleGetShaderiv( 1149 error::Error GLES2DecoderImpl::HandleGetShaderiv(
1152 uint32 immediate_data_size, const gles2::GetShaderiv& c) { 1150 uint32 immediate_data_size, const gles2::GetShaderiv& c) {
1153 GLuint shader = c.shader; 1151 GLuint shader = c.shader;
1154 GLenum pname = static_cast<GLenum>(c.pname); 1152 GLenum pname = static_cast<GLenum>(c.pname);
1155 typedef GetShaderiv::Result Result; 1153 typedef GetShaderiv::Result Result;
1156 GLsizei num_values = 0; 1154 GLsizei num_values = 0;
1157 GetNumValuesReturnedForGLGet(pname, &num_values); 1155 GetNumValuesReturnedForGLGet(pname, &num_values);
1158 Result* result = GetSharedMemoryAs<Result*>( 1156 Result* result = GetSharedMemoryAs<Result*>(
1159 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1157 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1160 GLint* params = result ? result->GetData() : NULL; 1158 GLint* params = result ? result->GetData() : NULL;
1161 if (!validators_->shader_parameter.IsValid(pname)) { 1159 if (!validators_->shader_parameter.IsValid(pname)) {
1162 SetGLError(GL_INVALID_ENUM, "glGetShaderiv: pname GL_INVALID_ENUM"); 1160 SetGLError(GL_INVALID_ENUM, "glGetShaderiv", "pname GL_INVALID_ENUM");
1163 return error::kNoError; 1161 return error::kNoError;
1164 } 1162 }
1165 if (params == NULL) { 1163 if (params == NULL) {
1166 return error::kOutOfBounds; 1164 return error::kOutOfBounds;
1167 } 1165 }
1168 // Check that the client initialized the result. 1166 // Check that the client initialized the result.
1169 if (result->size != 0) { 1167 if (result->size != 0) {
1170 return error::kInvalidArguments; 1168 return error::kInvalidArguments;
1171 } 1169 }
1172 CopyRealGLErrorsToWrapper(); 1170 CopyRealGLErrorsToWrapper();
1173 DoGetShaderiv(shader, pname, params); 1171 DoGetShaderiv(shader, pname, params);
1174 GLenum error = glGetError(); 1172 GLenum error = glGetError();
1175 if (error == GL_NO_ERROR) { 1173 if (error == GL_NO_ERROR) {
1176 result->SetNumResults(num_values); 1174 result->SetNumResults(num_values);
1177 } else { 1175 } else {
1178 SetGLError(error, NULL); 1176 SetGLError(error, "", "");
1179 } 1177 }
1180 return error::kNoError; 1178 return error::kNoError;
1181 } 1179 }
1182 1180
1183 error::Error GLES2DecoderImpl::HandleGetTexParameterfv( 1181 error::Error GLES2DecoderImpl::HandleGetTexParameterfv(
1184 uint32 immediate_data_size, const gles2::GetTexParameterfv& c) { 1182 uint32 immediate_data_size, const gles2::GetTexParameterfv& c) {
1185 GLenum target = static_cast<GLenum>(c.target); 1183 GLenum target = static_cast<GLenum>(c.target);
1186 GLenum pname = static_cast<GLenum>(c.pname); 1184 GLenum pname = static_cast<GLenum>(c.pname);
1187 typedef GetTexParameterfv::Result Result; 1185 typedef GetTexParameterfv::Result Result;
1188 GLsizei num_values = 0; 1186 GLsizei num_values = 0;
1189 GetNumValuesReturnedForGLGet(pname, &num_values); 1187 GetNumValuesReturnedForGLGet(pname, &num_values);
1190 Result* result = GetSharedMemoryAs<Result*>( 1188 Result* result = GetSharedMemoryAs<Result*>(
1191 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1189 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1192 GLfloat* params = result ? result->GetData() : NULL; 1190 GLfloat* params = result ? result->GetData() : NULL;
1193 if (!validators_->get_tex_param_target.IsValid(target)) { 1191 if (!validators_->get_tex_param_target.IsValid(target)) {
1194 SetGLError(GL_INVALID_ENUM, "glGetTexParameterfv: target GL_INVALID_ENUM"); 1192 SetGLError(
1193 GL_INVALID_ENUM, "glGetTexParameterfv", "target GL_INVALID_ENUM");
1195 return error::kNoError; 1194 return error::kNoError;
1196 } 1195 }
1197 if (!validators_->texture_parameter.IsValid(pname)) { 1196 if (!validators_->texture_parameter.IsValid(pname)) {
1198 SetGLError(GL_INVALID_ENUM, "glGetTexParameterfv: pname GL_INVALID_ENUM"); 1197 SetGLError(
1198 GL_INVALID_ENUM, "glGetTexParameterfv", "pname GL_INVALID_ENUM");
1199 return error::kNoError; 1199 return error::kNoError;
1200 } 1200 }
1201 if (params == NULL) { 1201 if (params == NULL) {
1202 return error::kOutOfBounds; 1202 return error::kOutOfBounds;
1203 } 1203 }
1204 // Check that the client initialized the result. 1204 // Check that the client initialized the result.
1205 if (result->size != 0) { 1205 if (result->size != 0) {
1206 return error::kInvalidArguments; 1206 return error::kInvalidArguments;
1207 } 1207 }
1208 CopyRealGLErrorsToWrapper(); 1208 CopyRealGLErrorsToWrapper();
1209 glGetTexParameterfv(target, pname, params); 1209 glGetTexParameterfv(target, pname, params);
1210 GLenum error = glGetError(); 1210 GLenum error = glGetError();
1211 if (error == GL_NO_ERROR) { 1211 if (error == GL_NO_ERROR) {
1212 result->SetNumResults(num_values); 1212 result->SetNumResults(num_values);
1213 } else { 1213 } else {
1214 SetGLError(error, NULL); 1214 SetGLError(error, "", "");
1215 } 1215 }
1216 return error::kNoError; 1216 return error::kNoError;
1217 } 1217 }
1218 1218
1219 error::Error GLES2DecoderImpl::HandleGetTexParameteriv( 1219 error::Error GLES2DecoderImpl::HandleGetTexParameteriv(
1220 uint32 immediate_data_size, const gles2::GetTexParameteriv& c) { 1220 uint32 immediate_data_size, const gles2::GetTexParameteriv& c) {
1221 GLenum target = static_cast<GLenum>(c.target); 1221 GLenum target = static_cast<GLenum>(c.target);
1222 GLenum pname = static_cast<GLenum>(c.pname); 1222 GLenum pname = static_cast<GLenum>(c.pname);
1223 typedef GetTexParameteriv::Result Result; 1223 typedef GetTexParameteriv::Result Result;
1224 GLsizei num_values = 0; 1224 GLsizei num_values = 0;
1225 GetNumValuesReturnedForGLGet(pname, &num_values); 1225 GetNumValuesReturnedForGLGet(pname, &num_values);
1226 Result* result = GetSharedMemoryAs<Result*>( 1226 Result* result = GetSharedMemoryAs<Result*>(
1227 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1227 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1228 GLint* params = result ? result->GetData() : NULL; 1228 GLint* params = result ? result->GetData() : NULL;
1229 if (!validators_->get_tex_param_target.IsValid(target)) { 1229 if (!validators_->get_tex_param_target.IsValid(target)) {
1230 SetGLError(GL_INVALID_ENUM, "glGetTexParameteriv: target GL_INVALID_ENUM"); 1230 SetGLError(
1231 GL_INVALID_ENUM, "glGetTexParameteriv", "target GL_INVALID_ENUM");
1231 return error::kNoError; 1232 return error::kNoError;
1232 } 1233 }
1233 if (!validators_->texture_parameter.IsValid(pname)) { 1234 if (!validators_->texture_parameter.IsValid(pname)) {
1234 SetGLError(GL_INVALID_ENUM, "glGetTexParameteriv: pname GL_INVALID_ENUM"); 1235 SetGLError(
1236 GL_INVALID_ENUM, "glGetTexParameteriv", "pname GL_INVALID_ENUM");
1235 return error::kNoError; 1237 return error::kNoError;
1236 } 1238 }
1237 if (params == NULL) { 1239 if (params == NULL) {
1238 return error::kOutOfBounds; 1240 return error::kOutOfBounds;
1239 } 1241 }
1240 // Check that the client initialized the result. 1242 // Check that the client initialized the result.
1241 if (result->size != 0) { 1243 if (result->size != 0) {
1242 return error::kInvalidArguments; 1244 return error::kInvalidArguments;
1243 } 1245 }
1244 CopyRealGLErrorsToWrapper(); 1246 CopyRealGLErrorsToWrapper();
1245 glGetTexParameteriv(target, pname, params); 1247 glGetTexParameteriv(target, pname, params);
1246 GLenum error = glGetError(); 1248 GLenum error = glGetError();
1247 if (error == GL_NO_ERROR) { 1249 if (error == GL_NO_ERROR) {
1248 result->SetNumResults(num_values); 1250 result->SetNumResults(num_values);
1249 } else { 1251 } else {
1250 SetGLError(error, NULL); 1252 SetGLError(error, "", "");
1251 } 1253 }
1252 return error::kNoError; 1254 return error::kNoError;
1253 } 1255 }
1254 1256
1255 error::Error GLES2DecoderImpl::HandleGetVertexAttribfv( 1257 error::Error GLES2DecoderImpl::HandleGetVertexAttribfv(
1256 uint32 immediate_data_size, const gles2::GetVertexAttribfv& c) { 1258 uint32 immediate_data_size, const gles2::GetVertexAttribfv& c) {
1257 GLuint index = static_cast<GLuint>(c.index); 1259 GLuint index = static_cast<GLuint>(c.index);
1258 GLenum pname = static_cast<GLenum>(c.pname); 1260 GLenum pname = static_cast<GLenum>(c.pname);
1259 typedef GetVertexAttribfv::Result Result; 1261 typedef GetVertexAttribfv::Result Result;
1260 GLsizei num_values = 0; 1262 GLsizei num_values = 0;
1261 GetNumValuesReturnedForGLGet(pname, &num_values); 1263 GetNumValuesReturnedForGLGet(pname, &num_values);
1262 Result* result = GetSharedMemoryAs<Result*>( 1264 Result* result = GetSharedMemoryAs<Result*>(
1263 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1265 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1264 GLfloat* params = result ? result->GetData() : NULL; 1266 GLfloat* params = result ? result->GetData() : NULL;
1265 if (!validators_->vertex_attribute.IsValid(pname)) { 1267 if (!validators_->vertex_attribute.IsValid(pname)) {
1266 SetGLError(GL_INVALID_ENUM, "glGetVertexAttribfv: pname GL_INVALID_ENUM"); 1268 SetGLError(
1269 GL_INVALID_ENUM, "glGetVertexAttribfv", "pname GL_INVALID_ENUM");
1267 return error::kNoError; 1270 return error::kNoError;
1268 } 1271 }
1269 if (params == NULL) { 1272 if (params == NULL) {
1270 return error::kOutOfBounds; 1273 return error::kOutOfBounds;
1271 } 1274 }
1272 // Check that the client initialized the result. 1275 // Check that the client initialized the result.
1273 if (result->size != 0) { 1276 if (result->size != 0) {
1274 return error::kInvalidArguments; 1277 return error::kInvalidArguments;
1275 } 1278 }
1276 CopyRealGLErrorsToWrapper(); 1279 CopyRealGLErrorsToWrapper();
1277 DoGetVertexAttribfv(index, pname, params); 1280 DoGetVertexAttribfv(index, pname, params);
1278 GLenum error = glGetError(); 1281 GLenum error = glGetError();
1279 if (error == GL_NO_ERROR) { 1282 if (error == GL_NO_ERROR) {
1280 result->SetNumResults(num_values); 1283 result->SetNumResults(num_values);
1281 } else { 1284 } else {
1282 SetGLError(error, NULL); 1285 SetGLError(error, "", "");
1283 } 1286 }
1284 return error::kNoError; 1287 return error::kNoError;
1285 } 1288 }
1286 1289
1287 error::Error GLES2DecoderImpl::HandleGetVertexAttribiv( 1290 error::Error GLES2DecoderImpl::HandleGetVertexAttribiv(
1288 uint32 immediate_data_size, const gles2::GetVertexAttribiv& c) { 1291 uint32 immediate_data_size, const gles2::GetVertexAttribiv& c) {
1289 GLuint index = static_cast<GLuint>(c.index); 1292 GLuint index = static_cast<GLuint>(c.index);
1290 GLenum pname = static_cast<GLenum>(c.pname); 1293 GLenum pname = static_cast<GLenum>(c.pname);
1291 typedef GetVertexAttribiv::Result Result; 1294 typedef GetVertexAttribiv::Result Result;
1292 GLsizei num_values = 0; 1295 GLsizei num_values = 0;
1293 GetNumValuesReturnedForGLGet(pname, &num_values); 1296 GetNumValuesReturnedForGLGet(pname, &num_values);
1294 Result* result = GetSharedMemoryAs<Result*>( 1297 Result* result = GetSharedMemoryAs<Result*>(
1295 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1298 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1296 GLint* params = result ? result->GetData() : NULL; 1299 GLint* params = result ? result->GetData() : NULL;
1297 if (!validators_->vertex_attribute.IsValid(pname)) { 1300 if (!validators_->vertex_attribute.IsValid(pname)) {
1298 SetGLError(GL_INVALID_ENUM, "glGetVertexAttribiv: pname GL_INVALID_ENUM"); 1301 SetGLError(
1302 GL_INVALID_ENUM, "glGetVertexAttribiv", "pname GL_INVALID_ENUM");
1299 return error::kNoError; 1303 return error::kNoError;
1300 } 1304 }
1301 if (params == NULL) { 1305 if (params == NULL) {
1302 return error::kOutOfBounds; 1306 return error::kOutOfBounds;
1303 } 1307 }
1304 // Check that the client initialized the result. 1308 // Check that the client initialized the result.
1305 if (result->size != 0) { 1309 if (result->size != 0) {
1306 return error::kInvalidArguments; 1310 return error::kInvalidArguments;
1307 } 1311 }
1308 CopyRealGLErrorsToWrapper(); 1312 CopyRealGLErrorsToWrapper();
1309 DoGetVertexAttribiv(index, pname, params); 1313 DoGetVertexAttribiv(index, pname, params);
1310 GLenum error = glGetError(); 1314 GLenum error = glGetError();
1311 if (error == GL_NO_ERROR) { 1315 if (error == GL_NO_ERROR) {
1312 result->SetNumResults(num_values); 1316 result->SetNumResults(num_values);
1313 } else { 1317 } else {
1314 SetGLError(error, NULL); 1318 SetGLError(error, "", "");
1315 } 1319 }
1316 return error::kNoError; 1320 return error::kNoError;
1317 } 1321 }
1318 1322
1319 error::Error GLES2DecoderImpl::HandleHint( 1323 error::Error GLES2DecoderImpl::HandleHint(
1320 uint32 immediate_data_size, const gles2::Hint& c) { 1324 uint32 immediate_data_size, const gles2::Hint& c) {
1321 GLenum target = static_cast<GLenum>(c.target); 1325 GLenum target = static_cast<GLenum>(c.target);
1322 GLenum mode = static_cast<GLenum>(c.mode); 1326 GLenum mode = static_cast<GLenum>(c.mode);
1323 if (!validators_->hint_target.IsValid(target)) { 1327 if (!validators_->hint_target.IsValid(target)) {
1324 SetGLError(GL_INVALID_ENUM, "glHint: target GL_INVALID_ENUM"); 1328 SetGLError(GL_INVALID_ENUM, "glHint", "target GL_INVALID_ENUM");
1325 return error::kNoError; 1329 return error::kNoError;
1326 } 1330 }
1327 if (!validators_->hint_mode.IsValid(mode)) { 1331 if (!validators_->hint_mode.IsValid(mode)) {
1328 SetGLError(GL_INVALID_ENUM, "glHint: mode GL_INVALID_ENUM"); 1332 SetGLError(GL_INVALID_ENUM, "glHint", "mode GL_INVALID_ENUM");
1329 return error::kNoError; 1333 return error::kNoError;
1330 } 1334 }
1331 glHint(target, mode); 1335 glHint(target, mode);
1332 return error::kNoError; 1336 return error::kNoError;
1333 } 1337 }
1334 1338
1335 error::Error GLES2DecoderImpl::HandleIsBuffer( 1339 error::Error GLES2DecoderImpl::HandleIsBuffer(
1336 uint32 immediate_data_size, const gles2::IsBuffer& c) { 1340 uint32 immediate_data_size, const gles2::IsBuffer& c) {
1337 GLuint buffer = c.buffer; 1341 GLuint buffer = c.buffer;
1338 typedef IsBuffer::Result Result; 1342 typedef IsBuffer::Result Result;
1339 Result* result_dst = GetSharedMemoryAs<Result*>( 1343 Result* result_dst = GetSharedMemoryAs<Result*>(
1340 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 1344 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
1341 if (!result_dst) { 1345 if (!result_dst) {
1342 return error::kOutOfBounds; 1346 return error::kOutOfBounds;
1343 } 1347 }
1344 *result_dst = DoIsBuffer(buffer); 1348 *result_dst = DoIsBuffer(buffer);
1345 return error::kNoError; 1349 return error::kNoError;
1346 } 1350 }
1347 1351
1348 error::Error GLES2DecoderImpl::HandleIsEnabled( 1352 error::Error GLES2DecoderImpl::HandleIsEnabled(
1349 uint32 immediate_data_size, const gles2::IsEnabled& c) { 1353 uint32 immediate_data_size, const gles2::IsEnabled& c) {
1350 GLenum cap = static_cast<GLenum>(c.cap); 1354 GLenum cap = static_cast<GLenum>(c.cap);
1351 typedef IsEnabled::Result Result; 1355 typedef IsEnabled::Result Result;
1352 Result* result_dst = GetSharedMemoryAs<Result*>( 1356 Result* result_dst = GetSharedMemoryAs<Result*>(
1353 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 1357 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
1354 if (!result_dst) { 1358 if (!result_dst) {
1355 return error::kOutOfBounds; 1359 return error::kOutOfBounds;
1356 } 1360 }
1357 if (!validators_->capability.IsValid(cap)) { 1361 if (!validators_->capability.IsValid(cap)) {
1358 SetGLError(GL_INVALID_ENUM, "glIsEnabled: cap GL_INVALID_ENUM"); 1362 SetGLError(GL_INVALID_ENUM, "glIsEnabled", "cap GL_INVALID_ENUM");
1359 return error::kNoError; 1363 return error::kNoError;
1360 } 1364 }
1361 *result_dst = DoIsEnabled(cap); 1365 *result_dst = DoIsEnabled(cap);
1362 return error::kNoError; 1366 return error::kNoError;
1363 } 1367 }
1364 1368
1365 error::Error GLES2DecoderImpl::HandleIsFramebuffer( 1369 error::Error GLES2DecoderImpl::HandleIsFramebuffer(
1366 uint32 immediate_data_size, const gles2::IsFramebuffer& c) { 1370 uint32 immediate_data_size, const gles2::IsFramebuffer& c) {
1367 GLuint framebuffer = c.framebuffer; 1371 GLuint framebuffer = c.framebuffer;
1368 typedef IsFramebuffer::Result Result; 1372 typedef IsFramebuffer::Result Result;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 } 1460 }
1457 1461
1458 error::Error GLES2DecoderImpl::HandleRenderbufferStorage( 1462 error::Error GLES2DecoderImpl::HandleRenderbufferStorage(
1459 uint32 immediate_data_size, const gles2::RenderbufferStorage& c) { 1463 uint32 immediate_data_size, const gles2::RenderbufferStorage& c) {
1460 GLenum target = static_cast<GLenum>(c.target); 1464 GLenum target = static_cast<GLenum>(c.target);
1461 GLenum internalformat = static_cast<GLenum>(c.internalformat); 1465 GLenum internalformat = static_cast<GLenum>(c.internalformat);
1462 GLsizei width = static_cast<GLsizei>(c.width); 1466 GLsizei width = static_cast<GLsizei>(c.width);
1463 GLsizei height = static_cast<GLsizei>(c.height); 1467 GLsizei height = static_cast<GLsizei>(c.height);
1464 if (!validators_->render_buffer_target.IsValid(target)) { 1468 if (!validators_->render_buffer_target.IsValid(target)) {
1465 SetGLError( 1469 SetGLError(
1466 GL_INVALID_ENUM, "glRenderbufferStorage: target GL_INVALID_ENUM"); 1470 GL_INVALID_ENUM, "glRenderbufferStorage", "target GL_INVALID_ENUM");
1467 return error::kNoError; 1471 return error::kNoError;
1468 } 1472 }
1469 if (!validators_->render_buffer_format.IsValid(internalformat)) { 1473 if (!validators_->render_buffer_format.IsValid(internalformat)) {
1470 SetGLError( 1474 SetGLError(
1471 GL_INVALID_ENUM, 1475 GL_INVALID_ENUM, "glRenderbufferStorage", "internalformat GL_INVALID_ENU M"); // NOLINT
1472 "glRenderbufferStorage: internalformat GL_INVALID_ENUM");
1473 return error::kNoError; 1476 return error::kNoError;
1474 } 1477 }
1475 if (width < 0) { 1478 if (width < 0) {
1476 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage: width < 0"); 1479 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "width < 0");
1477 return error::kNoError; 1480 return error::kNoError;
1478 } 1481 }
1479 if (height < 0) { 1482 if (height < 0) {
1480 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage: height < 0"); 1483 SetGLError(GL_INVALID_VALUE, "glRenderbufferStorage", "height < 0");
1481 return error::kNoError; 1484 return error::kNoError;
1482 } 1485 }
1483 DoRenderbufferStorage(target, internalformat, width, height); 1486 DoRenderbufferStorage(target, internalformat, width, height);
1484 return error::kNoError; 1487 return error::kNoError;
1485 } 1488 }
1486 1489
1487 error::Error GLES2DecoderImpl::HandleSampleCoverage( 1490 error::Error GLES2DecoderImpl::HandleSampleCoverage(
1488 uint32 immediate_data_size, const gles2::SampleCoverage& c) { 1491 uint32 immediate_data_size, const gles2::SampleCoverage& c) {
1489 GLclampf value = static_cast<GLclampf>(c.value); 1492 GLclampf value = static_cast<GLclampf>(c.value);
1490 GLboolean invert = static_cast<GLboolean>(c.invert); 1493 GLboolean invert = static_cast<GLboolean>(c.invert);
1491 glSampleCoverage(value, invert); 1494 glSampleCoverage(value, invert);
1492 return error::kNoError; 1495 return error::kNoError;
1493 } 1496 }
1494 1497
1495 error::Error GLES2DecoderImpl::HandleScissor( 1498 error::Error GLES2DecoderImpl::HandleScissor(
1496 uint32 immediate_data_size, const gles2::Scissor& c) { 1499 uint32 immediate_data_size, const gles2::Scissor& c) {
1497 GLint x = static_cast<GLint>(c.x); 1500 GLint x = static_cast<GLint>(c.x);
1498 GLint y = static_cast<GLint>(c.y); 1501 GLint y = static_cast<GLint>(c.y);
1499 GLsizei width = static_cast<GLsizei>(c.width); 1502 GLsizei width = static_cast<GLsizei>(c.width);
1500 GLsizei height = static_cast<GLsizei>(c.height); 1503 GLsizei height = static_cast<GLsizei>(c.height);
1501 if (width < 0) { 1504 if (width < 0) {
1502 SetGLError(GL_INVALID_VALUE, "glScissor: width < 0"); 1505 SetGLError(GL_INVALID_VALUE, "glScissor", "width < 0");
1503 return error::kNoError; 1506 return error::kNoError;
1504 } 1507 }
1505 if (height < 0) { 1508 if (height < 0) {
1506 SetGLError(GL_INVALID_VALUE, "glScissor: height < 0"); 1509 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0");
1507 return error::kNoError; 1510 return error::kNoError;
1508 } 1511 }
1509 glScissor(x, y, width, height); 1512 glScissor(x, y, width, height);
1510 return error::kNoError; 1513 return error::kNoError;
1511 } 1514 }
1512 1515
1513 error::Error GLES2DecoderImpl::HandleStencilFunc( 1516 error::Error GLES2DecoderImpl::HandleStencilFunc(
1514 uint32 immediate_data_size, const gles2::StencilFunc& c) { 1517 uint32 immediate_data_size, const gles2::StencilFunc& c) {
1515 GLenum func = static_cast<GLenum>(c.func); 1518 GLenum func = static_cast<GLenum>(c.func);
1516 GLint ref = static_cast<GLint>(c.ref); 1519 GLint ref = static_cast<GLint>(c.ref);
1517 GLuint mask = static_cast<GLuint>(c.mask); 1520 GLuint mask = static_cast<GLuint>(c.mask);
1518 if (!validators_->cmp_function.IsValid(func)) { 1521 if (!validators_->cmp_function.IsValid(func)) {
1519 SetGLError(GL_INVALID_ENUM, "glStencilFunc: func GL_INVALID_ENUM"); 1522 SetGLError(GL_INVALID_ENUM, "glStencilFunc", "func GL_INVALID_ENUM");
1520 return error::kNoError; 1523 return error::kNoError;
1521 } 1524 }
1522 glStencilFunc(func, ref, mask); 1525 glStencilFunc(func, ref, mask);
1523 return error::kNoError; 1526 return error::kNoError;
1524 } 1527 }
1525 1528
1526 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate( 1529 error::Error GLES2DecoderImpl::HandleStencilFuncSeparate(
1527 uint32 immediate_data_size, const gles2::StencilFuncSeparate& c) { 1530 uint32 immediate_data_size, const gles2::StencilFuncSeparate& c) {
1528 GLenum face = static_cast<GLenum>(c.face); 1531 GLenum face = static_cast<GLenum>(c.face);
1529 GLenum func = static_cast<GLenum>(c.func); 1532 GLenum func = static_cast<GLenum>(c.func);
1530 GLint ref = static_cast<GLint>(c.ref); 1533 GLint ref = static_cast<GLint>(c.ref);
1531 GLuint mask = static_cast<GLuint>(c.mask); 1534 GLuint mask = static_cast<GLuint>(c.mask);
1532 if (!validators_->face_type.IsValid(face)) { 1535 if (!validators_->face_type.IsValid(face)) {
1533 SetGLError(GL_INVALID_ENUM, "glStencilFuncSeparate: face GL_INVALID_ENUM"); 1536 SetGLError(
1537 GL_INVALID_ENUM, "glStencilFuncSeparate", "face GL_INVALID_ENUM");
1534 return error::kNoError; 1538 return error::kNoError;
1535 } 1539 }
1536 if (!validators_->cmp_function.IsValid(func)) { 1540 if (!validators_->cmp_function.IsValid(func)) {
1537 SetGLError(GL_INVALID_ENUM, "glStencilFuncSeparate: func GL_INVALID_ENUM"); 1541 SetGLError(
1542 GL_INVALID_ENUM, "glStencilFuncSeparate", "func GL_INVALID_ENUM");
1538 return error::kNoError; 1543 return error::kNoError;
1539 } 1544 }
1540 glStencilFuncSeparate(face, func, ref, mask); 1545 glStencilFuncSeparate(face, func, ref, mask);
1541 return error::kNoError; 1546 return error::kNoError;
1542 } 1547 }
1543 1548
1544 error::Error GLES2DecoderImpl::HandleStencilMask( 1549 error::Error GLES2DecoderImpl::HandleStencilMask(
1545 uint32 immediate_data_size, const gles2::StencilMask& c) { 1550 uint32 immediate_data_size, const gles2::StencilMask& c) {
1546 GLuint mask = static_cast<GLuint>(c.mask); 1551 GLuint mask = static_cast<GLuint>(c.mask);
1547 DoStencilMask(mask); 1552 DoStencilMask(mask);
1548 return error::kNoError; 1553 return error::kNoError;
1549 } 1554 }
1550 1555
1551 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate( 1556 error::Error GLES2DecoderImpl::HandleStencilMaskSeparate(
1552 uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) { 1557 uint32 immediate_data_size, const gles2::StencilMaskSeparate& c) {
1553 GLenum face = static_cast<GLenum>(c.face); 1558 GLenum face = static_cast<GLenum>(c.face);
1554 GLuint mask = static_cast<GLuint>(c.mask); 1559 GLuint mask = static_cast<GLuint>(c.mask);
1555 if (!validators_->face_type.IsValid(face)) { 1560 if (!validators_->face_type.IsValid(face)) {
1556 SetGLError(GL_INVALID_ENUM, "glStencilMaskSeparate: face GL_INVALID_ENUM"); 1561 SetGLError(
1562 GL_INVALID_ENUM, "glStencilMaskSeparate", "face GL_INVALID_ENUM");
1557 return error::kNoError; 1563 return error::kNoError;
1558 } 1564 }
1559 DoStencilMaskSeparate(face, mask); 1565 DoStencilMaskSeparate(face, mask);
1560 return error::kNoError; 1566 return error::kNoError;
1561 } 1567 }
1562 1568
1563 error::Error GLES2DecoderImpl::HandleStencilOp( 1569 error::Error GLES2DecoderImpl::HandleStencilOp(
1564 uint32 immediate_data_size, const gles2::StencilOp& c) { 1570 uint32 immediate_data_size, const gles2::StencilOp& c) {
1565 GLenum fail = static_cast<GLenum>(c.fail); 1571 GLenum fail = static_cast<GLenum>(c.fail);
1566 GLenum zfail = static_cast<GLenum>(c.zfail); 1572 GLenum zfail = static_cast<GLenum>(c.zfail);
1567 GLenum zpass = static_cast<GLenum>(c.zpass); 1573 GLenum zpass = static_cast<GLenum>(c.zpass);
1568 if (!validators_->stencil_op.IsValid(fail)) { 1574 if (!validators_->stencil_op.IsValid(fail)) {
1569 SetGLError(GL_INVALID_ENUM, "glStencilOp: fail GL_INVALID_ENUM"); 1575 SetGLError(GL_INVALID_ENUM, "glStencilOp", "fail GL_INVALID_ENUM");
1570 return error::kNoError; 1576 return error::kNoError;
1571 } 1577 }
1572 if (!validators_->stencil_op.IsValid(zfail)) { 1578 if (!validators_->stencil_op.IsValid(zfail)) {
1573 SetGLError(GL_INVALID_ENUM, "glStencilOp: zfail GL_INVALID_ENUM"); 1579 SetGLError(GL_INVALID_ENUM, "glStencilOp", "zfail GL_INVALID_ENUM");
1574 return error::kNoError; 1580 return error::kNoError;
1575 } 1581 }
1576 if (!validators_->stencil_op.IsValid(zpass)) { 1582 if (!validators_->stencil_op.IsValid(zpass)) {
1577 SetGLError(GL_INVALID_ENUM, "glStencilOp: zpass GL_INVALID_ENUM"); 1583 SetGLError(GL_INVALID_ENUM, "glStencilOp", "zpass GL_INVALID_ENUM");
1578 return error::kNoError; 1584 return error::kNoError;
1579 } 1585 }
1580 glStencilOp(fail, zfail, zpass); 1586 glStencilOp(fail, zfail, zpass);
1581 return error::kNoError; 1587 return error::kNoError;
1582 } 1588 }
1583 1589
1584 error::Error GLES2DecoderImpl::HandleStencilOpSeparate( 1590 error::Error GLES2DecoderImpl::HandleStencilOpSeparate(
1585 uint32 immediate_data_size, const gles2::StencilOpSeparate& c) { 1591 uint32 immediate_data_size, const gles2::StencilOpSeparate& c) {
1586 GLenum face = static_cast<GLenum>(c.face); 1592 GLenum face = static_cast<GLenum>(c.face);
1587 GLenum fail = static_cast<GLenum>(c.fail); 1593 GLenum fail = static_cast<GLenum>(c.fail);
1588 GLenum zfail = static_cast<GLenum>(c.zfail); 1594 GLenum zfail = static_cast<GLenum>(c.zfail);
1589 GLenum zpass = static_cast<GLenum>(c.zpass); 1595 GLenum zpass = static_cast<GLenum>(c.zpass);
1590 if (!validators_->face_type.IsValid(face)) { 1596 if (!validators_->face_type.IsValid(face)) {
1591 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate: face GL_INVALID_ENUM"); 1597 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate", "face GL_INVALID_ENUM");
1592 return error::kNoError; 1598 return error::kNoError;
1593 } 1599 }
1594 if (!validators_->stencil_op.IsValid(fail)) { 1600 if (!validators_->stencil_op.IsValid(fail)) {
1595 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate: fail GL_INVALID_ENUM"); 1601 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate", "fail GL_INVALID_ENUM");
1596 return error::kNoError; 1602 return error::kNoError;
1597 } 1603 }
1598 if (!validators_->stencil_op.IsValid(zfail)) { 1604 if (!validators_->stencil_op.IsValid(zfail)) {
1599 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate: zfail GL_INVALID_ENUM"); 1605 SetGLError(
1606 GL_INVALID_ENUM, "glStencilOpSeparate", "zfail GL_INVALID_ENUM");
1600 return error::kNoError; 1607 return error::kNoError;
1601 } 1608 }
1602 if (!validators_->stencil_op.IsValid(zpass)) { 1609 if (!validators_->stencil_op.IsValid(zpass)) {
1603 SetGLError(GL_INVALID_ENUM, "glStencilOpSeparate: zpass GL_INVALID_ENUM"); 1610 SetGLError(
1611 GL_INVALID_ENUM, "glStencilOpSeparate", "zpass GL_INVALID_ENUM");
1604 return error::kNoError; 1612 return error::kNoError;
1605 } 1613 }
1606 glStencilOpSeparate(face, fail, zfail, zpass); 1614 glStencilOpSeparate(face, fail, zfail, zpass);
1607 return error::kNoError; 1615 return error::kNoError;
1608 } 1616 }
1609 1617
1610 error::Error GLES2DecoderImpl::HandleTexParameterf( 1618 error::Error GLES2DecoderImpl::HandleTexParameterf(
1611 uint32 immediate_data_size, const gles2::TexParameterf& c) { 1619 uint32 immediate_data_size, const gles2::TexParameterf& c) {
1612 GLenum target = static_cast<GLenum>(c.target); 1620 GLenum target = static_cast<GLenum>(c.target);
1613 GLenum pname = static_cast<GLenum>(c.pname); 1621 GLenum pname = static_cast<GLenum>(c.pname);
1614 GLfloat param = static_cast<GLfloat>(c.param); 1622 GLfloat param = static_cast<GLfloat>(c.param);
1615 if (!validators_->texture_bind_target.IsValid(target)) { 1623 if (!validators_->texture_bind_target.IsValid(target)) {
1616 SetGLError(GL_INVALID_ENUM, "glTexParameterf: target GL_INVALID_ENUM"); 1624 SetGLError(GL_INVALID_ENUM, "glTexParameterf", "target GL_INVALID_ENUM");
1617 return error::kNoError; 1625 return error::kNoError;
1618 } 1626 }
1619 if (!validators_->texture_parameter.IsValid(pname)) { 1627 if (!validators_->texture_parameter.IsValid(pname)) {
1620 SetGLError(GL_INVALID_ENUM, "glTexParameterf: pname GL_INVALID_ENUM"); 1628 SetGLError(GL_INVALID_ENUM, "glTexParameterf", "pname GL_INVALID_ENUM");
1621 return error::kNoError; 1629 return error::kNoError;
1622 } 1630 }
1623 DoTexParameterf(target, pname, param); 1631 DoTexParameterf(target, pname, param);
1624 return error::kNoError; 1632 return error::kNoError;
1625 } 1633 }
1626 1634
1627 error::Error GLES2DecoderImpl::HandleTexParameterfv( 1635 error::Error GLES2DecoderImpl::HandleTexParameterfv(
1628 uint32 immediate_data_size, const gles2::TexParameterfv& c) { 1636 uint32 immediate_data_size, const gles2::TexParameterfv& c) {
1629 GLenum target = static_cast<GLenum>(c.target); 1637 GLenum target = static_cast<GLenum>(c.target);
1630 GLenum pname = static_cast<GLenum>(c.pname); 1638 GLenum pname = static_cast<GLenum>(c.pname);
1631 uint32 data_size; 1639 uint32 data_size;
1632 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 1640 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
1633 return error::kOutOfBounds; 1641 return error::kOutOfBounds;
1634 } 1642 }
1635 const GLfloat* params = GetSharedMemoryAs<const GLfloat*>( 1643 const GLfloat* params = GetSharedMemoryAs<const GLfloat*>(
1636 c.params_shm_id, c.params_shm_offset, data_size); 1644 c.params_shm_id, c.params_shm_offset, data_size);
1637 if (!validators_->texture_bind_target.IsValid(target)) { 1645 if (!validators_->texture_bind_target.IsValid(target)) {
1638 SetGLError(GL_INVALID_ENUM, "glTexParameterfv: target GL_INVALID_ENUM"); 1646 SetGLError(GL_INVALID_ENUM, "glTexParameterfv", "target GL_INVALID_ENUM");
1639 return error::kNoError; 1647 return error::kNoError;
1640 } 1648 }
1641 if (!validators_->texture_parameter.IsValid(pname)) { 1649 if (!validators_->texture_parameter.IsValid(pname)) {
1642 SetGLError(GL_INVALID_ENUM, "glTexParameterfv: pname GL_INVALID_ENUM"); 1650 SetGLError(GL_INVALID_ENUM, "glTexParameterfv", "pname GL_INVALID_ENUM");
1643 return error::kNoError; 1651 return error::kNoError;
1644 } 1652 }
1645 if (params == NULL) { 1653 if (params == NULL) {
1646 return error::kOutOfBounds; 1654 return error::kOutOfBounds;
1647 } 1655 }
1648 DoTexParameterfv(target, pname, params); 1656 DoTexParameterfv(target, pname, params);
1649 return error::kNoError; 1657 return error::kNoError;
1650 } 1658 }
1651 1659
1652 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate( 1660 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate(
1653 uint32 immediate_data_size, const gles2::TexParameterfvImmediate& c) { 1661 uint32 immediate_data_size, const gles2::TexParameterfvImmediate& c) {
1654 GLenum target = static_cast<GLenum>(c.target); 1662 GLenum target = static_cast<GLenum>(c.target);
1655 GLenum pname = static_cast<GLenum>(c.pname); 1663 GLenum pname = static_cast<GLenum>(c.pname);
1656 uint32 data_size; 1664 uint32 data_size;
1657 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 1665 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
1658 return error::kOutOfBounds; 1666 return error::kOutOfBounds;
1659 } 1667 }
1660 if (data_size > immediate_data_size) { 1668 if (data_size > immediate_data_size) {
1661 return error::kOutOfBounds; 1669 return error::kOutOfBounds;
1662 } 1670 }
1663 const GLfloat* params = GetImmediateDataAs<const GLfloat*>( 1671 const GLfloat* params = GetImmediateDataAs<const GLfloat*>(
1664 c, data_size, immediate_data_size); 1672 c, data_size, immediate_data_size);
1665 if (!validators_->texture_bind_target.IsValid(target)) { 1673 if (!validators_->texture_bind_target.IsValid(target)) {
1666 SetGLError(GL_INVALID_ENUM, "glTexParameterfv: target GL_INVALID_ENUM"); 1674 SetGLError(GL_INVALID_ENUM, "glTexParameterfv", "target GL_INVALID_ENUM");
1667 return error::kNoError; 1675 return error::kNoError;
1668 } 1676 }
1669 if (!validators_->texture_parameter.IsValid(pname)) { 1677 if (!validators_->texture_parameter.IsValid(pname)) {
1670 SetGLError(GL_INVALID_ENUM, "glTexParameterfv: pname GL_INVALID_ENUM"); 1678 SetGLError(GL_INVALID_ENUM, "glTexParameterfv", "pname GL_INVALID_ENUM");
1671 return error::kNoError; 1679 return error::kNoError;
1672 } 1680 }
1673 if (params == NULL) { 1681 if (params == NULL) {
1674 return error::kOutOfBounds; 1682 return error::kOutOfBounds;
1675 } 1683 }
1676 DoTexParameterfv(target, pname, params); 1684 DoTexParameterfv(target, pname, params);
1677 return error::kNoError; 1685 return error::kNoError;
1678 } 1686 }
1679 1687
1680 error::Error GLES2DecoderImpl::HandleTexParameteri( 1688 error::Error GLES2DecoderImpl::HandleTexParameteri(
1681 uint32 immediate_data_size, const gles2::TexParameteri& c) { 1689 uint32 immediate_data_size, const gles2::TexParameteri& c) {
1682 GLenum target = static_cast<GLenum>(c.target); 1690 GLenum target = static_cast<GLenum>(c.target);
1683 GLenum pname = static_cast<GLenum>(c.pname); 1691 GLenum pname = static_cast<GLenum>(c.pname);
1684 GLint param = static_cast<GLint>(c.param); 1692 GLint param = static_cast<GLint>(c.param);
1685 if (!validators_->texture_bind_target.IsValid(target)) { 1693 if (!validators_->texture_bind_target.IsValid(target)) {
1686 SetGLError(GL_INVALID_ENUM, "glTexParameteri: target GL_INVALID_ENUM"); 1694 SetGLError(GL_INVALID_ENUM, "glTexParameteri", "target GL_INVALID_ENUM");
1687 return error::kNoError; 1695 return error::kNoError;
1688 } 1696 }
1689 if (!validators_->texture_parameter.IsValid(pname)) { 1697 if (!validators_->texture_parameter.IsValid(pname)) {
1690 SetGLError(GL_INVALID_ENUM, "glTexParameteri: pname GL_INVALID_ENUM"); 1698 SetGLError(GL_INVALID_ENUM, "glTexParameteri", "pname GL_INVALID_ENUM");
1691 return error::kNoError; 1699 return error::kNoError;
1692 } 1700 }
1693 DoTexParameteri(target, pname, param); 1701 DoTexParameteri(target, pname, param);
1694 return error::kNoError; 1702 return error::kNoError;
1695 } 1703 }
1696 1704
1697 error::Error GLES2DecoderImpl::HandleTexParameteriv( 1705 error::Error GLES2DecoderImpl::HandleTexParameteriv(
1698 uint32 immediate_data_size, const gles2::TexParameteriv& c) { 1706 uint32 immediate_data_size, const gles2::TexParameteriv& c) {
1699 GLenum target = static_cast<GLenum>(c.target); 1707 GLenum target = static_cast<GLenum>(c.target);
1700 GLenum pname = static_cast<GLenum>(c.pname); 1708 GLenum pname = static_cast<GLenum>(c.pname);
1701 uint32 data_size; 1709 uint32 data_size;
1702 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 1710 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
1703 return error::kOutOfBounds; 1711 return error::kOutOfBounds;
1704 } 1712 }
1705 const GLint* params = GetSharedMemoryAs<const GLint*>( 1713 const GLint* params = GetSharedMemoryAs<const GLint*>(
1706 c.params_shm_id, c.params_shm_offset, data_size); 1714 c.params_shm_id, c.params_shm_offset, data_size);
1707 if (!validators_->texture_bind_target.IsValid(target)) { 1715 if (!validators_->texture_bind_target.IsValid(target)) {
1708 SetGLError(GL_INVALID_ENUM, "glTexParameteriv: target GL_INVALID_ENUM"); 1716 SetGLError(GL_INVALID_ENUM, "glTexParameteriv", "target GL_INVALID_ENUM");
1709 return error::kNoError; 1717 return error::kNoError;
1710 } 1718 }
1711 if (!validators_->texture_parameter.IsValid(pname)) { 1719 if (!validators_->texture_parameter.IsValid(pname)) {
1712 SetGLError(GL_INVALID_ENUM, "glTexParameteriv: pname GL_INVALID_ENUM"); 1720 SetGLError(GL_INVALID_ENUM, "glTexParameteriv", "pname GL_INVALID_ENUM");
1713 return error::kNoError; 1721 return error::kNoError;
1714 } 1722 }
1715 if (params == NULL) { 1723 if (params == NULL) {
1716 return error::kOutOfBounds; 1724 return error::kOutOfBounds;
1717 } 1725 }
1718 DoTexParameteriv(target, pname, params); 1726 DoTexParameteriv(target, pname, params);
1719 return error::kNoError; 1727 return error::kNoError;
1720 } 1728 }
1721 1729
1722 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate( 1730 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate(
1723 uint32 immediate_data_size, const gles2::TexParameterivImmediate& c) { 1731 uint32 immediate_data_size, const gles2::TexParameterivImmediate& c) {
1724 GLenum target = static_cast<GLenum>(c.target); 1732 GLenum target = static_cast<GLenum>(c.target);
1725 GLenum pname = static_cast<GLenum>(c.pname); 1733 GLenum pname = static_cast<GLenum>(c.pname);
1726 uint32 data_size; 1734 uint32 data_size;
1727 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 1735 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
1728 return error::kOutOfBounds; 1736 return error::kOutOfBounds;
1729 } 1737 }
1730 if (data_size > immediate_data_size) { 1738 if (data_size > immediate_data_size) {
1731 return error::kOutOfBounds; 1739 return error::kOutOfBounds;
1732 } 1740 }
1733 const GLint* params = GetImmediateDataAs<const GLint*>( 1741 const GLint* params = GetImmediateDataAs<const GLint*>(
1734 c, data_size, immediate_data_size); 1742 c, data_size, immediate_data_size);
1735 if (!validators_->texture_bind_target.IsValid(target)) { 1743 if (!validators_->texture_bind_target.IsValid(target)) {
1736 SetGLError(GL_INVALID_ENUM, "glTexParameteriv: target GL_INVALID_ENUM"); 1744 SetGLError(GL_INVALID_ENUM, "glTexParameteriv", "target GL_INVALID_ENUM");
1737 return error::kNoError; 1745 return error::kNoError;
1738 } 1746 }
1739 if (!validators_->texture_parameter.IsValid(pname)) { 1747 if (!validators_->texture_parameter.IsValid(pname)) {
1740 SetGLError(GL_INVALID_ENUM, "glTexParameteriv: pname GL_INVALID_ENUM"); 1748 SetGLError(GL_INVALID_ENUM, "glTexParameteriv", "pname GL_INVALID_ENUM");
1741 return error::kNoError; 1749 return error::kNoError;
1742 } 1750 }
1743 if (params == NULL) { 1751 if (params == NULL) {
1744 return error::kOutOfBounds; 1752 return error::kOutOfBounds;
1745 } 1753 }
1746 DoTexParameteriv(target, pname, params); 1754 DoTexParameteriv(target, pname, params);
1747 return error::kNoError; 1755 return error::kNoError;
1748 } 1756 }
1749 1757
1750 error::Error GLES2DecoderImpl::HandleUniform1f( 1758 error::Error GLES2DecoderImpl::HandleUniform1f(
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
2157 GLsizei count = static_cast<GLsizei>(c.count); 2165 GLsizei count = static_cast<GLsizei>(c.count);
2158 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2166 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2159 uint32 data_size; 2167 uint32 data_size;
2160 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2168 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2161 return error::kOutOfBounds; 2169 return error::kOutOfBounds;
2162 } 2170 }
2163 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( 2171 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2164 c.value_shm_id, c.value_shm_offset, data_size); 2172 c.value_shm_id, c.value_shm_offset, data_size);
2165 if (!validators_->false_only.IsValid(transpose)) { 2173 if (!validators_->false_only.IsValid(transpose)) {
2166 SetGLError( 2174 SetGLError(
2167 GL_INVALID_VALUE, "glUniformMatrix2fv: transpose GL_INVALID_VALUE"); 2175 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE");
2168 return error::kNoError; 2176 return error::kNoError;
2169 } 2177 }
2170 if (value == NULL) { 2178 if (value == NULL) {
2171 return error::kOutOfBounds; 2179 return error::kOutOfBounds;
2172 } 2180 }
2173 DoUniformMatrix2fv(location, count, transpose, value); 2181 DoUniformMatrix2fv(location, count, transpose, value);
2174 return error::kNoError; 2182 return error::kNoError;
2175 } 2183 }
2176 2184
2177 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( 2185 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate(
2178 uint32 immediate_data_size, const gles2::UniformMatrix2fvImmediate& c) { 2186 uint32 immediate_data_size, const gles2::UniformMatrix2fvImmediate& c) {
2179 GLint location = program_manager()->UnswizzleLocation( 2187 GLint location = program_manager()->UnswizzleLocation(
2180 static_cast<GLint>(c.location)); 2188 static_cast<GLint>(c.location));
2181 GLsizei count = static_cast<GLsizei>(c.count); 2189 GLsizei count = static_cast<GLsizei>(c.count);
2182 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2190 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2183 uint32 data_size; 2191 uint32 data_size;
2184 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2192 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2185 return error::kOutOfBounds; 2193 return error::kOutOfBounds;
2186 } 2194 }
2187 if (data_size > immediate_data_size) { 2195 if (data_size > immediate_data_size) {
2188 return error::kOutOfBounds; 2196 return error::kOutOfBounds;
2189 } 2197 }
2190 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( 2198 const GLfloat* value = GetImmediateDataAs<const GLfloat*>(
2191 c, data_size, immediate_data_size); 2199 c, data_size, immediate_data_size);
2192 if (!validators_->false_only.IsValid(transpose)) { 2200 if (!validators_->false_only.IsValid(transpose)) {
2193 SetGLError( 2201 SetGLError(
2194 GL_INVALID_VALUE, "glUniformMatrix2fv: transpose GL_INVALID_VALUE"); 2202 GL_INVALID_VALUE, "glUniformMatrix2fv", "transpose GL_INVALID_VALUE");
2195 return error::kNoError; 2203 return error::kNoError;
2196 } 2204 }
2197 if (value == NULL) { 2205 if (value == NULL) {
2198 return error::kOutOfBounds; 2206 return error::kOutOfBounds;
2199 } 2207 }
2200 DoUniformMatrix2fv(location, count, transpose, value); 2208 DoUniformMatrix2fv(location, count, transpose, value);
2201 return error::kNoError; 2209 return error::kNoError;
2202 } 2210 }
2203 2211
2204 error::Error GLES2DecoderImpl::HandleUniformMatrix3fv( 2212 error::Error GLES2DecoderImpl::HandleUniformMatrix3fv(
2205 uint32 immediate_data_size, const gles2::UniformMatrix3fv& c) { 2213 uint32 immediate_data_size, const gles2::UniformMatrix3fv& c) {
2206 GLint location = program_manager()->UnswizzleLocation( 2214 GLint location = program_manager()->UnswizzleLocation(
2207 static_cast<GLint>(c.location)); 2215 static_cast<GLint>(c.location));
2208 GLsizei count = static_cast<GLsizei>(c.count); 2216 GLsizei count = static_cast<GLsizei>(c.count);
2209 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2217 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2210 uint32 data_size; 2218 uint32 data_size;
2211 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { 2219 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
2212 return error::kOutOfBounds; 2220 return error::kOutOfBounds;
2213 } 2221 }
2214 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( 2222 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2215 c.value_shm_id, c.value_shm_offset, data_size); 2223 c.value_shm_id, c.value_shm_offset, data_size);
2216 if (!validators_->false_only.IsValid(transpose)) { 2224 if (!validators_->false_only.IsValid(transpose)) {
2217 SetGLError( 2225 SetGLError(
2218 GL_INVALID_VALUE, "glUniformMatrix3fv: transpose GL_INVALID_VALUE"); 2226 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE");
2219 return error::kNoError; 2227 return error::kNoError;
2220 } 2228 }
2221 if (value == NULL) { 2229 if (value == NULL) {
2222 return error::kOutOfBounds; 2230 return error::kOutOfBounds;
2223 } 2231 }
2224 DoUniformMatrix3fv(location, count, transpose, value); 2232 DoUniformMatrix3fv(location, count, transpose, value);
2225 return error::kNoError; 2233 return error::kNoError;
2226 } 2234 }
2227 2235
2228 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( 2236 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate(
2229 uint32 immediate_data_size, const gles2::UniformMatrix3fvImmediate& c) { 2237 uint32 immediate_data_size, const gles2::UniformMatrix3fvImmediate& c) {
2230 GLint location = program_manager()->UnswizzleLocation( 2238 GLint location = program_manager()->UnswizzleLocation(
2231 static_cast<GLint>(c.location)); 2239 static_cast<GLint>(c.location));
2232 GLsizei count = static_cast<GLsizei>(c.count); 2240 GLsizei count = static_cast<GLsizei>(c.count);
2233 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2241 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2234 uint32 data_size; 2242 uint32 data_size;
2235 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { 2243 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
2236 return error::kOutOfBounds; 2244 return error::kOutOfBounds;
2237 } 2245 }
2238 if (data_size > immediate_data_size) { 2246 if (data_size > immediate_data_size) {
2239 return error::kOutOfBounds; 2247 return error::kOutOfBounds;
2240 } 2248 }
2241 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( 2249 const GLfloat* value = GetImmediateDataAs<const GLfloat*>(
2242 c, data_size, immediate_data_size); 2250 c, data_size, immediate_data_size);
2243 if (!validators_->false_only.IsValid(transpose)) { 2251 if (!validators_->false_only.IsValid(transpose)) {
2244 SetGLError( 2252 SetGLError(
2245 GL_INVALID_VALUE, "glUniformMatrix3fv: transpose GL_INVALID_VALUE"); 2253 GL_INVALID_VALUE, "glUniformMatrix3fv", "transpose GL_INVALID_VALUE");
2246 return error::kNoError; 2254 return error::kNoError;
2247 } 2255 }
2248 if (value == NULL) { 2256 if (value == NULL) {
2249 return error::kOutOfBounds; 2257 return error::kOutOfBounds;
2250 } 2258 }
2251 DoUniformMatrix3fv(location, count, transpose, value); 2259 DoUniformMatrix3fv(location, count, transpose, value);
2252 return error::kNoError; 2260 return error::kNoError;
2253 } 2261 }
2254 2262
2255 error::Error GLES2DecoderImpl::HandleUniformMatrix4fv( 2263 error::Error GLES2DecoderImpl::HandleUniformMatrix4fv(
2256 uint32 immediate_data_size, const gles2::UniformMatrix4fv& c) { 2264 uint32 immediate_data_size, const gles2::UniformMatrix4fv& c) {
2257 GLint location = program_manager()->UnswizzleLocation( 2265 GLint location = program_manager()->UnswizzleLocation(
2258 static_cast<GLint>(c.location)); 2266 static_cast<GLint>(c.location));
2259 GLsizei count = static_cast<GLsizei>(c.count); 2267 GLsizei count = static_cast<GLsizei>(c.count);
2260 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2268 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2261 uint32 data_size; 2269 uint32 data_size;
2262 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { 2270 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
2263 return error::kOutOfBounds; 2271 return error::kOutOfBounds;
2264 } 2272 }
2265 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>( 2273 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2266 c.value_shm_id, c.value_shm_offset, data_size); 2274 c.value_shm_id, c.value_shm_offset, data_size);
2267 if (!validators_->false_only.IsValid(transpose)) { 2275 if (!validators_->false_only.IsValid(transpose)) {
2268 SetGLError( 2276 SetGLError(
2269 GL_INVALID_VALUE, "glUniformMatrix4fv: transpose GL_INVALID_VALUE"); 2277 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE");
2270 return error::kNoError; 2278 return error::kNoError;
2271 } 2279 }
2272 if (value == NULL) { 2280 if (value == NULL) {
2273 return error::kOutOfBounds; 2281 return error::kOutOfBounds;
2274 } 2282 }
2275 DoUniformMatrix4fv(location, count, transpose, value); 2283 DoUniformMatrix4fv(location, count, transpose, value);
2276 return error::kNoError; 2284 return error::kNoError;
2277 } 2285 }
2278 2286
2279 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( 2287 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate(
2280 uint32 immediate_data_size, const gles2::UniformMatrix4fvImmediate& c) { 2288 uint32 immediate_data_size, const gles2::UniformMatrix4fvImmediate& c) {
2281 GLint location = program_manager()->UnswizzleLocation( 2289 GLint location = program_manager()->UnswizzleLocation(
2282 static_cast<GLint>(c.location)); 2290 static_cast<GLint>(c.location));
2283 GLsizei count = static_cast<GLsizei>(c.count); 2291 GLsizei count = static_cast<GLsizei>(c.count);
2284 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2292 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2285 uint32 data_size; 2293 uint32 data_size;
2286 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { 2294 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
2287 return error::kOutOfBounds; 2295 return error::kOutOfBounds;
2288 } 2296 }
2289 if (data_size > immediate_data_size) { 2297 if (data_size > immediate_data_size) {
2290 return error::kOutOfBounds; 2298 return error::kOutOfBounds;
2291 } 2299 }
2292 const GLfloat* value = GetImmediateDataAs<const GLfloat*>( 2300 const GLfloat* value = GetImmediateDataAs<const GLfloat*>(
2293 c, data_size, immediate_data_size); 2301 c, data_size, immediate_data_size);
2294 if (!validators_->false_only.IsValid(transpose)) { 2302 if (!validators_->false_only.IsValid(transpose)) {
2295 SetGLError( 2303 SetGLError(
2296 GL_INVALID_VALUE, "glUniformMatrix4fv: transpose GL_INVALID_VALUE"); 2304 GL_INVALID_VALUE, "glUniformMatrix4fv", "transpose GL_INVALID_VALUE");
2297 return error::kNoError; 2305 return error::kNoError;
2298 } 2306 }
2299 if (value == NULL) { 2307 if (value == NULL) {
2300 return error::kOutOfBounds; 2308 return error::kOutOfBounds;
2301 } 2309 }
2302 DoUniformMatrix4fv(location, count, transpose, value); 2310 DoUniformMatrix4fv(location, count, transpose, value);
2303 return error::kNoError; 2311 return error::kNoError;
2304 } 2312 }
2305 2313
2306 error::Error GLES2DecoderImpl::HandleUseProgram( 2314 error::Error GLES2DecoderImpl::HandleUseProgram(
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
2495 return error::kNoError; 2503 return error::kNoError;
2496 } 2504 }
2497 2505
2498 error::Error GLES2DecoderImpl::HandleViewport( 2506 error::Error GLES2DecoderImpl::HandleViewport(
2499 uint32 immediate_data_size, const gles2::Viewport& c) { 2507 uint32 immediate_data_size, const gles2::Viewport& c) {
2500 GLint x = static_cast<GLint>(c.x); 2508 GLint x = static_cast<GLint>(c.x);
2501 GLint y = static_cast<GLint>(c.y); 2509 GLint y = static_cast<GLint>(c.y);
2502 GLsizei width = static_cast<GLsizei>(c.width); 2510 GLsizei width = static_cast<GLsizei>(c.width);
2503 GLsizei height = static_cast<GLsizei>(c.height); 2511 GLsizei height = static_cast<GLsizei>(c.height);
2504 if (width < 0) { 2512 if (width < 0) {
2505 SetGLError(GL_INVALID_VALUE, "glViewport: width < 0"); 2513 SetGLError(GL_INVALID_VALUE, "glViewport", "width < 0");
2506 return error::kNoError; 2514 return error::kNoError;
2507 } 2515 }
2508 if (height < 0) { 2516 if (height < 0) {
2509 SetGLError(GL_INVALID_VALUE, "glViewport: height < 0"); 2517 SetGLError(GL_INVALID_VALUE, "glViewport", "height < 0");
2510 return error::kNoError; 2518 return error::kNoError;
2511 } 2519 }
2512 DoViewport(x, y, width, height); 2520 DoViewport(x, y, width, height);
2513 return error::kNoError; 2521 return error::kNoError;
2514 } 2522 }
2515 2523
2516 error::Error GLES2DecoderImpl::HandleBlitFramebufferEXT( 2524 error::Error GLES2DecoderImpl::HandleBlitFramebufferEXT(
2517 uint32 immediate_data_size, const gles2::BlitFramebufferEXT& c) { 2525 uint32 immediate_data_size, const gles2::BlitFramebufferEXT& c) {
2518 GLint srcX0 = static_cast<GLint>(c.srcX0); 2526 GLint srcX0 = static_cast<GLint>(c.srcX0);
2519 GLint srcY0 = static_cast<GLint>(c.srcY0); 2527 GLint srcY0 = static_cast<GLint>(c.srcY0);
2520 GLint srcX1 = static_cast<GLint>(c.srcX1); 2528 GLint srcX1 = static_cast<GLint>(c.srcX1);
2521 GLint srcY1 = static_cast<GLint>(c.srcY1); 2529 GLint srcY1 = static_cast<GLint>(c.srcY1);
2522 GLint dstX0 = static_cast<GLint>(c.dstX0); 2530 GLint dstX0 = static_cast<GLint>(c.dstX0);
2523 GLint dstY0 = static_cast<GLint>(c.dstY0); 2531 GLint dstY0 = static_cast<GLint>(c.dstY0);
2524 GLint dstX1 = static_cast<GLint>(c.dstX1); 2532 GLint dstX1 = static_cast<GLint>(c.dstX1);
2525 GLint dstY1 = static_cast<GLint>(c.dstY1); 2533 GLint dstY1 = static_cast<GLint>(c.dstY1);
2526 GLbitfield mask = static_cast<GLbitfield>(c.mask); 2534 GLbitfield mask = static_cast<GLbitfield>(c.mask);
2527 GLenum filter = static_cast<GLenum>(c.filter); 2535 GLenum filter = static_cast<GLenum>(c.filter);
2528 if (!validators_->blit_filter.IsValid(filter)) { 2536 if (!validators_->blit_filter.IsValid(filter)) {
2529 SetGLError( 2537 SetGLError(
2530 GL_INVALID_ENUM, "glBlitFramebufferEXT: filter GL_INVALID_ENUM"); 2538 GL_INVALID_ENUM, "glBlitFramebufferEXT", "filter GL_INVALID_ENUM");
2531 return error::kNoError; 2539 return error::kNoError;
2532 } 2540 }
2533 DoBlitFramebufferEXT( 2541 DoBlitFramebufferEXT(
2534 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); 2542 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
2535 return error::kNoError; 2543 return error::kNoError;
2536 } 2544 }
2537 2545
2538 error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleEXT( 2546 error::Error GLES2DecoderImpl::HandleRenderbufferStorageMultisampleEXT(
2539 uint32 immediate_data_size, 2547 uint32 immediate_data_size,
2540 const gles2::RenderbufferStorageMultisampleEXT& c) { 2548 const gles2::RenderbufferStorageMultisampleEXT& c) {
2541 GLenum target = static_cast<GLenum>(c.target); 2549 GLenum target = static_cast<GLenum>(c.target);
2542 GLsizei samples = static_cast<GLsizei>(c.samples); 2550 GLsizei samples = static_cast<GLsizei>(c.samples);
2543 GLenum internalformat = static_cast<GLenum>(c.internalformat); 2551 GLenum internalformat = static_cast<GLenum>(c.internalformat);
2544 GLsizei width = static_cast<GLsizei>(c.width); 2552 GLsizei width = static_cast<GLsizei>(c.width);
2545 GLsizei height = static_cast<GLsizei>(c.height); 2553 GLsizei height = static_cast<GLsizei>(c.height);
2546 if (!validators_->render_buffer_target.IsValid(target)) { 2554 if (!validators_->render_buffer_target.IsValid(target)) {
2547 SetGLError( 2555 SetGLError(
2548 GL_INVALID_ENUM, 2556 GL_INVALID_ENUM, "glRenderbufferStorageMultisampleEXT", "target GL_INVAL ID_ENUM"); // NOLINT
2549 "glRenderbufferStorageMultisampleEXT: target GL_INVALID_ENUM");
2550 return error::kNoError; 2557 return error::kNoError;
2551 } 2558 }
2552 if (samples < 0) { 2559 if (samples < 0) {
2553 SetGLError( 2560 SetGLError(
2554 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT: samples < 0"); 2561 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "samples < 0");
2555 return error::kNoError; 2562 return error::kNoError;
2556 } 2563 }
2557 if (!validators_->render_buffer_format.IsValid(internalformat)) { 2564 if (!validators_->render_buffer_format.IsValid(internalformat)) {
2558 SetGLError( 2565 SetGLError(
2559 GL_INVALID_ENUM, 2566 GL_INVALID_ENUM, "glRenderbufferStorageMultisampleEXT", "internalformat GL_INVALID_ENUM"); // NOLINT
2560 "glRenderbufferStorageMultisampleEXT: internalformat GL_INVALID_ENUM");
2561 return error::kNoError; 2567 return error::kNoError;
2562 } 2568 }
2563 if (width < 0) { 2569 if (width < 0) {
2564 SetGLError( 2570 SetGLError(
2565 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT: width < 0"); 2571 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "width < 0");
2566 return error::kNoError; 2572 return error::kNoError;
2567 } 2573 }
2568 if (height < 0) { 2574 if (height < 0) {
2569 SetGLError( 2575 SetGLError(
2570 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT: height < 0"); 2576 GL_INVALID_VALUE, "glRenderbufferStorageMultisampleEXT", "height < 0");
2571 return error::kNoError; 2577 return error::kNoError;
2572 } 2578 }
2573 DoRenderbufferStorageMultisample( 2579 DoRenderbufferStorageMultisample(
2574 target, samples, internalformat, width, height); 2580 target, samples, internalformat, width, height);
2575 return error::kNoError; 2581 return error::kNoError;
2576 } 2582 }
2577 2583
2578 error::Error GLES2DecoderImpl::HandleTexStorage2DEXT( 2584 error::Error GLES2DecoderImpl::HandleTexStorage2DEXT(
2579 uint32 immediate_data_size, const gles2::TexStorage2DEXT& c) { 2585 uint32 immediate_data_size, const gles2::TexStorage2DEXT& c) {
2580 GLenum target = static_cast<GLenum>(c.target); 2586 GLenum target = static_cast<GLenum>(c.target);
2581 GLsizei levels = static_cast<GLsizei>(c.levels); 2587 GLsizei levels = static_cast<GLsizei>(c.levels);
2582 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); 2588 GLenum internalFormat = static_cast<GLenum>(c.internalFormat);
2583 GLsizei width = static_cast<GLsizei>(c.width); 2589 GLsizei width = static_cast<GLsizei>(c.width);
2584 GLsizei height = static_cast<GLsizei>(c.height); 2590 GLsizei height = static_cast<GLsizei>(c.height);
2585 if (!validators_->texture_target.IsValid(target)) { 2591 if (!validators_->texture_target.IsValid(target)) {
2586 SetGLError(GL_INVALID_ENUM, "glTexStorage2DEXT: target GL_INVALID_ENUM"); 2592 SetGLError(GL_INVALID_ENUM, "glTexStorage2DEXT", "target GL_INVALID_ENUM");
2587 return error::kNoError; 2593 return error::kNoError;
2588 } 2594 }
2589 if (levels < 0) { 2595 if (levels < 0) {
2590 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT: levels < 0"); 2596 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "levels < 0");
2591 return error::kNoError; 2597 return error::kNoError;
2592 } 2598 }
2593 if (!validators_->texture_internal_format_storage.IsValid(internalFormat)) { 2599 if (!validators_->texture_internal_format_storage.IsValid(internalFormat)) {
2594 SetGLError( 2600 SetGLError(
2595 GL_INVALID_ENUM, "glTexStorage2DEXT: internalFormat GL_INVALID_ENUM"); 2601 GL_INVALID_ENUM, "glTexStorage2DEXT", "internalFormat GL_INVALID_ENUM");
2596 return error::kNoError; 2602 return error::kNoError;
2597 } 2603 }
2598 if (width < 0) { 2604 if (width < 0) {
2599 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT: width < 0"); 2605 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "width < 0");
2600 return error::kNoError; 2606 return error::kNoError;
2601 } 2607 }
2602 if (height < 0) { 2608 if (height < 0) {
2603 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT: height < 0"); 2609 SetGLError(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0");
2604 return error::kNoError; 2610 return error::kNoError;
2605 } 2611 }
2606 DoTexStorage2DEXT(target, levels, internalFormat, width, height); 2612 DoTexStorage2DEXT(target, levels, internalFormat, width, height);
2607 return error::kNoError; 2613 return error::kNoError;
2608 } 2614 }
2609 2615
2610 error::Error GLES2DecoderImpl::HandleGenQueriesEXT( 2616 error::Error GLES2DecoderImpl::HandleGenQueriesEXT(
2611 uint32 immediate_data_size, const gles2::GenQueriesEXT& c) { 2617 uint32 immediate_data_size, const gles2::GenQueriesEXT& c) {
2612 GLsizei n = static_cast<GLsizei>(c.n); 2618 GLsizei n = static_cast<GLsizei>(c.n);
2613 uint32 data_size; 2619 uint32 data_size;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2681 GLsizei count = static_cast<GLsizei>(c.count); 2687 GLsizei count = static_cast<GLsizei>(c.count);
2682 GLenum type = static_cast<GLenum>(c.type); 2688 GLenum type = static_cast<GLenum>(c.type);
2683 GLuint offset = static_cast<GLuint>(c.offset); 2689 GLuint offset = static_cast<GLuint>(c.offset);
2684 typedef GetMaxValueInBufferCHROMIUM::Result Result; 2690 typedef GetMaxValueInBufferCHROMIUM::Result Result;
2685 Result* result_dst = GetSharedMemoryAs<Result*>( 2691 Result* result_dst = GetSharedMemoryAs<Result*>(
2686 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 2692 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2687 if (!result_dst) { 2693 if (!result_dst) {
2688 return error::kOutOfBounds; 2694 return error::kOutOfBounds;
2689 } 2695 }
2690 if (count < 0) { 2696 if (count < 0) {
2691 SetGLError(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM: count < 0"); 2697 SetGLError(GL_INVALID_VALUE, "glGetMaxValueInBufferCHROMIUM", "count < 0");
2692 return error::kNoError; 2698 return error::kNoError;
2693 } 2699 }
2694 if (!validators_->get_max_index_type.IsValid(type)) { 2700 if (!validators_->get_max_index_type.IsValid(type)) {
2695 SetGLError( 2701 SetGLError(
2696 GL_INVALID_ENUM, 2702 GL_INVALID_ENUM, "glGetMaxValueInBufferCHROMIUM", "type GL_INVALID_ENUM" ); // NOLINT
2697 "glGetMaxValueInBufferCHROMIUM: type GL_INVALID_ENUM");
2698 return error::kNoError; 2703 return error::kNoError;
2699 } 2704 }
2700 *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset); 2705 *result_dst = DoGetMaxValueInBufferCHROMIUM(buffer_id, count, type, offset);
2701 return error::kNoError; 2706 return error::kNoError;
2702 } 2707 }
2703 2708
2704 error::Error GLES2DecoderImpl::HandleTexImageIOSurface2DCHROMIUM( 2709 error::Error GLES2DecoderImpl::HandleTexImageIOSurface2DCHROMIUM(
2705 uint32 immediate_data_size, const gles2::TexImageIOSurface2DCHROMIUM& c) { 2710 uint32 immediate_data_size, const gles2::TexImageIOSurface2DCHROMIUM& c) {
2706 GLenum target = static_cast<GLenum>(c.target); 2711 GLenum target = static_cast<GLenum>(c.target);
2707 GLsizei width = static_cast<GLsizei>(c.width); 2712 GLsizei width = static_cast<GLsizei>(c.width);
2708 GLsizei height = static_cast<GLsizei>(c.height); 2713 GLsizei height = static_cast<GLsizei>(c.height);
2709 GLuint ioSurfaceId = static_cast<GLuint>(c.ioSurfaceId); 2714 GLuint ioSurfaceId = static_cast<GLuint>(c.ioSurfaceId);
2710 GLuint plane = static_cast<GLuint>(c.plane); 2715 GLuint plane = static_cast<GLuint>(c.plane);
2711 if (!validators_->texture_bind_target.IsValid(target)) { 2716 if (!validators_->texture_bind_target.IsValid(target)) {
2712 SetGLError( 2717 SetGLError(
2713 GL_INVALID_ENUM, 2718 GL_INVALID_ENUM, "glTexImageIOSurface2DCHROMIUM", "target GL_INVALID_ENU M"); // NOLINT
2714 "glTexImageIOSurface2DCHROMIUM: target GL_INVALID_ENUM");
2715 return error::kNoError; 2719 return error::kNoError;
2716 } 2720 }
2717 if (width < 0) { 2721 if (width < 0) {
2718 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM: width < 0"); 2722 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "width < 0");
2719 return error::kNoError; 2723 return error::kNoError;
2720 } 2724 }
2721 if (height < 0) { 2725 if (height < 0) {
2722 SetGLError(GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM: height < 0"); 2726 SetGLError(
2727 GL_INVALID_VALUE, "glTexImageIOSurface2DCHROMIUM", "height < 0");
2723 return error::kNoError; 2728 return error::kNoError;
2724 } 2729 }
2725 DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane); 2730 DoTexImageIOSurface2DCHROMIUM(target, width, height, ioSurfaceId, plane);
2726 return error::kNoError; 2731 return error::kNoError;
2727 } 2732 }
2728 2733
2729 error::Error GLES2DecoderImpl::HandleCopyTextureCHROMIUM( 2734 error::Error GLES2DecoderImpl::HandleCopyTextureCHROMIUM(
2730 uint32 immediate_data_size, const gles2::CopyTextureCHROMIUM& c) { 2735 uint32 immediate_data_size, const gles2::CopyTextureCHROMIUM& c) {
2731 GLenum target = static_cast<GLenum>(c.target); 2736 GLenum target = static_cast<GLenum>(c.target);
2732 GLenum source_id = static_cast<GLenum>(c.source_id); 2737 GLenum source_id = static_cast<GLenum>(c.source_id);
2733 GLenum dest_id = static_cast<GLenum>(c.dest_id); 2738 GLenum dest_id = static_cast<GLenum>(c.dest_id);
2734 GLint level = static_cast<GLint>(c.level); 2739 GLint level = static_cast<GLint>(c.level);
2735 GLint internalformat = static_cast<GLint>(c.internalformat); 2740 GLint internalformat = static_cast<GLint>(c.internalformat);
2736 if (!validators_->texture_internal_format.IsValid(internalformat)) { 2741 if (!validators_->texture_internal_format.IsValid(internalformat)) {
2737 SetGLError( 2742 SetGLError(
2738 GL_INVALID_VALUE, 2743 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "internalformat GL_INVALID_VA LUE"); // NOLINT
2739 "glCopyTextureCHROMIUM: internalformat GL_INVALID_VALUE");
2740 return error::kNoError; 2744 return error::kNoError;
2741 } 2745 }
2742 DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat); 2746 DoCopyTextureCHROMIUM(target, source_id, dest_id, level, internalformat);
2743 return error::kNoError; 2747 return error::kNoError;
2744 } 2748 }
2745 2749
2746 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUM( 2750 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUM(
2747 uint32 immediate_data_size, const gles2::ProduceTextureCHROMIUM& c) { 2751 uint32 immediate_data_size, const gles2::ProduceTextureCHROMIUM& c) {
2748 GLenum target = static_cast<GLenum>(c.target); 2752 GLenum target = static_cast<GLenum>(c.target);
2749 uint32 data_size; 2753 uint32 data_size;
2750 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2754 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
2751 return error::kOutOfBounds; 2755 return error::kOutOfBounds;
2752 } 2756 }
2753 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( 2757 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>(
2754 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); 2758 c.mailbox_shm_id, c.mailbox_shm_offset, data_size);
2755 if (!validators_->texture_target.IsValid(target)) { 2759 if (!validators_->texture_target.IsValid(target)) {
2756 SetGLError( 2760 SetGLError(
2757 GL_INVALID_ENUM, "glProduceTextureCHROMIUM: target GL_INVALID_ENUM"); 2761 GL_INVALID_ENUM, "glProduceTextureCHROMIUM", "target GL_INVALID_ENUM");
2758 return error::kNoError; 2762 return error::kNoError;
2759 } 2763 }
2760 if (mailbox == NULL) { 2764 if (mailbox == NULL) {
2761 return error::kOutOfBounds; 2765 return error::kOutOfBounds;
2762 } 2766 }
2763 DoProduceTextureCHROMIUM(target, mailbox); 2767 DoProduceTextureCHROMIUM(target, mailbox);
2764 return error::kNoError; 2768 return error::kNoError;
2765 } 2769 }
2766 2770
2767 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate( 2771 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate(
2768 uint32 immediate_data_size, 2772 uint32 immediate_data_size,
2769 const gles2::ProduceTextureCHROMIUMImmediate& c) { 2773 const gles2::ProduceTextureCHROMIUMImmediate& c) {
2770 GLenum target = static_cast<GLenum>(c.target); 2774 GLenum target = static_cast<GLenum>(c.target);
2771 uint32 data_size; 2775 uint32 data_size;
2772 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2776 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
2773 return error::kOutOfBounds; 2777 return error::kOutOfBounds;
2774 } 2778 }
2775 if (data_size > immediate_data_size) { 2779 if (data_size > immediate_data_size) {
2776 return error::kOutOfBounds; 2780 return error::kOutOfBounds;
2777 } 2781 }
2778 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( 2782 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>(
2779 c, data_size, immediate_data_size); 2783 c, data_size, immediate_data_size);
2780 if (!validators_->texture_target.IsValid(target)) { 2784 if (!validators_->texture_target.IsValid(target)) {
2781 SetGLError( 2785 SetGLError(
2782 GL_INVALID_ENUM, "glProduceTextureCHROMIUM: target GL_INVALID_ENUM"); 2786 GL_INVALID_ENUM, "glProduceTextureCHROMIUM", "target GL_INVALID_ENUM");
2783 return error::kNoError; 2787 return error::kNoError;
2784 } 2788 }
2785 if (mailbox == NULL) { 2789 if (mailbox == NULL) {
2786 return error::kOutOfBounds; 2790 return error::kOutOfBounds;
2787 } 2791 }
2788 DoProduceTextureCHROMIUM(target, mailbox); 2792 DoProduceTextureCHROMIUM(target, mailbox);
2789 return error::kNoError; 2793 return error::kNoError;
2790 } 2794 }
2791 2795
2792 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUM( 2796 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUM(
2793 uint32 immediate_data_size, const gles2::ConsumeTextureCHROMIUM& c) { 2797 uint32 immediate_data_size, const gles2::ConsumeTextureCHROMIUM& c) {
2794 GLenum target = static_cast<GLenum>(c.target); 2798 GLenum target = static_cast<GLenum>(c.target);
2795 uint32 data_size; 2799 uint32 data_size;
2796 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2800 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
2797 return error::kOutOfBounds; 2801 return error::kOutOfBounds;
2798 } 2802 }
2799 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>( 2803 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>(
2800 c.mailbox_shm_id, c.mailbox_shm_offset, data_size); 2804 c.mailbox_shm_id, c.mailbox_shm_offset, data_size);
2801 if (!validators_->texture_target.IsValid(target)) { 2805 if (!validators_->texture_target.IsValid(target)) {
2802 SetGLError( 2806 SetGLError(
2803 GL_INVALID_ENUM, "glConsumeTextureCHROMIUM: target GL_INVALID_ENUM"); 2807 GL_INVALID_ENUM, "glConsumeTextureCHROMIUM", "target GL_INVALID_ENUM");
2804 return error::kNoError; 2808 return error::kNoError;
2805 } 2809 }
2806 if (mailbox == NULL) { 2810 if (mailbox == NULL) {
2807 return error::kOutOfBounds; 2811 return error::kOutOfBounds;
2808 } 2812 }
2809 DoConsumeTextureCHROMIUM(target, mailbox); 2813 DoConsumeTextureCHROMIUM(target, mailbox);
2810 return error::kNoError; 2814 return error::kNoError;
2811 } 2815 }
2812 2816
2813 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( 2817 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate(
2814 uint32 immediate_data_size, 2818 uint32 immediate_data_size,
2815 const gles2::ConsumeTextureCHROMIUMImmediate& c) { 2819 const gles2::ConsumeTextureCHROMIUMImmediate& c) {
2816 GLenum target = static_cast<GLenum>(c.target); 2820 GLenum target = static_cast<GLenum>(c.target);
2817 uint32 data_size; 2821 uint32 data_size;
2818 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2822 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
2819 return error::kOutOfBounds; 2823 return error::kOutOfBounds;
2820 } 2824 }
2821 if (data_size > immediate_data_size) { 2825 if (data_size > immediate_data_size) {
2822 return error::kOutOfBounds; 2826 return error::kOutOfBounds;
2823 } 2827 }
2824 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>( 2828 const GLbyte* mailbox = GetImmediateDataAs<const GLbyte*>(
2825 c, data_size, immediate_data_size); 2829 c, data_size, immediate_data_size);
2826 if (!validators_->texture_target.IsValid(target)) { 2830 if (!validators_->texture_target.IsValid(target)) {
2827 SetGLError( 2831 SetGLError(
2828 GL_INVALID_ENUM, "glConsumeTextureCHROMIUM: target GL_INVALID_ENUM"); 2832 GL_INVALID_ENUM, "glConsumeTextureCHROMIUM", "target GL_INVALID_ENUM");
2829 return error::kNoError; 2833 return error::kNoError;
2830 } 2834 }
2831 if (mailbox == NULL) { 2835 if (mailbox == NULL) {
2832 return error::kOutOfBounds; 2836 return error::kOutOfBounds;
2833 } 2837 }
2834 DoConsumeTextureCHROMIUM(target, mailbox); 2838 DoConsumeTextureCHROMIUM(target, mailbox);
2835 return error::kNoError; 2839 return error::kNoError;
2836 } 2840 }
2837 2841
2838 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 2842 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
2839 2843
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698