|
|
|
@ -314,6 +314,8 @@ static constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex
|
|
|
|
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_5X4_SRGB
|
|
|
|
|
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_5X5
|
|
|
|
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_5X5_SRGB
|
|
|
|
|
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_10X8
|
|
|
|
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_10X8_SRGB
|
|
|
|
|
|
|
|
|
|
// Depth formats
|
|
|
|
|
{GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F
|
|
|
|
@ -456,6 +458,8 @@ static constexpr GLConversionArray morton_to_gl_fns = {
|
|
|
|
|
MortonCopy<true, PixelFormat::ASTC_2D_5X4_SRGB>,
|
|
|
|
|
MortonCopy<true, PixelFormat::ASTC_2D_5X5>,
|
|
|
|
|
MortonCopy<true, PixelFormat::ASTC_2D_5X5_SRGB>,
|
|
|
|
|
MortonCopy<true, PixelFormat::ASTC_2D_10X8>,
|
|
|
|
|
MortonCopy<true, PixelFormat::ASTC_2D_10X8_SRGB>,
|
|
|
|
|
MortonCopy<true, PixelFormat::Z32F>,
|
|
|
|
|
MortonCopy<true, PixelFormat::Z16>,
|
|
|
|
|
MortonCopy<true, PixelFormat::Z24S8>,
|
|
|
|
@ -526,6 +530,8 @@ static constexpr GLConversionArray gl_to_morton_fns = {
|
|
|
|
|
nullptr,
|
|
|
|
|
nullptr,
|
|
|
|
|
nullptr,
|
|
|
|
|
nullptr,
|
|
|
|
|
nullptr,
|
|
|
|
|
MortonCopy<false, PixelFormat::Z32F>,
|
|
|
|
|
MortonCopy<false, PixelFormat::Z16>,
|
|
|
|
|
MortonCopy<false, PixelFormat::Z24S8>,
|
|
|
|
@ -932,7 +938,9 @@ static void ConvertFormatAsNeeded_LoadGLBuffer(std::vector<u8>& data, PixelForma
|
|
|
|
|
case PixelFormat::ASTC_2D_8X8_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_8X5_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_5X4_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_5X5_SRGB: {
|
|
|
|
|
case PixelFormat::ASTC_2D_5X5_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_10X8:
|
|
|
|
|
case PixelFormat::ASTC_2D_10X8_SRGB: {
|
|
|
|
|
// Convert ASTC pixel formats to RGBA8, as most desktop GPUs do not support ASTC.
|
|
|
|
|
u32 block_width{};
|
|
|
|
|
u32 block_height{};
|
|
|
|
@ -967,7 +975,11 @@ static void ConvertFormatAsNeeded_FlushGLBuffer(std::vector<u8>& data, PixelForm
|
|
|
|
|
case PixelFormat::ASTC_2D_4X4:
|
|
|
|
|
case PixelFormat::ASTC_2D_8X8:
|
|
|
|
|
case PixelFormat::ASTC_2D_4X4_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_8X8_SRGB: {
|
|
|
|
|
case PixelFormat::ASTC_2D_8X8_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_5X5:
|
|
|
|
|
case PixelFormat::ASTC_2D_5X5_SRGB:
|
|
|
|
|
case PixelFormat::ASTC_2D_10X8:
|
|
|
|
|
case PixelFormat::ASTC_2D_10X8_SRGB: {
|
|
|
|
|
LOG_CRITICAL(HW_GPU, "Conversion of format {} after texture flushing is not implemented",
|
|
|
|
|
static_cast<u32>(pixel_format));
|
|
|
|
|
UNREACHABLE();
|
|
|
|
|