Chromium Code Reviews| 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); |
| 1222 glGetProgramInfoLog(GetProgramServiceID(program, resources_), info_log_len, | 1244 glGetProgramInfoLog(GetProgramServiceID(program, resources_), info_log_len, |
| 1223 nullptr, buffer.data()); | 1245 nullptr, buffer.data()); |
| 1224 *infolog = info_log_len > 0 ? std::string(buffer.data()) : std::string(); | 1246 *infolog = info_log_len > 0 ? std::string(buffer.data(), info_log_len) |
|
Zhenyao Mo
2017/03/23 17:45:56
I mean the same with std::string(buffer.data(), le
| |
| 1247 : std::string(); | |
| 1225 return error::kNoError; | 1248 return error::kNoError; |
| 1226 } | 1249 } |
| 1227 | 1250 |
| 1228 error::Error GLES2DecoderPassthroughImpl::DoGetRenderbufferParameteriv( | 1251 error::Error GLES2DecoderPassthroughImpl::DoGetRenderbufferParameteriv( |
| 1229 GLenum target, | 1252 GLenum target, |
| 1230 GLenum pname, | 1253 GLenum pname, |
| 1231 GLsizei bufsize, | 1254 GLsizei bufsize, |
| 1232 GLsizei* length, | 1255 GLsizei* length, |
| 1233 GLint* params) { | 1256 GLint* params) { |
| 1234 glGetRenderbufferParameterivRobustANGLE(target, pname, bufsize, length, | 1257 glGetRenderbufferParameterivRobustANGLE(target, pname, bufsize, length, |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 1263 GLsizei* length, | 1286 GLsizei* length, |
| 1264 GLint* params) { | 1287 GLint* params) { |
| 1265 glGetShaderivRobustANGLE(GetShaderServiceID(shader, resources_), pname, | 1288 glGetShaderivRobustANGLE(GetShaderServiceID(shader, resources_), pname, |
| 1266 bufsize, length, params); | 1289 bufsize, length, params); |
| 1267 return error::kNoError; | 1290 return error::kNoError; |
| 1268 } | 1291 } |
| 1269 | 1292 |
| 1270 error::Error GLES2DecoderPassthroughImpl::DoGetShaderInfoLog( | 1293 error::Error GLES2DecoderPassthroughImpl::DoGetShaderInfoLog( |
| 1271 GLuint shader, | 1294 GLuint shader, |
| 1272 std::string* infolog) { | 1295 std::string* infolog) { |
| 1296 FlushErrors(); | |
| 1297 | |
| 1273 GLuint service_id = GetShaderServiceID(shader, resources_); | 1298 GLuint service_id = GetShaderServiceID(shader, resources_); |
| 1274 GLint info_log_len = 0; | 1299 GLint info_log_len = 0; |
| 1275 glGetShaderiv(service_id, GL_INFO_LOG_LENGTH, &info_log_len); | 1300 glGetShaderiv(service_id, GL_INFO_LOG_LENGTH, &info_log_len); |
| 1301 if (FlushErrors()) { | |
| 1302 return error::kNoError; | |
| 1303 } | |
| 1304 | |
| 1276 std::vector<char> buffer(info_log_len, 0); | 1305 std::vector<char> buffer(info_log_len, 0); |
| 1277 glGetShaderInfoLog(service_id, info_log_len, nullptr, buffer.data()); | 1306 glGetShaderInfoLog(service_id, info_log_len, nullptr, buffer.data()); |
| 1278 *infolog = info_log_len > 0 ? std::string(buffer.data()) : std::string(); | 1307 *infolog = info_log_len > 0 ? std::string(buffer.data(), info_log_len) |
| 1308 : std::string(); | |
| 1279 return error::kNoError; | 1309 return error::kNoError; |
| 1280 } | 1310 } |
| 1281 | 1311 |
| 1282 error::Error GLES2DecoderPassthroughImpl::DoGetShaderPrecisionFormat( | 1312 error::Error GLES2DecoderPassthroughImpl::DoGetShaderPrecisionFormat( |
| 1283 GLenum shadertype, | 1313 GLenum shadertype, |
| 1284 GLenum precisiontype, | 1314 GLenum precisiontype, |
| 1285 GLint* range, | 1315 GLint* range, |
| 1286 GLint* precision, | 1316 GLint* precision, |
| 1287 int32_t* success) { | 1317 int32_t* success) { |
| 1288 FlushErrors(); | 1318 FlushErrors(); |
| 1289 glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); | 1319 glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); |
| 1290 *success = FlushErrors() ? 0 : 1; | 1320 *success = FlushErrors() ? 0 : 1; |
| 1291 return error::kNoError; | 1321 return error::kNoError; |
| 1292 } | 1322 } |
| 1293 | 1323 |
| 1294 error::Error GLES2DecoderPassthroughImpl::DoGetShaderSource( | 1324 error::Error GLES2DecoderPassthroughImpl::DoGetShaderSource( |
| 1295 GLuint shader, | 1325 GLuint shader, |
| 1296 std::string* source) { | 1326 std::string* source) { |
| 1297 NOTIMPLEMENTED(); | 1327 FlushErrors(); |
| 1328 | |
| 1329 GLuint shader_service_id = GetShaderServiceID(shader, resources_); | |
| 1330 GLint shader_source_length = 0; | |
| 1331 glGetShaderiv(shader_service_id, GL_SHADER_SOURCE_LENGTH, | |
| 1332 &shader_source_length); | |
| 1333 if (FlushErrors()) { | |
| 1334 return error::kNoError; | |
| 1335 } | |
| 1336 | |
| 1337 std::vector<char> buffer(shader_source_length, 0); | |
| 1338 glGetShaderSource(shader_service_id, shader_source_length, nullptr, | |
| 1339 buffer.data()); | |
| 1340 *source = shader_source_length > 0 | |
| 1341 ? std::string(buffer.data(), shader_source_length) | |
|
Zhenyao Mo
2017/03/23 17:45:56
The same with std::string(buffer.data(), len).
Geoff Lang
2017/03/23 17:50:17
For this one, the length should be exact but I can
| |
| 1342 : std::string(); | |
| 1298 return error::kNoError; | 1343 return error::kNoError; |
| 1299 } | 1344 } |
| 1300 | 1345 |
| 1301 error::Error GLES2DecoderPassthroughImpl::DoGetString(GLenum name, | 1346 error::Error GLES2DecoderPassthroughImpl::DoGetString(GLenum name, |
| 1302 const char** result) { | 1347 const char** result) { |
| 1303 switch (name) { | 1348 switch (name) { |
| 1304 case GL_VERSION: | 1349 case GL_VERSION: |
| 1305 *result = GetServiceVersionString(feature_info_.get()); | 1350 *result = GetServiceVersionString(feature_info_.get()); |
| 1306 break; | 1351 break; |
| 1307 case GL_SHADING_LANGUAGE_VERSION: | 1352 case GL_SHADING_LANGUAGE_VERSION: |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1369 size, type, name_buffer.data()); | 1414 size, type, name_buffer.data()); |
| 1370 *name = std::string(name_buffer.data()); | 1415 *name = std::string(name_buffer.data()); |
| 1371 *success = FlushErrors() ? 0 : 1; | 1416 *success = FlushErrors() ? 0 : 1; |
| 1372 return error::kNoError; | 1417 return error::kNoError; |
| 1373 } | 1418 } |
| 1374 | 1419 |
| 1375 error::Error GLES2DecoderPassthroughImpl::DoGetUniformBlockIndex( | 1420 error::Error GLES2DecoderPassthroughImpl::DoGetUniformBlockIndex( |
| 1376 GLuint program, | 1421 GLuint program, |
| 1377 const char* name, | 1422 const char* name, |
| 1378 GLint* index) { | 1423 GLint* index) { |
| 1379 NOTIMPLEMENTED(); | 1424 *index = |
| 1425 glGetUniformBlockIndex(GetProgramServiceID(program, resources_), name); | |
| 1380 return error::kNoError; | 1426 return error::kNoError; |
| 1381 } | 1427 } |
| 1382 | 1428 |
| 1383 error::Error GLES2DecoderPassthroughImpl::DoGetUniformfv(GLuint program, | 1429 error::Error GLES2DecoderPassthroughImpl::DoGetUniformfv(GLuint program, |
| 1384 GLint location, | 1430 GLint location, |
| 1385 GLsizei bufsize, | 1431 GLsizei bufsize, |
| 1386 GLsizei* length, | 1432 GLsizei* length, |
| 1387 GLfloat* params) { | 1433 GLfloat* params) { |
| 1388 // GetUniform*RobustANGLE entry points expect bufsize in bytes like the entry | 1434 // GetUniform*RobustANGLE entry points expect bufsize in bytes like the entry |
| 1389 // points in GL_EXT_robustness | 1435 // points in GL_EXT_robustness |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 1414 glGetUniformuivRobustANGLE(GetProgramServiceID(program, resources_), location, | 1460 glGetUniformuivRobustANGLE(GetProgramServiceID(program, resources_), location, |
| 1415 bufsize * sizeof(*params), length, params); | 1461 bufsize * sizeof(*params), length, params); |
| 1416 return error::kNoError; | 1462 return error::kNoError; |
| 1417 } | 1463 } |
| 1418 | 1464 |
| 1419 error::Error GLES2DecoderPassthroughImpl::DoGetUniformIndices( | 1465 error::Error GLES2DecoderPassthroughImpl::DoGetUniformIndices( |
| 1420 GLuint program, | 1466 GLuint program, |
| 1421 GLsizei count, | 1467 GLsizei count, |
| 1422 const char* const* names, | 1468 const char* const* names, |
| 1423 GLsizei bufSize, | 1469 GLsizei bufSize, |
| 1424 GLsizei* length, | |
| 1425 GLuint* indices) { | 1470 GLuint* indices) { |
| 1426 NOTIMPLEMENTED(); | 1471 glGetUniformIndices(GetProgramServiceID(program, resources_), count, names, |
| 1472 indices); | |
| 1427 return error::kNoError; | 1473 return error::kNoError; |
| 1428 } | 1474 } |
| 1429 | 1475 |
| 1430 error::Error GLES2DecoderPassthroughImpl::DoGetUniformLocation( | 1476 error::Error GLES2DecoderPassthroughImpl::DoGetUniformLocation( |
| 1431 GLuint program, | 1477 GLuint program, |
| 1432 const char* name, | 1478 const char* name, |
| 1433 GLint* location) { | 1479 GLint* location) { |
| 1434 *location = | 1480 *location = |
| 1435 glGetUniformLocation(GetProgramServiceID(program, resources_), name); | 1481 glGetUniformLocation(GetProgramServiceID(program, resources_), name); |
| 1436 return error::kNoError; | 1482 return error::kNoError; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1528 return error::kNoError; | 1574 return error::kNoError; |
| 1529 } | 1575 } |
| 1530 std::vector<GLenum> attachments_copy(attachments, attachments + count); | 1576 std::vector<GLenum> attachments_copy(attachments, attachments + count); |
| 1531 glInvalidateSubFramebuffer(target, count, attachments_copy.data(), x, y, | 1577 glInvalidateSubFramebuffer(target, count, attachments_copy.data(), x, y, |
| 1532 width, height); | 1578 width, height); |
| 1533 return error::kNoError; | 1579 return error::kNoError; |
| 1534 } | 1580 } |
| 1535 | 1581 |
| 1536 error::Error GLES2DecoderPassthroughImpl::DoIsBuffer(GLuint buffer, | 1582 error::Error GLES2DecoderPassthroughImpl::DoIsBuffer(GLuint buffer, |
| 1537 uint32_t* result) { | 1583 uint32_t* result) { |
| 1538 NOTIMPLEMENTED(); | |
| 1539 *result = glIsBuffer(GetBufferServiceID(buffer, resources_, false)); | 1584 *result = glIsBuffer(GetBufferServiceID(buffer, resources_, false)); |
| 1540 return error::kNoError; | 1585 return error::kNoError; |
| 1541 } | 1586 } |
| 1542 | 1587 |
| 1543 error::Error GLES2DecoderPassthroughImpl::DoIsEnabled(GLenum cap, | 1588 error::Error GLES2DecoderPassthroughImpl::DoIsEnabled(GLenum cap, |
| 1544 uint32_t* result) { | 1589 uint32_t* result) { |
| 1545 *result = glIsEnabled(cap); | 1590 *result = glIsEnabled(cap); |
| 1546 return error::kNoError; | 1591 return error::kNoError; |
| 1547 } | 1592 } |
| 1548 | 1593 |
| 1549 error::Error GLES2DecoderPassthroughImpl::DoIsFramebuffer(GLuint framebuffer, | 1594 error::Error GLES2DecoderPassthroughImpl::DoIsFramebuffer(GLuint framebuffer, |
| 1550 uint32_t* result) { | 1595 uint32_t* result) { |
| 1551 *result = glIsFramebufferEXT( | 1596 *result = glIsFramebufferEXT( |
| 1552 GetFramebufferServiceID(framebuffer, &framebuffer_id_map_, false)); | 1597 GetFramebufferServiceID(framebuffer, &framebuffer_id_map_, false)); |
| 1553 return error::kNoError; | 1598 return error::kNoError; |
| 1554 } | 1599 } |
| 1555 | 1600 |
| 1556 error::Error GLES2DecoderPassthroughImpl::DoIsProgram(GLuint program, | 1601 error::Error GLES2DecoderPassthroughImpl::DoIsProgram(GLuint program, |
| 1557 uint32_t* result) { | 1602 uint32_t* result) { |
| 1558 *result = glIsProgram(GetProgramServiceID(program, resources_)); | 1603 *result = glIsProgram(GetProgramServiceID(program, resources_)); |
| 1559 return error::kNoError; | 1604 return error::kNoError; |
| 1560 } | 1605 } |
| 1561 | 1606 |
| 1562 error::Error GLES2DecoderPassthroughImpl::DoIsRenderbuffer(GLuint renderbuffer, | 1607 error::Error GLES2DecoderPassthroughImpl::DoIsRenderbuffer(GLuint renderbuffer, |
| 1563 uint32_t* result) { | 1608 uint32_t* result) { |
| 1564 NOTIMPLEMENTED(); | |
| 1565 *result = glIsRenderbufferEXT( | 1609 *result = glIsRenderbufferEXT( |
| 1566 GetRenderbufferServiceID(renderbuffer, resources_, false)); | 1610 GetRenderbufferServiceID(renderbuffer, resources_, false)); |
| 1567 return error::kNoError; | 1611 return error::kNoError; |
| 1568 } | 1612 } |
| 1569 | 1613 |
| 1570 error::Error GLES2DecoderPassthroughImpl::DoIsSampler(GLuint sampler, | 1614 error::Error GLES2DecoderPassthroughImpl::DoIsSampler(GLuint sampler, |
| 1571 uint32_t* result) { | 1615 uint32_t* result) { |
| 1572 *result = glIsSampler(GetSamplerServiceID(sampler, resources_)); | 1616 *result = glIsSampler(GetSamplerServiceID(sampler, resources_)); |
| 1573 return error::kNoError; | 1617 return error::kNoError; |
| 1574 } | 1618 } |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1715 GLsizei height) { | 1759 GLsizei height) { |
| 1716 glScissor(x, y, width, height); | 1760 glScissor(x, y, width, height); |
| 1717 return error::kNoError; | 1761 return error::kNoError; |
| 1718 } | 1762 } |
| 1719 | 1763 |
| 1720 error::Error GLES2DecoderPassthroughImpl::DoShaderBinary(GLsizei n, | 1764 error::Error GLES2DecoderPassthroughImpl::DoShaderBinary(GLsizei n, |
| 1721 const GLuint* shaders, | 1765 const GLuint* shaders, |
| 1722 GLenum binaryformat, | 1766 GLenum binaryformat, |
| 1723 const void* binary, | 1767 const void* binary, |
| 1724 GLsizei length) { | 1768 GLsizei length) { |
| 1725 NOTIMPLEMENTED(); | 1769 std::vector<GLuint> service_shaders(n, 0); |
| 1770 for (GLsizei i = 0; i < n; i++) { | |
| 1771 service_shaders[i] = GetShaderServiceID(shaders[i], resources_); | |
| 1772 } | |
| 1773 glShaderBinary(n, service_shaders.data(), binaryformat, binary, length); | |
| 1726 return error::kNoError; | 1774 return error::kNoError; |
| 1727 } | 1775 } |
| 1728 | 1776 |
| 1729 error::Error GLES2DecoderPassthroughImpl::DoShaderSource(GLuint shader, | 1777 error::Error GLES2DecoderPassthroughImpl::DoShaderSource(GLuint shader, |
| 1730 GLsizei count, | 1778 GLsizei count, |
| 1731 const char** string, | 1779 const char** string, |
| 1732 const GLint* length) { | 1780 const GLint* length) { |
| 1733 glShaderSource(GetShaderServiceID(shader, resources_), count, string, length); | 1781 glShaderSource(GetShaderServiceID(shader, resources_), count, string, length); |
| 1734 return error::kNoError; | 1782 return error::kNoError; |
| 1735 } | 1783 } |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2373 return error::kNoError; | 2421 return error::kNoError; |
| 2374 } | 2422 } |
| 2375 | 2423 |
| 2376 error::Error GLES2DecoderPassthroughImpl::DoFramebufferTexture2DMultisampleEXT( | 2424 error::Error GLES2DecoderPassthroughImpl::DoFramebufferTexture2DMultisampleEXT( |
| 2377 GLenum target, | 2425 GLenum target, |
| 2378 GLenum attachment, | 2426 GLenum attachment, |
| 2379 GLenum textarget, | 2427 GLenum textarget, |
| 2380 GLuint texture, | 2428 GLuint texture, |
| 2381 GLint level, | 2429 GLint level, |
| 2382 GLsizei samples) { | 2430 GLsizei samples) { |
| 2383 NOTIMPLEMENTED(); | 2431 glFramebufferTexture2DMultisampleEXT( |
| 2432 target, attachment, textarget, | |
| 2433 GetTextureServiceID(texture, resources_, false), level, samples); | |
| 2384 return error::kNoError; | 2434 return error::kNoError; |
| 2385 } | 2435 } |
| 2386 | 2436 |
| 2387 error::Error GLES2DecoderPassthroughImpl::DoTexStorage2DEXT( | 2437 error::Error GLES2DecoderPassthroughImpl::DoTexStorage2DEXT( |
| 2388 GLenum target, | 2438 GLenum target, |
| 2389 GLsizei levels, | 2439 GLsizei levels, |
| 2390 GLenum internalFormat, | 2440 GLenum internalFormat, |
| 2391 GLsizei width, | 2441 GLsizei width, |
| 2392 GLsizei height) { | 2442 GLsizei height) { |
| 2393 glTexStorage2DEXT(target, levels, internalFormat, width, height); | 2443 glTexStorage2DEXT(target, levels, internalFormat, width, height); |
| (...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3908 } | 3958 } |
| 3909 | 3959 |
| 3910 error::Error GLES2DecoderPassthroughImpl::DoSetEnableDCLayersCHROMIUM( | 3960 error::Error GLES2DecoderPassthroughImpl::DoSetEnableDCLayersCHROMIUM( |
| 3911 GLboolean enable) { | 3961 GLboolean enable) { |
| 3912 NOTIMPLEMENTED(); | 3962 NOTIMPLEMENTED(); |
| 3913 return error::kNoError; | 3963 return error::kNoError; |
| 3914 } | 3964 } |
| 3915 | 3965 |
| 3916 } // namespace gles2 | 3966 } // namespace gles2 |
| 3917 } // namespace gpu | 3967 } // namespace gpu |
| OLD | NEW |