|
|
@ -144,6 +144,7 @@ std::array<Device::BaseBindings, Tegra::Engines::MaxShaderTypes> BuildBaseBindin |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool IsASTCSupported() { |
|
|
bool IsASTCSupported() { |
|
|
|
|
|
static constexpr std::array targets = {GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY}; |
|
|
static constexpr std::array formats = { |
|
|
static constexpr std::array formats = { |
|
|
GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ASTC_5x4_KHR, |
|
|
GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ASTC_5x4_KHR, |
|
|
GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_COMPRESSED_RGBA_ASTC_6x5_KHR, |
|
|
GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_COMPRESSED_RGBA_ASTC_6x5_KHR, |
|
|
@ -160,12 +161,23 @@ bool IsASTCSupported() { |
|
|
GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, |
|
|
GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, |
|
|
GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, |
|
|
GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, |
|
|
}; |
|
|
}; |
|
|
return std::find_if_not(formats.begin(), formats.end(), [](GLenum format) { |
|
|
|
|
|
GLint supported; |
|
|
|
|
|
glGetInternalformativ(GL_TEXTURE_2D, format, GL_INTERNALFORMAT_SUPPORTED, 1, |
|
|
|
|
|
&supported); |
|
|
|
|
|
return supported == GL_TRUE; |
|
|
|
|
|
}) == formats.end(); |
|
|
|
|
|
|
|
|
static constexpr std::array required_support = { |
|
|
|
|
|
GL_VERTEX_TEXTURE, GL_TESS_CONTROL_TEXTURE, GL_TESS_EVALUATION_TEXTURE, |
|
|
|
|
|
GL_GEOMETRY_TEXTURE, GL_FRAGMENT_TEXTURE, GL_COMPUTE_TEXTURE, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
for (const GLenum target : targets) { |
|
|
|
|
|
for (const GLenum format : formats) { |
|
|
|
|
|
for (const GLenum support : required_support) { |
|
|
|
|
|
GLint value; |
|
|
|
|
|
glGetInternalformativ(GL_TEXTURE_2D, format, support, 1, &value); |
|
|
|
|
|
if (value != GL_FULL_SUPPORT) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} // Anonymous namespace
|
|
|
} // Anonymous namespace
|
|
|
|