yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

gl_rasterizer_cache: Treat Depth formats differently from DepthStencil.

This commit is contained in:
bunnei 2018-08-15 21:24:04 -04:00
parent 69236e5aff
commit 89c3d6a2a3
2 changed files with 26 additions and 16 deletions

View File

@ -142,14 +142,16 @@ static constexpr std::array<FormatTuple, SurfaceParams::MaxPixelFormat> tex_form
{GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false}, // RG32UI {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false}, // RG32UI
{GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false}, // R32UI {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false}, // R32UI
// Depth formats
{GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F
{GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, ComponentType::UNorm,
false}, // Z16
// DepthStencil formats // DepthStencil formats
{GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm, {GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm,
false}, // Z24S8 false}, // Z24S8
{GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm, {GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm,
false}, // S8Z24 false}, // S8Z24
{GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F
{GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, ComponentType::UNorm,
false}, // Z16
{GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, {GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
ComponentType::Float, false}, // Z32FS8 ComponentType::Float, false}, // Z32FS8
}}; }};
@ -283,10 +285,10 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU
MortonCopy<true, PixelFormat::RG8S>, MortonCopy<true, PixelFormat::RG8S>,
MortonCopy<true, PixelFormat::RG32UI>, MortonCopy<true, PixelFormat::RG32UI>,
MortonCopy<true, PixelFormat::R32UI>, MortonCopy<true, PixelFormat::R32UI>,
MortonCopy<true, PixelFormat::Z24S8>,
MortonCopy<true, PixelFormat::S8Z24>,
MortonCopy<true, PixelFormat::Z32F>, MortonCopy<true, PixelFormat::Z32F>,
MortonCopy<true, PixelFormat::Z16>, MortonCopy<true, PixelFormat::Z16>,
MortonCopy<true, PixelFormat::Z24S8>,
MortonCopy<true, PixelFormat::S8Z24>,
MortonCopy<true, PixelFormat::Z32FS8>, MortonCopy<true, PixelFormat::Z32FS8>,
// clang-format on // clang-format on
}; };
@ -339,10 +341,10 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU
MortonCopy<false, PixelFormat::RG8S>, MortonCopy<false, PixelFormat::RG8S>,
MortonCopy<false, PixelFormat::RG32UI>, MortonCopy<false, PixelFormat::RG32UI>,
MortonCopy<false, PixelFormat::R32UI>, MortonCopy<false, PixelFormat::R32UI>,
MortonCopy<false, PixelFormat::Z24S8>,
MortonCopy<false, PixelFormat::S8Z24>,
MortonCopy<false, PixelFormat::Z32F>, MortonCopy<false, PixelFormat::Z32F>,
MortonCopy<false, PixelFormat::Z16>, MortonCopy<false, PixelFormat::Z16>,
MortonCopy<false, PixelFormat::Z24S8>,
MortonCopy<false, PixelFormat::S8Z24>,
MortonCopy<false, PixelFormat::Z32FS8>, MortonCopy<false, PixelFormat::Z32FS8>,
// clang-format on // clang-format on
}; };

View File

@ -68,11 +68,15 @@ struct SurfaceParams {
MaxColorFormat, MaxColorFormat,
// Depth formats
Z32F = 42,
Z16 = 43,
MaxDepthFormat,
// DepthStencil formats // DepthStencil formats
Z24S8 = 42, Z24S8 = 44,
S8Z24 = 43, S8Z24 = 45,
Z32F = 44,
Z16 = 45,
Z32FS8 = 46, Z32FS8 = 46,
MaxDepthStencilFormat, MaxDepthStencilFormat,
@ -153,10 +157,10 @@ struct SurfaceParams {
1, // RG8S 1, // RG8S
1, // RG32UI 1, // RG32UI
1, // R32UI 1, // R32UI
1, // Z24S8
1, // S8Z24
1, // Z32F 1, // Z32F
1, // Z16 1, // Z16
1, // Z24S8
1, // S8Z24
1, // Z32FS8 1, // Z32FS8
}}; }};
@ -211,10 +215,10 @@ struct SurfaceParams {
16, // RG8S 16, // RG8S
64, // RG32UI 64, // RG32UI
32, // R32UI 32, // R32UI
32, // Z24S8
32, // S8Z24
32, // Z32F 32, // Z32F
16, // Z16 16, // Z16
32, // Z24S8
32, // S8Z24
64, // Z32FS8 64, // Z32FS8
}}; }};
@ -587,6 +591,10 @@ struct SurfaceParams {
return SurfaceType::ColorTexture; return SurfaceType::ColorTexture;
} }
if (static_cast<size_t>(pixel_format) < static_cast<size_t>(PixelFormat::MaxDepthFormat)) {
return SurfaceType::Depth;
}
if (static_cast<size_t>(pixel_format) < if (static_cast<size_t>(pixel_format) <
static_cast<size_t>(PixelFormat::MaxDepthStencilFormat)) { static_cast<size_t>(PixelFormat::MaxDepthStencilFormat)) {
return SurfaceType::DepthStencil; return SurfaceType::DepthStencil;