OLD | NEW |
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h" |
6 | 6 |
7 #include "base/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
8 #include "ui/gl/gl_version_info.h" | 8 #include "ui/gl/gl_version_info.h" |
9 | 9 |
10 namespace gpu { | 10 namespace gpu { |
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1008 GLint* params) { | 1008 GLint* params) { |
1009 glGetActiveUniformBlockivRobustANGLE(GetProgramServiceID(program, resources_), | 1009 glGetActiveUniformBlockivRobustANGLE(GetProgramServiceID(program, resources_), |
1010 index, pname, bufSize, length, params); | 1010 index, pname, bufSize, length, params); |
1011 return error::kNoError; | 1011 return error::kNoError; |
1012 } | 1012 } |
1013 | 1013 |
1014 error::Error GLES2DecoderPassthroughImpl::DoGetActiveUniformBlockName( | 1014 error::Error GLES2DecoderPassthroughImpl::DoGetActiveUniformBlockName( |
1015 GLuint program, | 1015 GLuint program, |
1016 GLuint index, | 1016 GLuint index, |
1017 std::string* name) { | 1017 std::string* name) { |
1018 NOTIMPLEMENTED(); | 1018 FlushErrors(); |
| 1019 |
| 1020 GLuint program_service_id = GetProgramServiceID(program, resources_); |
| 1021 GLint max_name_length = 0; |
| 1022 glGetProgramiv(program_service_id, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, |
| 1023 &max_name_length); |
| 1024 |
| 1025 if (FlushErrors()) { |
| 1026 return error::kNoError; |
| 1027 } |
| 1028 |
| 1029 std::vector<GLchar> buffer(max_name_length, 0); |
| 1030 GLsizei length = 0; |
| 1031 glGetActiveUniformBlockName(program_service_id, index, max_name_length, |
| 1032 &length, buffer.data()); |
| 1033 DCHECK(length <= max_name_length); |
| 1034 *name = length > 0 ? std::string(buffer.data(), length) : std::string(); |
| 1035 |
1019 return error::kNoError; | 1036 return error::kNoError; |
1020 } | 1037 } |
1021 | 1038 |
1022 error::Error GLES2DecoderPassthroughImpl::DoGetActiveUniformsiv( | 1039 error::Error GLES2DecoderPassthroughImpl::DoGetActiveUniformsiv( |
1023 GLuint program, | 1040 GLuint program, |
1024 GLsizei count, | 1041 GLsizei count, |
1025 const GLuint* indices, | 1042 const GLuint* indices, |
1026 GLenum pname, | 1043 GLenum pname, |
1027 GLsizei bufSize, | |
1028 GLsizei* length, | |
1029 GLint* params) { | 1044 GLint* params) { |
1030 NOTIMPLEMENTED(); | 1045 glGetActiveUniformsiv(GetProgramServiceID(program, resources_), count, |
| 1046 indices, pname, params); |
1031 return error::kNoError; | 1047 return error::kNoError; |
1032 } | 1048 } |
1033 | 1049 |
1034 error::Error GLES2DecoderPassthroughImpl::DoGetAttachedShaders( | 1050 error::Error GLES2DecoderPassthroughImpl::DoGetAttachedShaders( |
1035 GLuint program, | 1051 GLuint program, |
1036 GLsizei maxcount, | 1052 GLsizei maxcount, |
1037 GLsizei* count, | 1053 GLsizei* count, |
1038 GLuint* shaders) { | 1054 GLuint* shaders) { |
1039 NOTIMPLEMENTED(); | 1055 glGetAttachedShaders(GetProgramServiceID(program, resources_), maxcount, |
| 1056 count, shaders); |
1040 return error::kNoError; | 1057 return error::kNoError; |
1041 } | 1058 } |
1042 | 1059 |
1043 error::Error GLES2DecoderPassthroughImpl::DoGetAttribLocation(GLuint program, | 1060 error::Error GLES2DecoderPassthroughImpl::DoGetAttribLocation(GLuint program, |
1044 const char* name, | 1061 const char* name, |
1045 GLint* result) { | 1062 GLint* result) { |
1046 *result = glGetAttribLocation(GetProgramServiceID(program, resources_), name); | 1063 *result = glGetAttribLocation(GetProgramServiceID(program, resources_), name); |
1047 return error::kNoError; | 1064 return error::kNoError; |
1048 } | 1065 } |
1049 | 1066 |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 GLsizei* length, | 1224 GLsizei* length, |
1208 GLint* params) { | 1225 GLint* params) { |
1209 glGetProgramivRobustANGLE(GetProgramServiceID(program, resources_), pname, | 1226 glGetProgramivRobustANGLE(GetProgramServiceID(program, resources_), pname, |
1210 bufsize, length, params); | 1227 bufsize, length, params); |
1211 return error::kNoError; | 1228 return error::kNoError; |
1212 } | 1229 } |
1213 | 1230 |
1214 error::Error GLES2DecoderPassthroughImpl::DoGetProgramInfoLog( | 1231 error::Error GLES2DecoderPassthroughImpl::DoGetProgramInfoLog( |
1215 GLuint program, | 1232 GLuint program, |
1216 std::string* infolog) { | 1233 std::string* infolog) { |
| 1234 FlushErrors(); |
1217 GLint info_log_len = 0; | 1235 GLint info_log_len = 0; |
1218 glGetProgramiv(GetProgramServiceID(program, resources_), GL_INFO_LOG_LENGTH, | 1236 glGetProgramiv(GetProgramServiceID(program, resources_), GL_INFO_LOG_LENGTH, |
1219 &info_log_len); | 1237 &info_log_len); |
1220 | 1238 |
| 1239 if (FlushErrors()) { |
| 1240 return error::kNoError; |
| 1241 } |
| 1242 |
1221 std::vector<char> buffer(info_log_len, 0); | 1243 std::vector<char> buffer(info_log_len, 0); |
| 1244 GLsizei length = 0; |
1222 glGetProgramInfoLog(GetProgramServiceID(program, resources_), info_log_len, | 1245 glGetProgramInfoLog(GetProgramServiceID(program, resources_), info_log_len, |
1223 nullptr, buffer.data()); | 1246 &length, buffer.data()); |
1224 *infolog = info_log_len > 0 ? std::string(buffer.data()) : std::string(); | 1247 DCHECK(length <= info_log_len); |
| 1248 *infolog = length > 0 ? std::string(buffer.data(), length) : std::string(); |
1225 return error::kNoError; | 1249 return error::kNoError; |
1226 } | 1250 } |
1227 | 1251 |
1228 error::Error GLES2DecoderPassthroughImpl::DoGetRenderbufferParameteriv( | 1252 error::Error GLES2DecoderPassthroughImpl::DoGetRenderbufferParameteriv( |
1229 GLenum target, | 1253 GLenum target, |
1230 GLenum pname, | 1254 GLenum pname, |
1231 GLsizei bufsize, | 1255 GLsizei bufsize, |
1232 GLsizei* length, | 1256 GLsizei* length, |
1233 GLint* params) { | 1257 GLint* params) { |
1234 glGetRenderbufferParameterivRobustANGLE(target, pname, bufsize, length, | 1258 glGetRenderbufferParameterivRobustANGLE(target, pname, bufsize, length, |
(...skipping 28 matching lines...) Expand all Loading... |
1263 GLsizei* length, | 1287 GLsizei* length, |
1264 GLint* params) { | 1288 GLint* params) { |
1265 glGetShaderivRobustANGLE(GetShaderServiceID(shader, resources_), pname, | 1289 glGetShaderivRobustANGLE(GetShaderServiceID(shader, resources_), pname, |
1266 bufsize, length, params); | 1290 bufsize, length, params); |
1267 return error::kNoError; | 1291 return error::kNoError; |
1268 } | 1292 } |
1269 | 1293 |
1270 error::Error GLES2DecoderPassthroughImpl::DoGetShaderInfoLog( | 1294 error::Error GLES2DecoderPassthroughImpl::DoGetShaderInfoLog( |
1271 GLuint shader, | 1295 GLuint shader, |
1272 std::string* infolog) { | 1296 std::string* infolog) { |
| 1297 FlushErrors(); |
| 1298 |
1273 GLuint service_id = GetShaderServiceID(shader, resources_); | 1299 GLuint service_id = GetShaderServiceID(shader, resources_); |
1274 GLint info_log_len = 0; | 1300 GLint info_log_len = 0; |
1275 glGetShaderiv(service_id, GL_INFO_LOG_LENGTH, &info_log_len); | 1301 glGetShaderiv(service_id, GL_INFO_LOG_LENGTH, &info_log_len); |
| 1302 if (FlushErrors()) { |
| 1303 return error::kNoError; |
| 1304 } |
| 1305 |
1276 std::vector<char> buffer(info_log_len, 0); | 1306 std::vector<char> buffer(info_log_len, 0); |
1277 glGetShaderInfoLog(service_id, info_log_len, nullptr, buffer.data()); | 1307 GLsizei length = 0; |
1278 *infolog = info_log_len > 0 ? std::string(buffer.data()) : std::string(); | 1308 glGetShaderInfoLog(service_id, info_log_len, &length, buffer.data()); |
| 1309 DCHECK(length <= info_log_len); |
| 1310 *infolog = length > 0 ? std::string(buffer.data(), length) : std::string(); |
1279 return error::kNoError; | 1311 return error::kNoError; |
1280 } | 1312 } |
1281 | 1313 |
1282 error::Error GLES2DecoderPassthroughImpl::DoGetShaderPrecisionFormat( | 1314 error::Error GLES2DecoderPassthroughImpl::DoGetShaderPrecisionFormat( |
1283 GLenum shadertype, | 1315 GLenum shadertype, |
1284 GLenum precisiontype, | 1316 GLenum precisiontype, |
1285 GLint* range, | 1317 GLint* range, |
1286 GLint* precision, | 1318 GLint* precision, |
1287 int32_t* success) { | 1319 int32_t* success) { |
1288 FlushErrors(); | 1320 FlushErrors(); |
1289 glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); | 1321 glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); |
1290 *success = FlushErrors() ? 0 : 1; | 1322 *success = FlushErrors() ? 0 : 1; |
1291 return error::kNoError; | 1323 return error::kNoError; |
1292 } | 1324 } |
1293 | 1325 |
1294 error::Error GLES2DecoderPassthroughImpl::DoGetShaderSource( | 1326 error::Error GLES2DecoderPassthroughImpl::DoGetShaderSource( |
1295 GLuint shader, | 1327 GLuint shader, |
1296 std::string* source) { | 1328 std::string* source) { |
1297 NOTIMPLEMENTED(); | 1329 FlushErrors(); |
| 1330 |
| 1331 GLuint shader_service_id = GetShaderServiceID(shader, resources_); |
| 1332 GLint shader_source_length = 0; |
| 1333 glGetShaderiv(shader_service_id, GL_SHADER_SOURCE_LENGTH, |
| 1334 &shader_source_length); |
| 1335 if (FlushErrors()) { |
| 1336 return error::kNoError; |
| 1337 } |
| 1338 |
| 1339 std::vector<char> buffer(shader_source_length, 0); |
| 1340 GLsizei length = 0; |
| 1341 glGetShaderSource(shader_service_id, shader_source_length, &length, |
| 1342 buffer.data()); |
| 1343 DCHECK(length <= shader_source_length); |
| 1344 *source = shader_source_length > 0 ? std::string(buffer.data(), length) |
| 1345 : std::string(); |
1298 return error::kNoError; | 1346 return error::kNoError; |
1299 } | 1347 } |
1300 | 1348 |
1301 error::Error GLES2DecoderPassthroughImpl::DoGetString(GLenum name, | 1349 error::Error GLES2DecoderPassthroughImpl::DoGetString(GLenum name, |
1302 const char** result) { | 1350 const char** result) { |
1303 switch (name) { | 1351 switch (name) { |
1304 case GL_VERSION: | 1352 case GL_VERSION: |
1305 *result = GetServiceVersionString(feature_info_.get()); | 1353 *result = GetServiceVersionString(feature_info_.get()); |
1306 break; | 1354 break; |
1307 case GL_SHADING_LANGUAGE_VERSION: | 1355 case GL_SHADING_LANGUAGE_VERSION: |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1369 size, type, name_buffer.data()); | 1417 size, type, name_buffer.data()); |
1370 *name = std::string(name_buffer.data()); | 1418 *name = std::string(name_buffer.data()); |
1371 *success = FlushErrors() ? 0 : 1; | 1419 *success = FlushErrors() ? 0 : 1; |
1372 return error::kNoError; | 1420 return error::kNoError; |
1373 } | 1421 } |
1374 | 1422 |
1375 error::Error GLES2DecoderPassthroughImpl::DoGetUniformBlockIndex( | 1423 error::Error GLES2DecoderPassthroughImpl::DoGetUniformBlockIndex( |
1376 GLuint program, | 1424 GLuint program, |
1377 const char* name, | 1425 const char* name, |
1378 GLint* index) { | 1426 GLint* index) { |
1379 NOTIMPLEMENTED(); | 1427 *index = |
| 1428 glGetUniformBlockIndex(GetProgramServiceID(program, resources_), name); |
1380 return error::kNoError; | 1429 return error::kNoError; |
1381 } | 1430 } |
1382 | 1431 |
1383 error::Error GLES2DecoderPassthroughImpl::DoGetUniformfv(GLuint program, | 1432 error::Error GLES2DecoderPassthroughImpl::DoGetUniformfv(GLuint program, |
1384 GLint location, | 1433 GLint location, |
1385 GLsizei bufsize, | 1434 GLsizei bufsize, |
1386 GLsizei* length, | 1435 GLsizei* length, |
1387 GLfloat* params) { | 1436 GLfloat* params) { |
1388 // GetUniform*RobustANGLE entry points expect bufsize in bytes like the entry | 1437 // GetUniform*RobustANGLE entry points expect bufsize in bytes like the entry |
1389 // points in GL_EXT_robustness | 1438 // points in GL_EXT_robustness |
(...skipping 24 matching lines...) Expand all Loading... |
1414 glGetUniformuivRobustANGLE(GetProgramServiceID(program, resources_), location, | 1463 glGetUniformuivRobustANGLE(GetProgramServiceID(program, resources_), location, |
1415 bufsize * sizeof(*params), length, params); | 1464 bufsize * sizeof(*params), length, params); |
1416 return error::kNoError; | 1465 return error::kNoError; |
1417 } | 1466 } |
1418 | 1467 |
1419 error::Error GLES2DecoderPassthroughImpl::DoGetUniformIndices( | 1468 error::Error GLES2DecoderPassthroughImpl::DoGetUniformIndices( |
1420 GLuint program, | 1469 GLuint program, |
1421 GLsizei count, | 1470 GLsizei count, |
1422 const char* const* names, | 1471 const char* const* names, |
1423 GLsizei bufSize, | 1472 GLsizei bufSize, |
1424 GLsizei* length, | |
1425 GLuint* indices) { | 1473 GLuint* indices) { |
1426 NOTIMPLEMENTED(); | 1474 glGetUniformIndices(GetProgramServiceID(program, resources_), count, names, |
| 1475 indices); |
1427 return error::kNoError; | 1476 return error::kNoError; |
1428 } | 1477 } |
1429 | 1478 |
1430 error::Error GLES2DecoderPassthroughImpl::DoGetUniformLocation( | 1479 error::Error GLES2DecoderPassthroughImpl::DoGetUniformLocation( |
1431 GLuint program, | 1480 GLuint program, |
1432 const char* name, | 1481 const char* name, |
1433 GLint* location) { | 1482 GLint* location) { |
1434 *location = | 1483 *location = |
1435 glGetUniformLocation(GetProgramServiceID(program, resources_), name); | 1484 glGetUniformLocation(GetProgramServiceID(program, resources_), name); |
1436 return error::kNoError; | 1485 return error::kNoError; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 return error::kNoError; | 1577 return error::kNoError; |
1529 } | 1578 } |
1530 std::vector<GLenum> attachments_copy(attachments, attachments + count); | 1579 std::vector<GLenum> attachments_copy(attachments, attachments + count); |
1531 glInvalidateSubFramebuffer(target, count, attachments_copy.data(), x, y, | 1580 glInvalidateSubFramebuffer(target, count, attachments_copy.data(), x, y, |
1532 width, height); | 1581 width, height); |
1533 return error::kNoError; | 1582 return error::kNoError; |
1534 } | 1583 } |
1535 | 1584 |
1536 error::Error GLES2DecoderPassthroughImpl::DoIsBuffer(GLuint buffer, | 1585 error::Error GLES2DecoderPassthroughImpl::DoIsBuffer(GLuint buffer, |
1537 uint32_t* result) { | 1586 uint32_t* result) { |
1538 NOTIMPLEMENTED(); | |
1539 *result = glIsBuffer(GetBufferServiceID(buffer, resources_, false)); | 1587 *result = glIsBuffer(GetBufferServiceID(buffer, resources_, false)); |
1540 return error::kNoError; | 1588 return error::kNoError; |
1541 } | 1589 } |
1542 | 1590 |
1543 error::Error GLES2DecoderPassthroughImpl::DoIsEnabled(GLenum cap, | 1591 error::Error GLES2DecoderPassthroughImpl::DoIsEnabled(GLenum cap, |
1544 uint32_t* result) { | 1592 uint32_t* result) { |
1545 *result = glIsEnabled(cap); | 1593 *result = glIsEnabled(cap); |
1546 return error::kNoError; | 1594 return error::kNoError; |
1547 } | 1595 } |
1548 | 1596 |
1549 error::Error GLES2DecoderPassthroughImpl::DoIsFramebuffer(GLuint framebuffer, | 1597 error::Error GLES2DecoderPassthroughImpl::DoIsFramebuffer(GLuint framebuffer, |
1550 uint32_t* result) { | 1598 uint32_t* result) { |
1551 *result = glIsFramebufferEXT( | 1599 *result = glIsFramebufferEXT( |
1552 GetFramebufferServiceID(framebuffer, &framebuffer_id_map_, false)); | 1600 GetFramebufferServiceID(framebuffer, &framebuffer_id_map_, false)); |
1553 return error::kNoError; | 1601 return error::kNoError; |
1554 } | 1602 } |
1555 | 1603 |
1556 error::Error GLES2DecoderPassthroughImpl::DoIsProgram(GLuint program, | 1604 error::Error GLES2DecoderPassthroughImpl::DoIsProgram(GLuint program, |
1557 uint32_t* result) { | 1605 uint32_t* result) { |
1558 *result = glIsProgram(GetProgramServiceID(program, resources_)); | 1606 *result = glIsProgram(GetProgramServiceID(program, resources_)); |
1559 return error::kNoError; | 1607 return error::kNoError; |
1560 } | 1608 } |
1561 | 1609 |
1562 error::Error GLES2DecoderPassthroughImpl::DoIsRenderbuffer(GLuint renderbuffer, | 1610 error::Error GLES2DecoderPassthroughImpl::DoIsRenderbuffer(GLuint renderbuffer, |
1563 uint32_t* result) { | 1611 uint32_t* result) { |
1564 NOTIMPLEMENTED(); | |
1565 *result = glIsRenderbufferEXT( | 1612 *result = glIsRenderbufferEXT( |
1566 GetRenderbufferServiceID(renderbuffer, resources_, false)); | 1613 GetRenderbufferServiceID(renderbuffer, resources_, false)); |
1567 return error::kNoError; | 1614 return error::kNoError; |
1568 } | 1615 } |
1569 | 1616 |
1570 error::Error GLES2DecoderPassthroughImpl::DoIsSampler(GLuint sampler, | 1617 error::Error GLES2DecoderPassthroughImpl::DoIsSampler(GLuint sampler, |
1571 uint32_t* result) { | 1618 uint32_t* result) { |
1572 *result = glIsSampler(GetSamplerServiceID(sampler, resources_)); | 1619 *result = glIsSampler(GetSamplerServiceID(sampler, resources_)); |
1573 return error::kNoError; | 1620 return error::kNoError; |
1574 } | 1621 } |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1715 GLsizei height) { | 1762 GLsizei height) { |
1716 glScissor(x, y, width, height); | 1763 glScissor(x, y, width, height); |
1717 return error::kNoError; | 1764 return error::kNoError; |
1718 } | 1765 } |
1719 | 1766 |
1720 error::Error GLES2DecoderPassthroughImpl::DoShaderBinary(GLsizei n, | 1767 error::Error GLES2DecoderPassthroughImpl::DoShaderBinary(GLsizei n, |
1721 const GLuint* shaders, | 1768 const GLuint* shaders, |
1722 GLenum binaryformat, | 1769 GLenum binaryformat, |
1723 const void* binary, | 1770 const void* binary, |
1724 GLsizei length) { | 1771 GLsizei length) { |
1725 NOTIMPLEMENTED(); | 1772 std::vector<GLuint> service_shaders(n, 0); |
| 1773 for (GLsizei i = 0; i < n; i++) { |
| 1774 service_shaders[i] = GetShaderServiceID(shaders[i], resources_); |
| 1775 } |
| 1776 glShaderBinary(n, service_shaders.data(), binaryformat, binary, length); |
1726 return error::kNoError; | 1777 return error::kNoError; |
1727 } | 1778 } |
1728 | 1779 |
1729 error::Error GLES2DecoderPassthroughImpl::DoShaderSource(GLuint shader, | 1780 error::Error GLES2DecoderPassthroughImpl::DoShaderSource(GLuint shader, |
1730 GLsizei count, | 1781 GLsizei count, |
1731 const char** string, | 1782 const char** string, |
1732 const GLint* length) { | 1783 const GLint* length) { |
1733 glShaderSource(GetShaderServiceID(shader, resources_), count, string, length); | 1784 glShaderSource(GetShaderServiceID(shader, resources_), count, string, length); |
1734 return error::kNoError; | 1785 return error::kNoError; |
1735 } | 1786 } |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2373 return error::kNoError; | 2424 return error::kNoError; |
2374 } | 2425 } |
2375 | 2426 |
2376 error::Error GLES2DecoderPassthroughImpl::DoFramebufferTexture2DMultisampleEXT( | 2427 error::Error GLES2DecoderPassthroughImpl::DoFramebufferTexture2DMultisampleEXT( |
2377 GLenum target, | 2428 GLenum target, |
2378 GLenum attachment, | 2429 GLenum attachment, |
2379 GLenum textarget, | 2430 GLenum textarget, |
2380 GLuint texture, | 2431 GLuint texture, |
2381 GLint level, | 2432 GLint level, |
2382 GLsizei samples) { | 2433 GLsizei samples) { |
2383 NOTIMPLEMENTED(); | 2434 glFramebufferTexture2DMultisampleEXT( |
| 2435 target, attachment, textarget, |
| 2436 GetTextureServiceID(texture, resources_, false), level, samples); |
2384 return error::kNoError; | 2437 return error::kNoError; |
2385 } | 2438 } |
2386 | 2439 |
2387 error::Error GLES2DecoderPassthroughImpl::DoTexStorage2DEXT( | 2440 error::Error GLES2DecoderPassthroughImpl::DoTexStorage2DEXT( |
2388 GLenum target, | 2441 GLenum target, |
2389 GLsizei levels, | 2442 GLsizei levels, |
2390 GLenum internalFormat, | 2443 GLenum internalFormat, |
2391 GLsizei width, | 2444 GLsizei width, |
2392 GLsizei height) { | 2445 GLsizei height) { |
2393 glTexStorage2DEXT(target, levels, internalFormat, width, height); | 2446 glTexStorage2DEXT(target, levels, internalFormat, width, height); |
(...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3908 } | 3961 } |
3909 | 3962 |
3910 error::Error GLES2DecoderPassthroughImpl::DoSetEnableDCLayersCHROMIUM( | 3963 error::Error GLES2DecoderPassthroughImpl::DoSetEnableDCLayersCHROMIUM( |
3911 GLboolean enable) { | 3964 GLboolean enable) { |
3912 NOTIMPLEMENTED(); | 3965 NOTIMPLEMENTED(); |
3913 return error::kNoError; | 3966 return error::kNoError; |
3914 } | 3967 } |
3915 | 3968 |
3916 } // namespace gles2 | 3969 } // namespace gles2 |
3917 } // namespace gpu | 3970 } // namespace gpu |
OLD | NEW |