Commit 60ad73dc by Geoff Lang

Add ASTC compressed texture format info to the GL layer.

BUG=angleproject:1185 Change-Id: Ie723687e0289812d6c2306589911b548ac321e22 Reviewed-on: https://chromium-review.googlesource.com/308491Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent d55d283c
......@@ -110,6 +110,8 @@ Extensions::Extensions()
textureCompressionDXT1(false),
textureCompressionDXT3(false),
textureCompressionDXT5(false),
textureCompressionASTCHDR(false),
textureCompressionASTCLDR(false),
depthTextures(false),
textureStorage(false),
textureNPOT(false),
......@@ -169,6 +171,8 @@ std::vector<std::string> Extensions::getStrings() const
InsertExtensionString("GL_EXT_texture_compression_dxt1", textureCompressionDXT1, &extensionStrings);
InsertExtensionString("GL_ANGLE_texture_compression_dxt3", textureCompressionDXT3, &extensionStrings);
InsertExtensionString("GL_ANGLE_texture_compression_dxt5", textureCompressionDXT5, &extensionStrings);
InsertExtensionString("GL_KHR_texture_compression_astc_hdr", textureCompressionASTCHDR, &extensionStrings);
InsertExtensionString("GL_KHR_texture_compression_astc_ldr", textureCompressionASTCLDR, &extensionStrings);
InsertExtensionString("GL_OES_compressed_ETC1_RGB8_texture", compressedETC1RGB8Texture, &extensionStrings);
InsertExtensionString("GL_EXT_sRGB", sRGB, &extensionStrings);
InsertExtensionString("GL_ANGLE_depth_texture", depthTextures, &extensionStrings);
......@@ -360,6 +364,42 @@ static bool DetermineDXT5TextureSupport(const TextureCapsMap &textureCaps)
return GetFormatSupport(textureCaps, requiredFormats, true, true, false);
}
// Check for GL_KHR_texture_compression_astc_hdr and GL_KHR_texture_compression_astc_ldr
static bool DetermineASTCTextureSupport(const TextureCapsMap &textureCaps)
{
std::vector<GLenum> requiredFormats;
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_4x4_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_5x4_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_5x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_6x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_6x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x8_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x8_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x10_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_12x10_KHR);
requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_12x12_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR);
requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR);
return GetFormatSupport(textureCaps, requiredFormats, true, true, false);
}
// Check for GL_ETC1_RGB8_OES
static bool DetermineETC1RGB8TextureSupport(const TextureCapsMap &textureCaps)
{
......@@ -422,6 +462,8 @@ void Extensions::setTextureExtensionSupport(const TextureCapsMap &textureCaps)
textureCompressionDXT1 = DetermineDXT1TextureSupport(textureCaps);
textureCompressionDXT3 = DetermineDXT3TextureSupport(textureCaps);
textureCompressionDXT5 = DetermineDXT5TextureSupport(textureCaps);
textureCompressionASTCHDR = DetermineASTCTextureSupport(textureCaps);
textureCompressionASTCLDR = textureCompressionASTCHDR;
compressedETC1RGB8Texture = DetermineETC1RGB8TextureSupport(textureCaps);
sRGB = DetermineSRGBTextureSupport(textureCaps);
depthTextures = DetermineDepthTextureSupport(textureCaps);
......
......@@ -80,6 +80,7 @@ struct Extensions
// GL_OES_texture_float, GL_OES_texture_float_linear
// GL_EXT_texture_rg
// GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5
// GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr
// GL_OES_compressed_ETC1_RGB8_texture
// GL_EXT_sRGB
// GL_ANGLE_depth_texture
......@@ -139,6 +140,12 @@ struct Extensions
bool textureCompressionDXT3;
bool textureCompressionDXT5;
// GL_KHR_texture_compression_astc_hdr
bool textureCompressionASTCHDR;
// GL_KHR_texture_compression_astc_ldr
bool textureCompressionASTCLDR;
// GL_OES_compressed_ETC1_RGB8_texture
// Implies that TextureCaps for GL_ETC1_RGB8_OES exist
bool compressedETC1RGB8Texture;
......
......@@ -1071,7 +1071,6 @@
1101 WIN : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage2d_invalid_size = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.teximage3d = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.texsubimage3d = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.compressedteximage3d_invalid_astc_target = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d_invalid_buffer_target = FAIL
1101 WIN : dEQP-GLES3.functional.negative_api.texture.texstorage2d = FAIL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment