| 291 | } |
| 292 | |
| 293 | rdcfixedarray<uint32_t, 3> GetCompressedBlockSize(GLenum internalformat) |
| 294 | { |
| 295 | if(!IsCompressedFormat(internalformat)) |
| 296 | { |
| 297 | RDCERR("Not compressed format %s", ToStr(internalformat).c_str()); |
| 298 | return {1u, 1u, 1u}; |
| 299 | } |
| 300 | |
| 301 | uint32_t astc[3] = {0, 0, 1u}; |
| 302 | |
| 303 | switch(internalformat) |
| 304 | { |
| 305 | // BC1 |
| 306 | case eGL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
| 307 | case eGL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
| 308 | case eGL_COMPRESSED_SRGB_S3TC_DXT1_EXT: |
| 309 | case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: |
| 310 | // BC2 |
| 311 | case eGL_COMPRESSED_RGBA_S3TC_DXT3_EXT: |
| 312 | case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: |
| 313 | // BC3 |
| 314 | case eGL_COMPRESSED_RGBA_S3TC_DXT5_EXT: |
| 315 | case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: |
| 316 | // BC4 |
| 317 | case eGL_COMPRESSED_RED_RGTC1: |
| 318 | case eGL_COMPRESSED_SIGNED_RED_RGTC1: |
| 319 | // BC5 |
| 320 | case eGL_COMPRESSED_RG_RGTC2: |
| 321 | case eGL_COMPRESSED_SIGNED_RG_RGTC2: |
| 322 | // BC6 |
| 323 | case eGL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB: |
| 324 | case eGL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB: |
| 325 | // BC7 |
| 326 | case eGL_COMPRESSED_RGBA_BPTC_UNORM_ARB: |
| 327 | case eGL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB: |
| 328 | // ETC1 |
| 329 | case eGL_ETC1_RGB8_OES: |
| 330 | // ETC2 |
| 331 | case eGL_COMPRESSED_RGB8_ETC2: |
| 332 | case eGL_COMPRESSED_SRGB8_ETC2: |
| 333 | case eGL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: |
| 334 | case eGL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: |
| 335 | // EAC |
| 336 | case eGL_COMPRESSED_RGBA8_ETC2_EAC: |
| 337 | case eGL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: |
| 338 | case eGL_COMPRESSED_R11_EAC: |
| 339 | case eGL_COMPRESSED_SIGNED_R11_EAC: |
| 340 | case eGL_COMPRESSED_RG11_EAC: |
| 341 | case eGL_COMPRESSED_SIGNED_RG11_EAC: return {4u, 4u, 1u}; |
| 342 | // ASTC |
| 343 | case eGL_COMPRESSED_RGBA_ASTC_4x4_KHR: |
| 344 | case eGL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: |
| 345 | astc[0] = 4; |
| 346 | astc[1] = 4; |
| 347 | break; |
| 348 | case eGL_COMPRESSED_RGBA_ASTC_5x4_KHR: |
| 349 | case eGL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: |
| 350 | astc[0] = 5; |
no test coverage detected