OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // It's formatted by clang-format using chromium coding style: | 7 // It's formatted by clang-format using chromium coding style: |
8 // clang-format -i -style=chromium filename | 8 // clang-format -i -style=chromium filename |
9 // DO NOT EDIT! | 9 // DO NOT EDIT! |
10 | 10 |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 return error::kNoError; | 409 return error::kNoError; |
410 } | 410 } |
411 if (data == NULL) { | 411 if (data == NULL) { |
412 return error::kOutOfBounds; | 412 return error::kOutOfBounds; |
413 } | 413 } |
414 DoCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, | 414 DoCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, |
415 format, imageSize, data); | 415 format, imageSize, data); |
416 return error::kNoError; | 416 return error::kNoError; |
417 } | 417 } |
418 | 418 |
| 419 error::Error GLES2DecoderImpl::HandleCopyBufferSubData( |
| 420 uint32_t immediate_data_size, |
| 421 const void* cmd_data) { |
| 422 if (!unsafe_es3_apis_enabled()) |
| 423 return error::kUnknownCommand; |
| 424 const gles2::cmds::CopyBufferSubData& c = |
| 425 *static_cast<const gles2::cmds::CopyBufferSubData*>(cmd_data); |
| 426 (void)c; |
| 427 GLenum readtarget = static_cast<GLenum>(c.readtarget); |
| 428 GLenum writetarget = static_cast<GLenum>(c.writetarget); |
| 429 GLintptr readoffset = static_cast<GLintptr>(c.readoffset); |
| 430 GLintptr writeoffset = static_cast<GLintptr>(c.writeoffset); |
| 431 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); |
| 432 if (size < 0) { |
| 433 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopyBufferSubData", "size < 0"); |
| 434 return error::kNoError; |
| 435 } |
| 436 glCopyBufferSubData(readtarget, writetarget, readoffset, writeoffset, size); |
| 437 return error::kNoError; |
| 438 } |
| 439 |
419 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( | 440 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( |
420 uint32_t immediate_data_size, | 441 uint32_t immediate_data_size, |
421 const void* cmd_data) { | 442 const void* cmd_data) { |
422 const gles2::cmds::CopyTexImage2D& c = | 443 const gles2::cmds::CopyTexImage2D& c = |
423 *static_cast<const gles2::cmds::CopyTexImage2D*>(cmd_data); | 444 *static_cast<const gles2::cmds::CopyTexImage2D*>(cmd_data); |
424 (void)c; | 445 (void)c; |
425 error::Error error; | 446 error::Error error; |
426 error = WillAccessBoundFramebufferForRead(); | 447 error = WillAccessBoundFramebufferForRead(); |
427 if (error != error::kNoError) | 448 if (error != error::kNoError) |
428 return error; | 449 return error; |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 } | 812 } |
792 if (!validators_->texture_target.IsValid(textarget)) { | 813 if (!validators_->texture_target.IsValid(textarget)) { |
793 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", textarget, | 814 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTexture2D", textarget, |
794 "textarget"); | 815 "textarget"); |
795 return error::kNoError; | 816 return error::kNoError; |
796 } | 817 } |
797 DoFramebufferTexture2D(target, attachment, textarget, texture, level); | 818 DoFramebufferTexture2D(target, attachment, textarget, texture, level); |
798 return error::kNoError; | 819 return error::kNoError; |
799 } | 820 } |
800 | 821 |
| 822 error::Error GLES2DecoderImpl::HandleFramebufferTextureLayer( |
| 823 uint32_t immediate_data_size, |
| 824 const void* cmd_data) { |
| 825 if (!unsafe_es3_apis_enabled()) |
| 826 return error::kUnknownCommand; |
| 827 const gles2::cmds::FramebufferTextureLayer& c = |
| 828 *static_cast<const gles2::cmds::FramebufferTextureLayer*>(cmd_data); |
| 829 (void)c; |
| 830 GLenum target = static_cast<GLenum>(c.target); |
| 831 GLenum attachment = static_cast<GLenum>(c.attachment); |
| 832 GLuint texture = c.texture; |
| 833 GLint level = static_cast<GLint>(c.level); |
| 834 GLint layer = static_cast<GLint>(c.layer); |
| 835 DoFramebufferTextureLayer(target, attachment, texture, level, layer); |
| 836 return error::kNoError; |
| 837 } |
| 838 |
801 error::Error GLES2DecoderImpl::HandleFrontFace(uint32_t immediate_data_size, | 839 error::Error GLES2DecoderImpl::HandleFrontFace(uint32_t immediate_data_size, |
802 const void* cmd_data) { | 840 const void* cmd_data) { |
803 const gles2::cmds::FrontFace& c = | 841 const gles2::cmds::FrontFace& c = |
804 *static_cast<const gles2::cmds::FrontFace*>(cmd_data); | 842 *static_cast<const gles2::cmds::FrontFace*>(cmd_data); |
805 (void)c; | 843 (void)c; |
806 GLenum mode = static_cast<GLenum>(c.mode); | 844 GLenum mode = static_cast<GLenum>(c.mode); |
807 if (!validators_->face_mode.IsValid(mode)) { | 845 if (!validators_->face_mode.IsValid(mode)) { |
808 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFrontFace", mode, "mode"); | 846 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFrontFace", mode, "mode"); |
809 return error::kNoError; | 847 return error::kNoError; |
810 } | 848 } |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1110 DoGetIntegerv(pname, params); | 1148 DoGetIntegerv(pname, params); |
1111 GLenum error = glGetError(); | 1149 GLenum error = glGetError(); |
1112 if (error == GL_NO_ERROR) { | 1150 if (error == GL_NO_ERROR) { |
1113 result->SetNumResults(num_values); | 1151 result->SetNumResults(num_values); |
1114 } else { | 1152 } else { |
1115 LOCAL_SET_GL_ERROR(error, "GetIntegerv", ""); | 1153 LOCAL_SET_GL_ERROR(error, "GetIntegerv", ""); |
1116 } | 1154 } |
1117 return error::kNoError; | 1155 return error::kNoError; |
1118 } | 1156 } |
1119 | 1157 |
| 1158 error::Error GLES2DecoderImpl::HandleGetInternalformativ( |
| 1159 uint32_t immediate_data_size, |
| 1160 const void* cmd_data) { |
| 1161 if (!unsafe_es3_apis_enabled()) |
| 1162 return error::kUnknownCommand; |
| 1163 const gles2::cmds::GetInternalformativ& c = |
| 1164 *static_cast<const gles2::cmds::GetInternalformativ*>(cmd_data); |
| 1165 (void)c; |
| 1166 GLenum target = static_cast<GLenum>(c.target); |
| 1167 GLenum format = static_cast<GLenum>(c.format); |
| 1168 GLenum pname = static_cast<GLenum>(c.pname); |
| 1169 GLsizei bufSize = static_cast<GLsizei>(c.bufSize); |
| 1170 typedef cmds::GetInternalformativ::Result Result; |
| 1171 GLsizei num_values = 0; |
| 1172 GetNumValuesReturnedForGLGet(pname, &num_values); |
| 1173 Result* result = GetSharedMemoryAs<Result*>( |
| 1174 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); |
| 1175 GLint* params = result ? result->GetData() : NULL; |
| 1176 if (bufSize < 0) { |
| 1177 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glGetInternalformativ", |
| 1178 "bufSize < 0"); |
| 1179 return error::kNoError; |
| 1180 } |
| 1181 if (params == NULL) { |
| 1182 return error::kOutOfBounds; |
| 1183 } |
| 1184 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInternalformativ"); |
| 1185 // Check that the client initialized the result. |
| 1186 if (result->size != 0) { |
| 1187 return error::kInvalidArguments; |
| 1188 } |
| 1189 glGetInternalformativ(target, format, pname, bufSize, params); |
| 1190 GLenum error = glGetError(); |
| 1191 if (error == GL_NO_ERROR) { |
| 1192 result->SetNumResults(num_values); |
| 1193 } else { |
| 1194 LOCAL_SET_GL_ERROR(error, "GetInternalformativ", ""); |
| 1195 } |
| 1196 return error::kNoError; |
| 1197 } |
| 1198 |
1120 error::Error GLES2DecoderImpl::HandleGetProgramiv(uint32_t immediate_data_size, | 1199 error::Error GLES2DecoderImpl::HandleGetProgramiv(uint32_t immediate_data_size, |
1121 const void* cmd_data) { | 1200 const void* cmd_data) { |
1122 const gles2::cmds::GetProgramiv& c = | 1201 const gles2::cmds::GetProgramiv& c = |
1123 *static_cast<const gles2::cmds::GetProgramiv*>(cmd_data); | 1202 *static_cast<const gles2::cmds::GetProgramiv*>(cmd_data); |
1124 (void)c; | 1203 (void)c; |
1125 GLuint program = c.program; | 1204 GLuint program = c.program; |
1126 GLenum pname = static_cast<GLenum>(c.pname); | 1205 GLenum pname = static_cast<GLenum>(c.pname); |
1127 typedef cmds::GetProgramiv::Result Result; | 1206 typedef cmds::GetProgramiv::Result Result; |
1128 GLsizei num_values = 0; | 1207 GLsizei num_values = 0; |
1129 GetNumValuesReturnedForGLGet(pname, &num_values); | 1208 GetNumValuesReturnedForGLGet(pname, &num_values); |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1959 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteriv", pname, "pname"); | 2038 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteriv", pname, "pname"); |
1960 return error::kNoError; | 2039 return error::kNoError; |
1961 } | 2040 } |
1962 if (params == NULL) { | 2041 if (params == NULL) { |
1963 return error::kOutOfBounds; | 2042 return error::kOutOfBounds; |
1964 } | 2043 } |
1965 DoTexParameteriv(target, pname, params); | 2044 DoTexParameteriv(target, pname, params); |
1966 return error::kNoError; | 2045 return error::kNoError; |
1967 } | 2046 } |
1968 | 2047 |
| 2048 error::Error GLES2DecoderImpl::HandleTexStorage3D(uint32_t immediate_data_size, |
| 2049 const void* cmd_data) { |
| 2050 if (!unsafe_es3_apis_enabled()) |
| 2051 return error::kUnknownCommand; |
| 2052 const gles2::cmds::TexStorage3D& c = |
| 2053 *static_cast<const gles2::cmds::TexStorage3D*>(cmd_data); |
| 2054 (void)c; |
| 2055 GLenum target = static_cast<GLenum>(c.target); |
| 2056 GLsizei levels = static_cast<GLsizei>(c.levels); |
| 2057 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); |
| 2058 GLsizei width = static_cast<GLsizei>(c.width); |
| 2059 GLsizei height = static_cast<GLsizei>(c.height); |
| 2060 GLsizei depth = static_cast<GLsizei>(c.depth); |
| 2061 if (levels < 0) { |
| 2062 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage3D", "levels < 0"); |
| 2063 return error::kNoError; |
| 2064 } |
| 2065 if (width < 0) { |
| 2066 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage3D", "width < 0"); |
| 2067 return error::kNoError; |
| 2068 } |
| 2069 if (height < 0) { |
| 2070 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage3D", "height < 0"); |
| 2071 return error::kNoError; |
| 2072 } |
| 2073 if (depth < 0) { |
| 2074 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage3D", "depth < 0"); |
| 2075 return error::kNoError; |
| 2076 } |
| 2077 glTexStorage3D(target, levels, internalFormat, width, height, depth); |
| 2078 return error::kNoError; |
| 2079 } |
| 2080 |
1969 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, | 2081 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, |
1970 const void* cmd_data) { | 2082 const void* cmd_data) { |
1971 const gles2::cmds::Uniform1f& c = | 2083 const gles2::cmds::Uniform1f& c = |
1972 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); | 2084 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); |
1973 (void)c; | 2085 (void)c; |
1974 GLint location = static_cast<GLint>(c.location); | 2086 GLint location = static_cast<GLint>(c.location); |
1975 GLfloat x = static_cast<GLfloat>(c.x); | 2087 GLfloat x = static_cast<GLfloat>(c.x); |
1976 GLfloat temp[1] = { | 2088 GLfloat temp[1] = { |
1977 x, | 2089 x, |
1978 }; | 2090 }; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2032 } | 2144 } |
2033 const GLint* v = | 2145 const GLint* v = |
2034 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); | 2146 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); |
2035 if (v == NULL) { | 2147 if (v == NULL) { |
2036 return error::kOutOfBounds; | 2148 return error::kOutOfBounds; |
2037 } | 2149 } |
2038 DoUniform1iv(location, count, v); | 2150 DoUniform1iv(location, count, v); |
2039 return error::kNoError; | 2151 return error::kNoError; |
2040 } | 2152 } |
2041 | 2153 |
| 2154 error::Error GLES2DecoderImpl::HandleUniform1ui(uint32_t immediate_data_size, |
| 2155 const void* cmd_data) { |
| 2156 if (!unsafe_es3_apis_enabled()) |
| 2157 return error::kUnknownCommand; |
| 2158 const gles2::cmds::Uniform1ui& c = |
| 2159 *static_cast<const gles2::cmds::Uniform1ui*>(cmd_data); |
| 2160 (void)c; |
| 2161 GLint location = static_cast<GLint>(c.location); |
| 2162 GLuint x = static_cast<GLuint>(c.x); |
| 2163 GLuint temp[1] = { |
| 2164 x, |
| 2165 }; |
| 2166 glUniform1uiv(location, 1, &temp[0]); |
| 2167 return error::kNoError; |
| 2168 } |
| 2169 |
| 2170 error::Error GLES2DecoderImpl::HandleUniform1uivImmediate( |
| 2171 uint32_t immediate_data_size, |
| 2172 const void* cmd_data) { |
| 2173 if (!unsafe_es3_apis_enabled()) |
| 2174 return error::kUnknownCommand; |
| 2175 const gles2::cmds::Uniform1uivImmediate& c = |
| 2176 *static_cast<const gles2::cmds::Uniform1uivImmediate*>(cmd_data); |
| 2177 (void)c; |
| 2178 GLint location = static_cast<GLint>(c.location); |
| 2179 GLsizei count = static_cast<GLsizei>(c.count); |
| 2180 uint32_t data_size; |
| 2181 if (!ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) { |
| 2182 return error::kOutOfBounds; |
| 2183 } |
| 2184 if (data_size > immediate_data_size) { |
| 2185 return error::kOutOfBounds; |
| 2186 } |
| 2187 const GLuint* v = |
| 2188 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
| 2189 if (v == NULL) { |
| 2190 return error::kOutOfBounds; |
| 2191 } |
| 2192 glUniform1uiv(location, count, v); |
| 2193 return error::kNoError; |
| 2194 } |
| 2195 |
2042 error::Error GLES2DecoderImpl::HandleUniform2f(uint32_t immediate_data_size, | 2196 error::Error GLES2DecoderImpl::HandleUniform2f(uint32_t immediate_data_size, |
2043 const void* cmd_data) { | 2197 const void* cmd_data) { |
2044 const gles2::cmds::Uniform2f& c = | 2198 const gles2::cmds::Uniform2f& c = |
2045 *static_cast<const gles2::cmds::Uniform2f*>(cmd_data); | 2199 *static_cast<const gles2::cmds::Uniform2f*>(cmd_data); |
2046 (void)c; | 2200 (void)c; |
2047 GLint location = static_cast<GLint>(c.location); | 2201 GLint location = static_cast<GLint>(c.location); |
2048 GLfloat x = static_cast<GLfloat>(c.x); | 2202 GLfloat x = static_cast<GLfloat>(c.x); |
2049 GLfloat y = static_cast<GLfloat>(c.y); | 2203 GLfloat y = static_cast<GLfloat>(c.y); |
2050 GLfloat temp[2] = { | 2204 GLfloat temp[2] = { |
2051 x, y, | 2205 x, y, |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2110 } | 2264 } |
2111 const GLint* v = | 2265 const GLint* v = |
2112 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); | 2266 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); |
2113 if (v == NULL) { | 2267 if (v == NULL) { |
2114 return error::kOutOfBounds; | 2268 return error::kOutOfBounds; |
2115 } | 2269 } |
2116 DoUniform2iv(location, count, v); | 2270 DoUniform2iv(location, count, v); |
2117 return error::kNoError; | 2271 return error::kNoError; |
2118 } | 2272 } |
2119 | 2273 |
| 2274 error::Error GLES2DecoderImpl::HandleUniform2ui(uint32_t immediate_data_size, |
| 2275 const void* cmd_data) { |
| 2276 if (!unsafe_es3_apis_enabled()) |
| 2277 return error::kUnknownCommand; |
| 2278 const gles2::cmds::Uniform2ui& c = |
| 2279 *static_cast<const gles2::cmds::Uniform2ui*>(cmd_data); |
| 2280 (void)c; |
| 2281 GLint location = static_cast<GLint>(c.location); |
| 2282 GLuint x = static_cast<GLuint>(c.x); |
| 2283 GLuint y = static_cast<GLuint>(c.y); |
| 2284 GLuint temp[2] = { |
| 2285 x, y, |
| 2286 }; |
| 2287 glUniform2uiv(location, 1, &temp[0]); |
| 2288 return error::kNoError; |
| 2289 } |
| 2290 |
| 2291 error::Error GLES2DecoderImpl::HandleUniform2uivImmediate( |
| 2292 uint32_t immediate_data_size, |
| 2293 const void* cmd_data) { |
| 2294 if (!unsafe_es3_apis_enabled()) |
| 2295 return error::kUnknownCommand; |
| 2296 const gles2::cmds::Uniform2uivImmediate& c = |
| 2297 *static_cast<const gles2::cmds::Uniform2uivImmediate*>(cmd_data); |
| 2298 (void)c; |
| 2299 GLint location = static_cast<GLint>(c.location); |
| 2300 GLsizei count = static_cast<GLsizei>(c.count); |
| 2301 uint32_t data_size; |
| 2302 if (!ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) { |
| 2303 return error::kOutOfBounds; |
| 2304 } |
| 2305 if (data_size > immediate_data_size) { |
| 2306 return error::kOutOfBounds; |
| 2307 } |
| 2308 const GLuint* v = |
| 2309 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
| 2310 if (v == NULL) { |
| 2311 return error::kOutOfBounds; |
| 2312 } |
| 2313 glUniform2uiv(location, count, v); |
| 2314 return error::kNoError; |
| 2315 } |
| 2316 |
2120 error::Error GLES2DecoderImpl::HandleUniform3f(uint32_t immediate_data_size, | 2317 error::Error GLES2DecoderImpl::HandleUniform3f(uint32_t immediate_data_size, |
2121 const void* cmd_data) { | 2318 const void* cmd_data) { |
2122 const gles2::cmds::Uniform3f& c = | 2319 const gles2::cmds::Uniform3f& c = |
2123 *static_cast<const gles2::cmds::Uniform3f*>(cmd_data); | 2320 *static_cast<const gles2::cmds::Uniform3f*>(cmd_data); |
2124 (void)c; | 2321 (void)c; |
2125 GLint location = static_cast<GLint>(c.location); | 2322 GLint location = static_cast<GLint>(c.location); |
2126 GLfloat x = static_cast<GLfloat>(c.x); | 2323 GLfloat x = static_cast<GLfloat>(c.x); |
2127 GLfloat y = static_cast<GLfloat>(c.y); | 2324 GLfloat y = static_cast<GLfloat>(c.y); |
2128 GLfloat z = static_cast<GLfloat>(c.z); | 2325 GLfloat z = static_cast<GLfloat>(c.z); |
2129 GLfloat temp[3] = { | 2326 GLfloat temp[3] = { |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2190 } | 2387 } |
2191 const GLint* v = | 2388 const GLint* v = |
2192 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); | 2389 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); |
2193 if (v == NULL) { | 2390 if (v == NULL) { |
2194 return error::kOutOfBounds; | 2391 return error::kOutOfBounds; |
2195 } | 2392 } |
2196 DoUniform3iv(location, count, v); | 2393 DoUniform3iv(location, count, v); |
2197 return error::kNoError; | 2394 return error::kNoError; |
2198 } | 2395 } |
2199 | 2396 |
| 2397 error::Error GLES2DecoderImpl::HandleUniform3ui(uint32_t immediate_data_size, |
| 2398 const void* cmd_data) { |
| 2399 if (!unsafe_es3_apis_enabled()) |
| 2400 return error::kUnknownCommand; |
| 2401 const gles2::cmds::Uniform3ui& c = |
| 2402 *static_cast<const gles2::cmds::Uniform3ui*>(cmd_data); |
| 2403 (void)c; |
| 2404 GLint location = static_cast<GLint>(c.location); |
| 2405 GLuint x = static_cast<GLuint>(c.x); |
| 2406 GLuint y = static_cast<GLuint>(c.y); |
| 2407 GLuint z = static_cast<GLuint>(c.z); |
| 2408 GLuint temp[3] = { |
| 2409 x, y, z, |
| 2410 }; |
| 2411 glUniform3uiv(location, 1, &temp[0]); |
| 2412 return error::kNoError; |
| 2413 } |
| 2414 |
| 2415 error::Error GLES2DecoderImpl::HandleUniform3uivImmediate( |
| 2416 uint32_t immediate_data_size, |
| 2417 const void* cmd_data) { |
| 2418 if (!unsafe_es3_apis_enabled()) |
| 2419 return error::kUnknownCommand; |
| 2420 const gles2::cmds::Uniform3uivImmediate& c = |
| 2421 *static_cast<const gles2::cmds::Uniform3uivImmediate*>(cmd_data); |
| 2422 (void)c; |
| 2423 GLint location = static_cast<GLint>(c.location); |
| 2424 GLsizei count = static_cast<GLsizei>(c.count); |
| 2425 uint32_t data_size; |
| 2426 if (!ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) { |
| 2427 return error::kOutOfBounds; |
| 2428 } |
| 2429 if (data_size > immediate_data_size) { |
| 2430 return error::kOutOfBounds; |
| 2431 } |
| 2432 const GLuint* v = |
| 2433 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
| 2434 if (v == NULL) { |
| 2435 return error::kOutOfBounds; |
| 2436 } |
| 2437 glUniform3uiv(location, count, v); |
| 2438 return error::kNoError; |
| 2439 } |
| 2440 |
2200 error::Error GLES2DecoderImpl::HandleUniform4f(uint32_t immediate_data_size, | 2441 error::Error GLES2DecoderImpl::HandleUniform4f(uint32_t immediate_data_size, |
2201 const void* cmd_data) { | 2442 const void* cmd_data) { |
2202 const gles2::cmds::Uniform4f& c = | 2443 const gles2::cmds::Uniform4f& c = |
2203 *static_cast<const gles2::cmds::Uniform4f*>(cmd_data); | 2444 *static_cast<const gles2::cmds::Uniform4f*>(cmd_data); |
2204 (void)c; | 2445 (void)c; |
2205 GLint location = static_cast<GLint>(c.location); | 2446 GLint location = static_cast<GLint>(c.location); |
2206 GLfloat x = static_cast<GLfloat>(c.x); | 2447 GLfloat x = static_cast<GLfloat>(c.x); |
2207 GLfloat y = static_cast<GLfloat>(c.y); | 2448 GLfloat y = static_cast<GLfloat>(c.y); |
2208 GLfloat z = static_cast<GLfloat>(c.z); | 2449 GLfloat z = static_cast<GLfloat>(c.z); |
2209 GLfloat w = static_cast<GLfloat>(c.w); | 2450 GLfloat w = static_cast<GLfloat>(c.w); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2272 } | 2513 } |
2273 const GLint* v = | 2514 const GLint* v = |
2274 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); | 2515 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); |
2275 if (v == NULL) { | 2516 if (v == NULL) { |
2276 return error::kOutOfBounds; | 2517 return error::kOutOfBounds; |
2277 } | 2518 } |
2278 DoUniform4iv(location, count, v); | 2519 DoUniform4iv(location, count, v); |
2279 return error::kNoError; | 2520 return error::kNoError; |
2280 } | 2521 } |
2281 | 2522 |
| 2523 error::Error GLES2DecoderImpl::HandleUniform4ui(uint32_t immediate_data_size, |
| 2524 const void* cmd_data) { |
| 2525 if (!unsafe_es3_apis_enabled()) |
| 2526 return error::kUnknownCommand; |
| 2527 const gles2::cmds::Uniform4ui& c = |
| 2528 *static_cast<const gles2::cmds::Uniform4ui*>(cmd_data); |
| 2529 (void)c; |
| 2530 GLint location = static_cast<GLint>(c.location); |
| 2531 GLuint x = static_cast<GLuint>(c.x); |
| 2532 GLuint y = static_cast<GLuint>(c.y); |
| 2533 GLuint z = static_cast<GLuint>(c.z); |
| 2534 GLuint w = static_cast<GLuint>(c.w); |
| 2535 GLuint temp[4] = { |
| 2536 x, y, z, w, |
| 2537 }; |
| 2538 glUniform4uiv(location, 1, &temp[0]); |
| 2539 return error::kNoError; |
| 2540 } |
| 2541 |
| 2542 error::Error GLES2DecoderImpl::HandleUniform4uivImmediate( |
| 2543 uint32_t immediate_data_size, |
| 2544 const void* cmd_data) { |
| 2545 if (!unsafe_es3_apis_enabled()) |
| 2546 return error::kUnknownCommand; |
| 2547 const gles2::cmds::Uniform4uivImmediate& c = |
| 2548 *static_cast<const gles2::cmds::Uniform4uivImmediate*>(cmd_data); |
| 2549 (void)c; |
| 2550 GLint location = static_cast<GLint>(c.location); |
| 2551 GLsizei count = static_cast<GLsizei>(c.count); |
| 2552 uint32_t data_size; |
| 2553 if (!ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) { |
| 2554 return error::kOutOfBounds; |
| 2555 } |
| 2556 if (data_size > immediate_data_size) { |
| 2557 return error::kOutOfBounds; |
| 2558 } |
| 2559 const GLuint* v = |
| 2560 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
| 2561 if (v == NULL) { |
| 2562 return error::kOutOfBounds; |
| 2563 } |
| 2564 glUniform4uiv(location, count, v); |
| 2565 return error::kNoError; |
| 2566 } |
| 2567 |
2282 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( | 2568 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( |
2283 uint32_t immediate_data_size, | 2569 uint32_t immediate_data_size, |
2284 const void* cmd_data) { | 2570 const void* cmd_data) { |
2285 const gles2::cmds::UniformMatrix2fvImmediate& c = | 2571 const gles2::cmds::UniformMatrix2fvImmediate& c = |
2286 *static_cast<const gles2::cmds::UniformMatrix2fvImmediate*>(cmd_data); | 2572 *static_cast<const gles2::cmds::UniformMatrix2fvImmediate*>(cmd_data); |
2287 (void)c; | 2573 (void)c; |
2288 GLint location = static_cast<GLint>(c.location); | 2574 GLint location = static_cast<GLint>(c.location); |
2289 GLsizei count = static_cast<GLsizei>(c.count); | 2575 GLsizei count = static_cast<GLsizei>(c.count); |
2290 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2576 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
2291 uint32_t data_size; | 2577 uint32_t data_size; |
2292 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { | 2578 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { |
2293 return error::kOutOfBounds; | 2579 return error::kOutOfBounds; |
2294 } | 2580 } |
2295 if (data_size > immediate_data_size) { | 2581 if (data_size > immediate_data_size) { |
2296 return error::kOutOfBounds; | 2582 return error::kOutOfBounds; |
2297 } | 2583 } |
2298 const GLfloat* value = | 2584 const GLfloat* value = |
2299 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); | 2585 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
2300 if (value == NULL) { | 2586 if (value == NULL) { |
2301 return error::kOutOfBounds; | 2587 return error::kOutOfBounds; |
2302 } | 2588 } |
2303 DoUniformMatrix2fv(location, count, transpose, value); | 2589 DoUniformMatrix2fv(location, count, transpose, value); |
2304 return error::kNoError; | 2590 return error::kNoError; |
2305 } | 2591 } |
2306 | 2592 |
| 2593 error::Error GLES2DecoderImpl::HandleUniformMatrix2x3fvImmediate( |
| 2594 uint32_t immediate_data_size, |
| 2595 const void* cmd_data) { |
| 2596 if (!unsafe_es3_apis_enabled()) |
| 2597 return error::kUnknownCommand; |
| 2598 const gles2::cmds::UniformMatrix2x3fvImmediate& c = |
| 2599 *static_cast<const gles2::cmds::UniformMatrix2x3fvImmediate*>(cmd_data); |
| 2600 (void)c; |
| 2601 GLint location = static_cast<GLint>(c.location); |
| 2602 GLsizei count = static_cast<GLsizei>(c.count); |
| 2603 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2604 uint32_t data_size; |
| 2605 if (!ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { |
| 2606 return error::kOutOfBounds; |
| 2607 } |
| 2608 if (data_size > immediate_data_size) { |
| 2609 return error::kOutOfBounds; |
| 2610 } |
| 2611 const GLfloat* value = |
| 2612 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2613 if (value == NULL) { |
| 2614 return error::kOutOfBounds; |
| 2615 } |
| 2616 glUniformMatrix2x3fv(location, count, transpose, value); |
| 2617 return error::kNoError; |
| 2618 } |
| 2619 |
| 2620 error::Error GLES2DecoderImpl::HandleUniformMatrix2x4fvImmediate( |
| 2621 uint32_t immediate_data_size, |
| 2622 const void* cmd_data) { |
| 2623 if (!unsafe_es3_apis_enabled()) |
| 2624 return error::kUnknownCommand; |
| 2625 const gles2::cmds::UniformMatrix2x4fvImmediate& c = |
| 2626 *static_cast<const gles2::cmds::UniformMatrix2x4fvImmediate*>(cmd_data); |
| 2627 (void)c; |
| 2628 GLint location = static_cast<GLint>(c.location); |
| 2629 GLsizei count = static_cast<GLsizei>(c.count); |
| 2630 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2631 uint32_t data_size; |
| 2632 if (!ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { |
| 2633 return error::kOutOfBounds; |
| 2634 } |
| 2635 if (data_size > immediate_data_size) { |
| 2636 return error::kOutOfBounds; |
| 2637 } |
| 2638 const GLfloat* value = |
| 2639 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2640 if (value == NULL) { |
| 2641 return error::kOutOfBounds; |
| 2642 } |
| 2643 glUniformMatrix2x4fv(location, count, transpose, value); |
| 2644 return error::kNoError; |
| 2645 } |
| 2646 |
2307 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( | 2647 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( |
2308 uint32_t immediate_data_size, | 2648 uint32_t immediate_data_size, |
2309 const void* cmd_data) { | 2649 const void* cmd_data) { |
2310 const gles2::cmds::UniformMatrix3fvImmediate& c = | 2650 const gles2::cmds::UniformMatrix3fvImmediate& c = |
2311 *static_cast<const gles2::cmds::UniformMatrix3fvImmediate*>(cmd_data); | 2651 *static_cast<const gles2::cmds::UniformMatrix3fvImmediate*>(cmd_data); |
2312 (void)c; | 2652 (void)c; |
2313 GLint location = static_cast<GLint>(c.location); | 2653 GLint location = static_cast<GLint>(c.location); |
2314 GLsizei count = static_cast<GLsizei>(c.count); | 2654 GLsizei count = static_cast<GLsizei>(c.count); |
2315 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2655 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
2316 uint32_t data_size; | 2656 uint32_t data_size; |
2317 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { | 2657 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { |
2318 return error::kOutOfBounds; | 2658 return error::kOutOfBounds; |
2319 } | 2659 } |
2320 if (data_size > immediate_data_size) { | 2660 if (data_size > immediate_data_size) { |
2321 return error::kOutOfBounds; | 2661 return error::kOutOfBounds; |
2322 } | 2662 } |
2323 const GLfloat* value = | 2663 const GLfloat* value = |
2324 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); | 2664 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
2325 if (value == NULL) { | 2665 if (value == NULL) { |
2326 return error::kOutOfBounds; | 2666 return error::kOutOfBounds; |
2327 } | 2667 } |
2328 DoUniformMatrix3fv(location, count, transpose, value); | 2668 DoUniformMatrix3fv(location, count, transpose, value); |
2329 return error::kNoError; | 2669 return error::kNoError; |
2330 } | 2670 } |
2331 | 2671 |
| 2672 error::Error GLES2DecoderImpl::HandleUniformMatrix3x2fvImmediate( |
| 2673 uint32_t immediate_data_size, |
| 2674 const void* cmd_data) { |
| 2675 if (!unsafe_es3_apis_enabled()) |
| 2676 return error::kUnknownCommand; |
| 2677 const gles2::cmds::UniformMatrix3x2fvImmediate& c = |
| 2678 *static_cast<const gles2::cmds::UniformMatrix3x2fvImmediate*>(cmd_data); |
| 2679 (void)c; |
| 2680 GLint location = static_cast<GLint>(c.location); |
| 2681 GLsizei count = static_cast<GLsizei>(c.count); |
| 2682 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2683 uint32_t data_size; |
| 2684 if (!ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { |
| 2685 return error::kOutOfBounds; |
| 2686 } |
| 2687 if (data_size > immediate_data_size) { |
| 2688 return error::kOutOfBounds; |
| 2689 } |
| 2690 const GLfloat* value = |
| 2691 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2692 if (value == NULL) { |
| 2693 return error::kOutOfBounds; |
| 2694 } |
| 2695 glUniformMatrix3x2fv(location, count, transpose, value); |
| 2696 return error::kNoError; |
| 2697 } |
| 2698 |
| 2699 error::Error GLES2DecoderImpl::HandleUniformMatrix3x4fvImmediate( |
| 2700 uint32_t immediate_data_size, |
| 2701 const void* cmd_data) { |
| 2702 if (!unsafe_es3_apis_enabled()) |
| 2703 return error::kUnknownCommand; |
| 2704 const gles2::cmds::UniformMatrix3x4fvImmediate& c = |
| 2705 *static_cast<const gles2::cmds::UniformMatrix3x4fvImmediate*>(cmd_data); |
| 2706 (void)c; |
| 2707 GLint location = static_cast<GLint>(c.location); |
| 2708 GLsizei count = static_cast<GLsizei>(c.count); |
| 2709 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2710 uint32_t data_size; |
| 2711 if (!ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { |
| 2712 return error::kOutOfBounds; |
| 2713 } |
| 2714 if (data_size > immediate_data_size) { |
| 2715 return error::kOutOfBounds; |
| 2716 } |
| 2717 const GLfloat* value = |
| 2718 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2719 if (value == NULL) { |
| 2720 return error::kOutOfBounds; |
| 2721 } |
| 2722 glUniformMatrix3x4fv(location, count, transpose, value); |
| 2723 return error::kNoError; |
| 2724 } |
| 2725 |
2332 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( | 2726 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( |
2333 uint32_t immediate_data_size, | 2727 uint32_t immediate_data_size, |
2334 const void* cmd_data) { | 2728 const void* cmd_data) { |
2335 const gles2::cmds::UniformMatrix4fvImmediate& c = | 2729 const gles2::cmds::UniformMatrix4fvImmediate& c = |
2336 *static_cast<const gles2::cmds::UniformMatrix4fvImmediate*>(cmd_data); | 2730 *static_cast<const gles2::cmds::UniformMatrix4fvImmediate*>(cmd_data); |
2337 (void)c; | 2731 (void)c; |
2338 GLint location = static_cast<GLint>(c.location); | 2732 GLint location = static_cast<GLint>(c.location); |
2339 GLsizei count = static_cast<GLsizei>(c.count); | 2733 GLsizei count = static_cast<GLsizei>(c.count); |
2340 GLboolean transpose = static_cast<GLboolean>(c.transpose); | 2734 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
2341 uint32_t data_size; | 2735 uint32_t data_size; |
2342 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { | 2736 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { |
2343 return error::kOutOfBounds; | 2737 return error::kOutOfBounds; |
2344 } | 2738 } |
2345 if (data_size > immediate_data_size) { | 2739 if (data_size > immediate_data_size) { |
2346 return error::kOutOfBounds; | 2740 return error::kOutOfBounds; |
2347 } | 2741 } |
2348 const GLfloat* value = | 2742 const GLfloat* value = |
2349 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); | 2743 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
2350 if (value == NULL) { | 2744 if (value == NULL) { |
2351 return error::kOutOfBounds; | 2745 return error::kOutOfBounds; |
2352 } | 2746 } |
2353 DoUniformMatrix4fv(location, count, transpose, value); | 2747 DoUniformMatrix4fv(location, count, transpose, value); |
2354 return error::kNoError; | 2748 return error::kNoError; |
2355 } | 2749 } |
2356 | 2750 |
| 2751 error::Error GLES2DecoderImpl::HandleUniformMatrix4x2fvImmediate( |
| 2752 uint32_t immediate_data_size, |
| 2753 const void* cmd_data) { |
| 2754 if (!unsafe_es3_apis_enabled()) |
| 2755 return error::kUnknownCommand; |
| 2756 const gles2::cmds::UniformMatrix4x2fvImmediate& c = |
| 2757 *static_cast<const gles2::cmds::UniformMatrix4x2fvImmediate*>(cmd_data); |
| 2758 (void)c; |
| 2759 GLint location = static_cast<GLint>(c.location); |
| 2760 GLsizei count = static_cast<GLsizei>(c.count); |
| 2761 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2762 uint32_t data_size; |
| 2763 if (!ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { |
| 2764 return error::kOutOfBounds; |
| 2765 } |
| 2766 if (data_size > immediate_data_size) { |
| 2767 return error::kOutOfBounds; |
| 2768 } |
| 2769 const GLfloat* value = |
| 2770 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2771 if (value == NULL) { |
| 2772 return error::kOutOfBounds; |
| 2773 } |
| 2774 glUniformMatrix4x2fv(location, count, transpose, value); |
| 2775 return error::kNoError; |
| 2776 } |
| 2777 |
| 2778 error::Error GLES2DecoderImpl::HandleUniformMatrix4x3fvImmediate( |
| 2779 uint32_t immediate_data_size, |
| 2780 const void* cmd_data) { |
| 2781 if (!unsafe_es3_apis_enabled()) |
| 2782 return error::kUnknownCommand; |
| 2783 const gles2::cmds::UniformMatrix4x3fvImmediate& c = |
| 2784 *static_cast<const gles2::cmds::UniformMatrix4x3fvImmediate*>(cmd_data); |
| 2785 (void)c; |
| 2786 GLint location = static_cast<GLint>(c.location); |
| 2787 GLsizei count = static_cast<GLsizei>(c.count); |
| 2788 GLboolean transpose = static_cast<GLboolean>(c.transpose); |
| 2789 uint32_t data_size; |
| 2790 if (!ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { |
| 2791 return error::kOutOfBounds; |
| 2792 } |
| 2793 if (data_size > immediate_data_size) { |
| 2794 return error::kOutOfBounds; |
| 2795 } |
| 2796 const GLfloat* value = |
| 2797 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
| 2798 if (value == NULL) { |
| 2799 return error::kOutOfBounds; |
| 2800 } |
| 2801 glUniformMatrix4x3fv(location, count, transpose, value); |
| 2802 return error::kNoError; |
| 2803 } |
| 2804 |
2357 error::Error GLES2DecoderImpl::HandleUseProgram(uint32_t immediate_data_size, | 2805 error::Error GLES2DecoderImpl::HandleUseProgram(uint32_t immediate_data_size, |
2358 const void* cmd_data) { | 2806 const void* cmd_data) { |
2359 const gles2::cmds::UseProgram& c = | 2807 const gles2::cmds::UseProgram& c = |
2360 *static_cast<const gles2::cmds::UseProgram*>(cmd_data); | 2808 *static_cast<const gles2::cmds::UseProgram*>(cmd_data); |
2361 (void)c; | 2809 (void)c; |
2362 GLuint program = c.program; | 2810 GLuint program = c.program; |
2363 DoUseProgram(program); | 2811 DoUseProgram(program); |
2364 return error::kNoError; | 2812 return error::kNoError; |
2365 } | 2813 } |
2366 | 2814 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2514 } | 2962 } |
2515 const GLfloat* values = | 2963 const GLfloat* values = |
2516 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); | 2964 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); |
2517 if (values == NULL) { | 2965 if (values == NULL) { |
2518 return error::kOutOfBounds; | 2966 return error::kOutOfBounds; |
2519 } | 2967 } |
2520 DoVertexAttrib4fv(indx, values); | 2968 DoVertexAttrib4fv(indx, values); |
2521 return error::kNoError; | 2969 return error::kNoError; |
2522 } | 2970 } |
2523 | 2971 |
| 2972 error::Error GLES2DecoderImpl::HandleVertexAttribI4i( |
| 2973 uint32_t immediate_data_size, |
| 2974 const void* cmd_data) { |
| 2975 if (!unsafe_es3_apis_enabled()) |
| 2976 return error::kUnknownCommand; |
| 2977 const gles2::cmds::VertexAttribI4i& c = |
| 2978 *static_cast<const gles2::cmds::VertexAttribI4i*>(cmd_data); |
| 2979 (void)c; |
| 2980 GLuint indx = static_cast<GLuint>(c.indx); |
| 2981 GLint x = static_cast<GLint>(c.x); |
| 2982 GLint y = static_cast<GLint>(c.y); |
| 2983 GLint z = static_cast<GLint>(c.z); |
| 2984 GLint w = static_cast<GLint>(c.w); |
| 2985 glVertexAttribI4i(indx, x, y, z, w); |
| 2986 return error::kNoError; |
| 2987 } |
| 2988 |
| 2989 error::Error GLES2DecoderImpl::HandleVertexAttribI4ivImmediate( |
| 2990 uint32_t immediate_data_size, |
| 2991 const void* cmd_data) { |
| 2992 if (!unsafe_es3_apis_enabled()) |
| 2993 return error::kUnknownCommand; |
| 2994 const gles2::cmds::VertexAttribI4ivImmediate& c = |
| 2995 *static_cast<const gles2::cmds::VertexAttribI4ivImmediate*>(cmd_data); |
| 2996 (void)c; |
| 2997 GLuint indx = static_cast<GLuint>(c.indx); |
| 2998 uint32_t data_size; |
| 2999 if (!ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { |
| 3000 return error::kOutOfBounds; |
| 3001 } |
| 3002 if (data_size > immediate_data_size) { |
| 3003 return error::kOutOfBounds; |
| 3004 } |
| 3005 const GLint* values = |
| 3006 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); |
| 3007 if (values == NULL) { |
| 3008 return error::kOutOfBounds; |
| 3009 } |
| 3010 glVertexAttribI4iv(indx, values); |
| 3011 return error::kNoError; |
| 3012 } |
| 3013 |
| 3014 error::Error GLES2DecoderImpl::HandleVertexAttribI4ui( |
| 3015 uint32_t immediate_data_size, |
| 3016 const void* cmd_data) { |
| 3017 if (!unsafe_es3_apis_enabled()) |
| 3018 return error::kUnknownCommand; |
| 3019 const gles2::cmds::VertexAttribI4ui& c = |
| 3020 *static_cast<const gles2::cmds::VertexAttribI4ui*>(cmd_data); |
| 3021 (void)c; |
| 3022 GLuint indx = static_cast<GLuint>(c.indx); |
| 3023 GLuint x = static_cast<GLuint>(c.x); |
| 3024 GLuint y = static_cast<GLuint>(c.y); |
| 3025 GLuint z = static_cast<GLuint>(c.z); |
| 3026 GLuint w = static_cast<GLuint>(c.w); |
| 3027 glVertexAttribI4ui(indx, x, y, z, w); |
| 3028 return error::kNoError; |
| 3029 } |
| 3030 |
| 3031 error::Error GLES2DecoderImpl::HandleVertexAttribI4uivImmediate( |
| 3032 uint32_t immediate_data_size, |
| 3033 const void* cmd_data) { |
| 3034 if (!unsafe_es3_apis_enabled()) |
| 3035 return error::kUnknownCommand; |
| 3036 const gles2::cmds::VertexAttribI4uivImmediate& c = |
| 3037 *static_cast<const gles2::cmds::VertexAttribI4uivImmediate*>(cmd_data); |
| 3038 (void)c; |
| 3039 GLuint indx = static_cast<GLuint>(c.indx); |
| 3040 uint32_t data_size; |
| 3041 if (!ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { |
| 3042 return error::kOutOfBounds; |
| 3043 } |
| 3044 if (data_size > immediate_data_size) { |
| 3045 return error::kOutOfBounds; |
| 3046 } |
| 3047 const GLuint* values = |
| 3048 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); |
| 3049 if (values == NULL) { |
| 3050 return error::kOutOfBounds; |
| 3051 } |
| 3052 glVertexAttribI4uiv(indx, values); |
| 3053 return error::kNoError; |
| 3054 } |
| 3055 |
2524 error::Error GLES2DecoderImpl::HandleViewport(uint32_t immediate_data_size, | 3056 error::Error GLES2DecoderImpl::HandleViewport(uint32_t immediate_data_size, |
2525 const void* cmd_data) { | 3057 const void* cmd_data) { |
2526 const gles2::cmds::Viewport& c = | 3058 const gles2::cmds::Viewport& c = |
2527 *static_cast<const gles2::cmds::Viewport*>(cmd_data); | 3059 *static_cast<const gles2::cmds::Viewport*>(cmd_data); |
2528 (void)c; | 3060 (void)c; |
2529 GLint x = static_cast<GLint>(c.x); | 3061 GLint x = static_cast<GLint>(c.x); |
2530 GLint y = static_cast<GLint>(c.y); | 3062 GLint y = static_cast<GLint>(c.y); |
2531 GLsizei width = static_cast<GLsizei>(c.width); | 3063 GLsizei width = static_cast<GLsizei>(c.width); |
2532 GLsizei height = static_cast<GLsizei>(c.height); | 3064 GLsizei height = static_cast<GLsizei>(c.height); |
2533 if (width < 0) { | 3065 if (width < 0) { |
(...skipping 986 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3520 state_.ignore_cached_state) { | 4052 state_.ignore_cached_state) { |
3521 framebuffer_state_.clear_state_dirty = true; | 4053 framebuffer_state_.clear_state_dirty = true; |
3522 } | 4054 } |
3523 return false; | 4055 return false; |
3524 default: | 4056 default: |
3525 NOTREACHED(); | 4057 NOTREACHED(); |
3526 return false; | 4058 return false; |
3527 } | 4059 } |
3528 } | 4060 } |
3529 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 4061 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
OLD | NEW |