OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |