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 switch (internal_format) { | |
1256 case GL_RGB: | |
1257 switch (type) { | |
1258 case GL_UNSIGNED_BYTE: | |
1259 internal_format = GL_RGB8; | |
1260 break; | |
1261 case GL_UNSIGNED_SHORT_5_6_5: | |
1262 internal_format = GL_RGB565; | |
1263 break; | |
1264 default: | |
1265 NOTREACHED(); | |
1266 break; | |
1267 } | |
1268 break; | |
1269 case GL_SRGB_EXT: | |
1270 switch (type) { | |
1271 case GL_UNSIGNED_BYTE: | |
1272 internal_format = GL_SRGB8; | |
1273 break; | |
1274 default: | |
1275 NOTREACHED(); | |
1276 break; | |
1277 } | |
1278 break; | |
1279 case GL_BGRA_EXT: | |
1280 switch (type) { | |
1281 case GL_UNSIGNED_BYTE: | |
1282 internal_format = GL_BGRA8_EXT; | |
1283 break; | |
1284 default: | |
1285 NOTREACHED(); | |
1286 break; | |
1287 } | |
1288 break; | |
1289 case GL_RGBA: | |
1290 switch (type) { | |
1291 case GL_UNSIGNED_BYTE: | |
1292 internal_format = GL_RGBA8; | |
1293 break; | |
1294 case GL_UNSIGNED_SHORT_4_4_4_4: | |
1295 internal_format = GL_RGBA4; | |
1296 break; | |
1297 case GL_UNSIGNED_SHORT_5_5_5_1: | |
1298 internal_format = GL_RGB5_A1; | |
1299 break; | |
1300 default: | |
1301 NOTREACHED(); | |
1302 break; | |
1303 } | |
1304 break; | |
1305 case GL_SRGB_ALPHA_EXT: | |
1306 switch (type) { | |
1307 case GL_UNSIGNED_BYTE: | |
1308 internal_format = GL_SRGB8_ALPHA8; | |
1309 break; | |
1310 default: | |
1311 NOTREACHED(); | |
1312 break; | |
1313 } | |
1314 break; | |
1315 case GL_LUMINANCE: | |
1316 switch (type) { | |
1317 case GL_UNSIGNED_BYTE: | |
1318 // It can be RGBA8, RGB8, RG8, or R8. | |
1319 // Here we only require R8, which is good enough for validation. | |
1320 internal_format = GL_R8; | |
1321 break; | |
1322 default: | |
1323 NOTREACHED(); | |
1324 break; | |
1325 } | |
1326 break; | |
1327 case GL_LUMINANCE_ALPHA: | |
1328 switch (type) { | |
1329 case GL_UNSIGNED_BYTE: | |
1330 internal_format = GL_RGBA8; | |
1331 break; | |
1332 default: | |
1333 NOTREACHED(); | |
1334 break; | |
1335 } | |
1336 break; | |
1337 default: | |
piman
2016/06/03 21:26:04
I think anything valid in FormatTypeValidator::kSu
Zhenyao Mo
2016/06/03 21:31:27
This is ES3 only, so all these extensions have bee
piman
2016/06/03 21:40:57
AFAICT, even if we enable ES3, we still enable e.g
| |
1338 break; | |
1339 } | |
1340 | |
1341 *r = 0; | |
1342 *g = 0; | |
1343 *b = 0; | |
1344 *a = 0; | |
1345 switch (internal_format) { | |
1346 case GL_RGB8_OES: | |
1347 case GL_SRGB8: | |
1348 case GL_RGB8_SNORM: | |
1349 case GL_RGB8UI: | |
1350 case GL_RGB8I: | |
1351 *r = 8; | |
1352 *g = 8; | |
1353 *b = 8; | |
1354 break; | |
1355 case GL_RGB565: | |
1356 *r = 5; | |
1357 *g = 6; | |
1358 *b = 5; | |
1359 break; | |
1360 case GL_RGB16F: | |
1361 case GL_RGB16UI: | |
1362 case GL_RGB16I: | |
1363 *r = 16; | |
1364 *g = 16; | |
1365 *b = 16; | |
1366 break; | |
1367 case GL_RGB32F: | |
1368 case GL_RGB32UI: | |
1369 case GL_RGB32I: | |
1370 *r = 32; | |
1371 *g = 32; | |
1372 *b = 32; | |
1373 break; | |
1374 case GL_R11F_G11F_B10F: | |
1375 *r = 11; | |
1376 *g = 11; | |
1377 *b = 10; | |
1378 break; | |
1379 case GL_RGB9_E5: | |
1380 *r = 9; | |
1381 *g = 9; | |
1382 *b = 9; | |
1383 break; | |
1384 case GL_BGRA8_EXT: | |
1385 case GL_RGBA8: | |
1386 case GL_SRGB8_ALPHA8: | |
1387 case GL_RGBA8_SNORM: | |
1388 case GL_RGBA8UI: | |
1389 case GL_RGBA8I: | |
1390 *r = 8; | |
1391 *g = 8; | |
1392 *b = 8; | |
1393 *a = 8; | |
1394 break; | |
1395 case GL_RGBA16F_EXT: | |
1396 case GL_RGBA16UI: | |
1397 case GL_RGBA16I: | |
1398 *r = 16; | |
1399 *g = 16; | |
1400 *b = 16; | |
1401 *a = 16; | |
1402 break; | |
1403 case GL_RGBA32F_EXT: | |
1404 case GL_RGBA32UI: | |
1405 case GL_RGBA32I: | |
1406 *r = 32; | |
1407 *g = 32; | |
1408 *b = 32; | |
1409 *a = 32; | |
1410 break; | |
1411 case GL_RGBA4: | |
1412 *r = 4; | |
1413 *g = 4; | |
1414 *b = 4; | |
1415 *a = 4; | |
1416 break; | |
1417 case GL_RGB5_A1: | |
1418 *r = 5; | |
1419 *g = 5; | |
1420 *b = 5; | |
1421 *a = 1; | |
1422 break; | |
1423 case GL_RGB10_A2: | |
1424 case GL_RGB10_A2UI: | |
1425 *r = 10; | |
1426 *g = 10; | |
1427 *b = 10; | |
1428 *a = 2; | |
1429 break; | |
1430 case GL_R8: | |
1431 case GL_R8_SNORM: | |
1432 case GL_R8UI: | |
1433 case GL_R8I: | |
1434 *r = 8; | |
1435 break; | |
1436 case GL_R16F: | |
1437 case GL_R16UI: | |
1438 case GL_R16I: | |
1439 *r = 16; | |
1440 break; | |
1441 case GL_R32F: | |
1442 case GL_R32UI: | |
1443 case GL_R32I: | |
1444 *r = 32; | |
1445 break; | |
1446 case GL_RG8: | |
1447 case GL_RG8_SNORM: | |
1448 case GL_RG8UI: | |
1449 case GL_RG8I: | |
1450 *r = 8; | |
1451 *g = 8; | |
1452 break; | |
1453 case GL_RG16F: | |
1454 case GL_RG16UI: | |
1455 case GL_RG16I: | |
1456 *r = 16; | |
1457 *g = 16; | |
1458 break; | |
1459 case GL_RG32F: | |
1460 case GL_RG32UI: | |
1461 case GL_RG32I: | |
1462 *r = 32; | |
1463 *g = 32; | |
1464 break; | |
1465 default: | |
1466 NOTREACHED(); | |
1467 break; | |
1468 } | |
1469 } | |
1470 | |
1192 uint32_t GLES2Util::GetChannelsNeededForAttachmentType( | 1471 uint32_t GLES2Util::GetChannelsNeededForAttachmentType( |
1193 int type, | 1472 int type, |
1194 uint32_t max_color_attachments) { | 1473 uint32_t max_color_attachments) { |
1195 switch (type) { | 1474 switch (type) { |
1196 case GL_DEPTH_ATTACHMENT: | 1475 case GL_DEPTH_ATTACHMENT: |
1197 return kDepth; | 1476 return kDepth; |
1198 case GL_STENCIL_ATTACHMENT: | 1477 case GL_STENCIL_ATTACHMENT: |
1199 return kStencil; | 1478 return kStencil; |
1200 case GL_DEPTH_STENCIL_ATTACHMENT: | 1479 case GL_DEPTH_STENCIL_ATTACHMENT: |
1201 return kDepth | kStencil; | 1480 return kDepth | kStencil; |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1519 } | 1798 } |
1520 | 1799 |
1521 return true; | 1800 return true; |
1522 } | 1801 } |
1523 | 1802 |
1524 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" | 1803 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" |
1525 | 1804 |
1526 } // namespace gles2 | 1805 } // namespace gles2 |
1527 } // namespace gpu | 1806 } // namespace gpu |
1528 | 1807 |
OLD | NEW |