Commit 3bd6e18d by Geoff Lang

Add ASTC compressed texture format info to the GL layer.

BUG=angleproject:1185 Change-Id: Ia0bbe85fe8fa2b6a55289ff291f30e215d7a3ba9 Reviewed-on: https://chromium-review.googlesource.com/301146Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 6c0b8dd6
...@@ -110,6 +110,8 @@ Extensions::Extensions() ...@@ -110,6 +110,8 @@ Extensions::Extensions()
textureCompressionDXT1(false), textureCompressionDXT1(false),
textureCompressionDXT3(false), textureCompressionDXT3(false),
textureCompressionDXT5(false), textureCompressionDXT5(false),
textureCompressionASTCHDR(false),
textureCompressionASTCLDR(false),
depthTextures(false), depthTextures(false),
textureStorage(false), textureStorage(false),
textureNPOT(false), textureNPOT(false),
...@@ -168,6 +170,8 @@ std::vector<std::string> Extensions::getStrings() const ...@@ -168,6 +170,8 @@ std::vector<std::string> Extensions::getStrings() const
InsertExtensionString("GL_EXT_texture_compression_dxt1", textureCompressionDXT1, &extensionStrings); InsertExtensionString("GL_EXT_texture_compression_dxt1", textureCompressionDXT1, &extensionStrings);
InsertExtensionString("GL_ANGLE_texture_compression_dxt3", textureCompressionDXT3, &extensionStrings); InsertExtensionString("GL_ANGLE_texture_compression_dxt3", textureCompressionDXT3, &extensionStrings);
InsertExtensionString("GL_ANGLE_texture_compression_dxt5", textureCompressionDXT5, &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_EXT_sRGB", sRGB, &extensionStrings); InsertExtensionString("GL_EXT_sRGB", sRGB, &extensionStrings);
InsertExtensionString("GL_ANGLE_depth_texture", depthTextures, &extensionStrings); InsertExtensionString("GL_ANGLE_depth_texture", depthTextures, &extensionStrings);
InsertExtensionString("GL_EXT_texture_storage", textureStorage, &extensionStrings); InsertExtensionString("GL_EXT_texture_storage", textureStorage, &extensionStrings);
...@@ -186,7 +190,7 @@ std::vector<std::string> Extensions::getStrings() const ...@@ -186,7 +190,7 @@ std::vector<std::string> Extensions::getStrings() const
InsertExtensionString("GL_OES_standard_derivatives", standardDerivatives, &extensionStrings); InsertExtensionString("GL_OES_standard_derivatives", standardDerivatives, &extensionStrings);
InsertExtensionString("GL_EXT_shader_texture_lod", shaderTextureLOD, &extensionStrings); InsertExtensionString("GL_EXT_shader_texture_lod", shaderTextureLOD, &extensionStrings);
InsertExtensionString("GL_NV_shader_framebuffer_fetch", NVshaderFramebufferFetch, &extensionStrings); InsertExtensionString("GL_NV_shader_framebuffer_fetch", NVshaderFramebufferFetch, &extensionStrings);
InsertExtensionString("GL_ARM_shader_framebuffer_fetch", ARMshaderFramebufferFetch,&extensionStrings); InsertExtensionString("GL_ARM_shader_framebuffer_fetch", ARMshaderFramebufferFetch, &extensionStrings);
InsertExtensionString("GL_EXT_shader_framebuffer_fetch", shaderFramebufferFetch, &extensionStrings); InsertExtensionString("GL_EXT_shader_framebuffer_fetch", shaderFramebufferFetch, &extensionStrings);
InsertExtensionString("GL_EXT_frag_depth", fragDepth, &extensionStrings); InsertExtensionString("GL_EXT_frag_depth", fragDepth, &extensionStrings);
InsertExtensionString("GL_ANGLE_texture_usage", textureUsage, &extensionStrings); InsertExtensionString("GL_ANGLE_texture_usage", textureUsage, &extensionStrings);
...@@ -357,6 +361,42 @@ static bool DetermineDXT5TextureSupport(const TextureCapsMap &textureCaps) ...@@ -357,6 +361,42 @@ static bool DetermineDXT5TextureSupport(const TextureCapsMap &textureCaps)
return GetFormatSupport(textureCaps, requiredFormats, true, true, false); 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_ANGLE_texture_compression_dxt5 // Check for GL_ANGLE_texture_compression_dxt5
static bool DetermineSRGBTextureSupport(const TextureCapsMap &textureCaps) static bool DetermineSRGBTextureSupport(const TextureCapsMap &textureCaps)
{ {
...@@ -410,6 +450,8 @@ void Extensions::setTextureExtensionSupport(const TextureCapsMap &textureCaps) ...@@ -410,6 +450,8 @@ void Extensions::setTextureExtensionSupport(const TextureCapsMap &textureCaps)
textureCompressionDXT1 = DetermineDXT1TextureSupport(textureCaps); textureCompressionDXT1 = DetermineDXT1TextureSupport(textureCaps);
textureCompressionDXT3 = DetermineDXT3TextureSupport(textureCaps); textureCompressionDXT3 = DetermineDXT3TextureSupport(textureCaps);
textureCompressionDXT5 = DetermineDXT5TextureSupport(textureCaps); textureCompressionDXT5 = DetermineDXT5TextureSupport(textureCaps);
textureCompressionASTCHDR = DetermineASTCTextureSupport(textureCaps);
textureCompressionASTCLDR = DetermineASTCTextureSupport(textureCaps);
sRGB = DetermineSRGBTextureSupport(textureCaps); sRGB = DetermineSRGBTextureSupport(textureCaps);
depthTextures = DetermineDepthTextureSupport(textureCaps); depthTextures = DetermineDepthTextureSupport(textureCaps);
colorBufferFloat = DetermineColorBufferFloatSupport(textureCaps); colorBufferFloat = DetermineColorBufferFloatSupport(textureCaps);
......
...@@ -80,6 +80,7 @@ struct Extensions ...@@ -80,6 +80,7 @@ struct Extensions
// GL_OES_texture_float, GL_OES_texture_float_linear // GL_OES_texture_float, GL_OES_texture_float_linear
// GL_EXT_texture_rg // GL_EXT_texture_rg
// GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5 // 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_EXT_sRGB // GL_EXT_sRGB
// GL_ANGLE_depth_texture // GL_ANGLE_depth_texture
// GL_EXT_color_buffer_float // GL_EXT_color_buffer_float
...@@ -138,6 +139,12 @@ struct Extensions ...@@ -138,6 +139,12 @@ struct Extensions
bool textureCompressionDXT3; bool textureCompressionDXT3;
bool textureCompressionDXT5; bool textureCompressionDXT5;
// GL_KHR_texture_compression_astc_hdr
bool textureCompressionASTCHDR;
// GL_KHR_texture_compression_astc_ldr
bool textureCompressionASTCLDR;
// GL_EXT_sRGB // GL_EXT_sRGB
// Implies that TextureCaps for GL_SRGB8_ALPHA8 and GL_SRGB8 exist // Implies that TextureCaps for GL_SRGB8_ALPHA8 and GL_SRGB8 exist
// TODO: Don't advertise this extension in ES3 // TODO: Don't advertise this extension in ES3
......
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