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 here so other GLES2 related files can have a common set of | 5 // This file is here so other GLES2 related files can have a common set of |
6 // includes where appropriate. | 6 // includes where appropriate. |
7 | 7 |
8 #include <sstream> | 8 #include <sstream> |
9 #include <GLES2/gl2.h> | 9 #include <GLES2/gl2.h> |
10 #include <GLES2/gl2ext.h> | 10 #include <GLES2/gl2ext.h> |
(...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 case GL_RG16UI: | 1182 case GL_RG16UI: |
1183 case GL_RG16I: | 1183 case GL_RG16I: |
1184 case GL_RG32UI: | 1184 case GL_RG32UI: |
1185 case GL_RG32I: | 1185 case GL_RG32I: |
1186 return kRed | kGreen; | 1186 return kRed | kGreen; |
1187 default: | 1187 default: |
1188 return 0x0000; | 1188 return 0x0000; |
1189 } | 1189 } |
1190 } | 1190 } |
1191 | 1191 |
| 1192 bool GLES2Util::IsSizedColorFormat(uint32_t internal_format) { |
| 1193 switch (internal_format) { |
| 1194 case GL_ALPHA16F_EXT: |
| 1195 case GL_ALPHA32F_EXT: |
| 1196 case GL_RGB8: |
| 1197 case GL_RGB565: |
| 1198 case GL_RGB16F: |
| 1199 case GL_RGB32F: |
| 1200 case GL_SRGB8: |
| 1201 case GL_RGB8_SNORM: |
| 1202 case GL_R11F_G11F_B10F: |
| 1203 case GL_RGB9_E5: |
| 1204 case GL_RGB8UI: |
| 1205 case GL_RGB8I: |
| 1206 case GL_RGB16UI: |
| 1207 case GL_RGB16I: |
| 1208 case GL_RGB32UI: |
| 1209 case GL_RGB32I: |
| 1210 case GL_BGRA8_EXT: |
| 1211 case GL_RGBA16F: |
| 1212 case GL_RGBA32F: |
| 1213 case GL_RGBA8_OES: |
| 1214 case GL_RGBA4: |
| 1215 case GL_RGB5_A1: |
| 1216 case GL_SRGB8_ALPHA8: |
| 1217 case GL_RGBA8_SNORM: |
| 1218 case GL_RGB10_A2: |
| 1219 case GL_RGBA8UI: |
| 1220 case GL_RGBA8I: |
| 1221 case GL_RGB10_A2UI: |
| 1222 case GL_RGBA16UI: |
| 1223 case GL_RGBA16I: |
| 1224 case GL_RGBA32UI: |
| 1225 case GL_RGBA32I: |
| 1226 case GL_R8: |
| 1227 case GL_R8_SNORM: |
| 1228 case GL_R16F: |
| 1229 case GL_R32F: |
| 1230 case GL_R8UI: |
| 1231 case GL_R8I: |
| 1232 case GL_R16UI: |
| 1233 case GL_R16I: |
| 1234 case GL_R32UI: |
| 1235 case GL_R32I: |
| 1236 case GL_RG8: |
| 1237 case GL_RG8_SNORM: |
| 1238 case GL_RG16F: |
| 1239 case GL_RG32F: |
| 1240 case GL_RG8UI: |
| 1241 case GL_RG8I: |
| 1242 case GL_RG16UI: |
| 1243 case GL_RG16I: |
| 1244 case GL_RG32UI: |
| 1245 case GL_RG32I: |
| 1246 return true; |
| 1247 default: |
| 1248 return false; |
| 1249 } |
| 1250 } |
| 1251 |
| 1252 void GLES2Util::GetColorFormatComponentSizes( |
| 1253 uint32_t internal_format, uint32_t type, int* r, int* g, int* b, int* a) { |
| 1254 DCHECK(r && g && b && a); |
| 1255 *r = 0; |
| 1256 *g = 0; |
| 1257 *b = 0; |
| 1258 *a = 0; |
| 1259 |
| 1260 // Unsized formats. |
| 1261 switch (internal_format) { |
| 1262 case GL_RGB: |
| 1263 switch (type) { |
| 1264 case GL_UNSIGNED_BYTE: |
| 1265 internal_format = GL_RGB8; |
| 1266 break; |
| 1267 case GL_UNSIGNED_SHORT_5_6_5: |
| 1268 internal_format = GL_RGB565; |
| 1269 break; |
| 1270 case GL_HALF_FLOAT_OES: |
| 1271 internal_format = GL_RGB16F; |
| 1272 break; |
| 1273 case GL_FLOAT: |
| 1274 internal_format = GL_RGB32F; |
| 1275 return; |
| 1276 default: |
| 1277 NOTREACHED(); |
| 1278 break; |
| 1279 } |
| 1280 break; |
| 1281 case GL_RGBA: |
| 1282 switch (type) { |
| 1283 case GL_UNSIGNED_BYTE: |
| 1284 internal_format = GL_RGBA8; |
| 1285 break; |
| 1286 case GL_UNSIGNED_SHORT_4_4_4_4: |
| 1287 internal_format = GL_RGBA4; |
| 1288 break; |
| 1289 case GL_UNSIGNED_SHORT_5_5_5_1: |
| 1290 internal_format = GL_RGB5_A1; |
| 1291 break; |
| 1292 case GL_HALF_FLOAT_OES: |
| 1293 internal_format = GL_RGBA16F; |
| 1294 break; |
| 1295 case GL_FLOAT: |
| 1296 internal_format = GL_RGBA32F; |
| 1297 return; |
| 1298 default: |
| 1299 NOTREACHED(); |
| 1300 break; |
| 1301 } |
| 1302 break; |
| 1303 case GL_ALPHA: |
| 1304 switch (type) { |
| 1305 case GL_UNSIGNED_BYTE: |
| 1306 *a = 8; |
| 1307 return; |
| 1308 case GL_HALF_FLOAT_OES: |
| 1309 *a = 16; |
| 1310 return; |
| 1311 case GL_FLOAT: |
| 1312 *a = 32; |
| 1313 return; |
| 1314 default: |
| 1315 NOTREACHED(); |
| 1316 break; |
| 1317 } |
| 1318 break; |
| 1319 case GL_LUMINANCE: |
| 1320 switch (type) { |
| 1321 case GL_UNSIGNED_BYTE: |
| 1322 // It can be RGBA8, RGB8, RG8, or R8. |
| 1323 // Here we only require R8, which is good enough for validation. |
| 1324 // Same for other types. |
| 1325 internal_format = GL_R8; |
| 1326 break; |
| 1327 case GL_HALF_FLOAT_OES: |
| 1328 internal_format = GL_R16F; |
| 1329 break; |
| 1330 case GL_FLOAT: |
| 1331 internal_format = GL_R32F; |
| 1332 return; |
| 1333 default: |
| 1334 NOTREACHED(); |
| 1335 break; |
| 1336 } |
| 1337 break; |
| 1338 case GL_LUMINANCE_ALPHA: |
| 1339 switch (type) { |
| 1340 case GL_UNSIGNED_BYTE: |
| 1341 internal_format = GL_RGBA8; |
| 1342 break; |
| 1343 case GL_HALF_FLOAT_OES: |
| 1344 internal_format = GL_RGBA16F; |
| 1345 break; |
| 1346 case GL_FLOAT: |
| 1347 internal_format = GL_RGBA32F; |
| 1348 return; |
| 1349 default: |
| 1350 NOTREACHED(); |
| 1351 break; |
| 1352 } |
| 1353 break; |
| 1354 case GL_RED: |
| 1355 switch (type) { |
| 1356 case GL_UNSIGNED_BYTE: |
| 1357 internal_format = GL_R8; |
| 1358 break; |
| 1359 case GL_HALF_FLOAT_OES: |
| 1360 internal_format = GL_R16F; |
| 1361 break; |
| 1362 case GL_FLOAT: |
| 1363 internal_format = GL_R32F; |
| 1364 return; |
| 1365 default: |
| 1366 NOTREACHED(); |
| 1367 break; |
| 1368 } |
| 1369 break; |
| 1370 case GL_RG: |
| 1371 switch (type) { |
| 1372 case GL_UNSIGNED_BYTE: |
| 1373 internal_format = GL_RG8; |
| 1374 break; |
| 1375 case GL_HALF_FLOAT_OES: |
| 1376 internal_format = GL_RG16F; |
| 1377 break; |
| 1378 case GL_FLOAT: |
| 1379 internal_format = GL_RG32F; |
| 1380 return; |
| 1381 default: |
| 1382 NOTREACHED(); |
| 1383 break; |
| 1384 } |
| 1385 break; |
| 1386 case GL_SRGB_EXT: |
| 1387 switch (type) { |
| 1388 case GL_UNSIGNED_BYTE: |
| 1389 internal_format = GL_SRGB8; |
| 1390 break; |
| 1391 default: |
| 1392 NOTREACHED(); |
| 1393 break; |
| 1394 } |
| 1395 break; |
| 1396 case GL_SRGB_ALPHA_EXT: |
| 1397 switch (type) { |
| 1398 case GL_UNSIGNED_BYTE: |
| 1399 internal_format = GL_SRGB8_ALPHA8; |
| 1400 break; |
| 1401 default: |
| 1402 NOTREACHED(); |
| 1403 break; |
| 1404 } |
| 1405 break; |
| 1406 case GL_BGRA_EXT: |
| 1407 switch (type) { |
| 1408 case GL_UNSIGNED_BYTE: |
| 1409 internal_format = GL_BGRA8_EXT; |
| 1410 break; |
| 1411 default: |
| 1412 NOTREACHED(); |
| 1413 break; |
| 1414 } |
| 1415 break; |
| 1416 default: |
| 1417 break; |
| 1418 } |
| 1419 |
| 1420 // Sized formats. |
| 1421 switch (internal_format) { |
| 1422 case GL_RGB8_OES: |
| 1423 case GL_SRGB8: |
| 1424 case GL_RGB8_SNORM: |
| 1425 case GL_RGB8UI: |
| 1426 case GL_RGB8I: |
| 1427 *r = 8; |
| 1428 *g = 8; |
| 1429 *b = 8; |
| 1430 break; |
| 1431 case GL_RGB565: |
| 1432 *r = 5; |
| 1433 *g = 6; |
| 1434 *b = 5; |
| 1435 break; |
| 1436 case GL_RGB16F: |
| 1437 case GL_RGB16UI: |
| 1438 case GL_RGB16I: |
| 1439 *r = 16; |
| 1440 *g = 16; |
| 1441 *b = 16; |
| 1442 break; |
| 1443 case GL_RGB32F: |
| 1444 case GL_RGB32UI: |
| 1445 case GL_RGB32I: |
| 1446 *r = 32; |
| 1447 *g = 32; |
| 1448 *b = 32; |
| 1449 break; |
| 1450 case GL_R11F_G11F_B10F: |
| 1451 *r = 11; |
| 1452 *g = 11; |
| 1453 *b = 10; |
| 1454 break; |
| 1455 case GL_RGB9_E5: |
| 1456 *r = 9; |
| 1457 *g = 9; |
| 1458 *b = 9; |
| 1459 break; |
| 1460 case GL_BGRA8_EXT: |
| 1461 case GL_RGBA8: |
| 1462 case GL_SRGB8_ALPHA8: |
| 1463 case GL_RGBA8_SNORM: |
| 1464 case GL_RGBA8UI: |
| 1465 case GL_RGBA8I: |
| 1466 *r = 8; |
| 1467 *g = 8; |
| 1468 *b = 8; |
| 1469 *a = 8; |
| 1470 break; |
| 1471 case GL_RGBA16F_EXT: |
| 1472 case GL_RGBA16UI: |
| 1473 case GL_RGBA16I: |
| 1474 *r = 16; |
| 1475 *g = 16; |
| 1476 *b = 16; |
| 1477 *a = 16; |
| 1478 break; |
| 1479 case GL_RGBA32F_EXT: |
| 1480 case GL_RGBA32UI: |
| 1481 case GL_RGBA32I: |
| 1482 *r = 32; |
| 1483 *g = 32; |
| 1484 *b = 32; |
| 1485 *a = 32; |
| 1486 break; |
| 1487 case GL_RGBA4: |
| 1488 *r = 4; |
| 1489 *g = 4; |
| 1490 *b = 4; |
| 1491 *a = 4; |
| 1492 break; |
| 1493 case GL_RGB5_A1: |
| 1494 *r = 5; |
| 1495 *g = 5; |
| 1496 *b = 5; |
| 1497 *a = 1; |
| 1498 break; |
| 1499 case GL_RGB10_A2: |
| 1500 case GL_RGB10_A2UI: |
| 1501 *r = 10; |
| 1502 *g = 10; |
| 1503 *b = 10; |
| 1504 *a = 2; |
| 1505 break; |
| 1506 case GL_R8: |
| 1507 case GL_R8_SNORM: |
| 1508 case GL_R8UI: |
| 1509 case GL_R8I: |
| 1510 *r = 8; |
| 1511 break; |
| 1512 case GL_R16F: |
| 1513 case GL_R16UI: |
| 1514 case GL_R16I: |
| 1515 *r = 16; |
| 1516 break; |
| 1517 case GL_R32F: |
| 1518 case GL_R32UI: |
| 1519 case GL_R32I: |
| 1520 *r = 32; |
| 1521 break; |
| 1522 case GL_RG8: |
| 1523 case GL_RG8_SNORM: |
| 1524 case GL_RG8UI: |
| 1525 case GL_RG8I: |
| 1526 *r = 8; |
| 1527 *g = 8; |
| 1528 break; |
| 1529 case GL_RG16F: |
| 1530 case GL_RG16UI: |
| 1531 case GL_RG16I: |
| 1532 *r = 16; |
| 1533 *g = 16; |
| 1534 break; |
| 1535 case GL_RG32F: |
| 1536 case GL_RG32UI: |
| 1537 case GL_RG32I: |
| 1538 *r = 32; |
| 1539 *g = 32; |
| 1540 break; |
| 1541 default: |
| 1542 NOTREACHED(); |
| 1543 break; |
| 1544 } |
| 1545 } |
| 1546 |
1192 uint32_t GLES2Util::GetChannelsNeededForAttachmentType( | 1547 uint32_t GLES2Util::GetChannelsNeededForAttachmentType( |
1193 int type, | 1548 int type, |
1194 uint32_t max_color_attachments) { | 1549 uint32_t max_color_attachments) { |
1195 switch (type) { | 1550 switch (type) { |
1196 case GL_DEPTH_ATTACHMENT: | 1551 case GL_DEPTH_ATTACHMENT: |
1197 return kDepth; | 1552 return kDepth; |
1198 case GL_STENCIL_ATTACHMENT: | 1553 case GL_STENCIL_ATTACHMENT: |
1199 return kStencil; | 1554 return kStencil; |
1200 case GL_DEPTH_STENCIL_ATTACHMENT: | 1555 case GL_DEPTH_STENCIL_ATTACHMENT: |
1201 return kDepth | kStencil; | 1556 return kDepth | kStencil; |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1519 } | 1874 } |
1520 | 1875 |
1521 return true; | 1876 return true; |
1522 } | 1877 } |
1523 | 1878 |
1524 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" | 1879 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" |
1525 | 1880 |
1526 } // namespace gles2 | 1881 } // namespace gles2 |
1527 } // namespace gpu | 1882 } // namespace gpu |
1528 | 1883 |
OLD | NEW |