From 89c3d6a2a370997e5ba502a37d1065534e0b2992 Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 15 Aug 2018 21:24:04 -0400 Subject: gl_rasterizer_cache: Treat Depth formats differently from DepthStencil. --- .../renderer_opengl/gl_rasterizer_cache.cpp | 18 ++++++++-------- .../renderer_opengl/gl_rasterizer_cache.h | 24 ++++++++++++++-------- 2 files changed, 26 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index b6947b97b..ac4db82cf 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -142,14 +142,16 @@ static constexpr std::array tex_form {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false}, // RG32UI {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 {GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm, false}, // Z24S8 {GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, ComponentType::UNorm, - 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 + false}, // S8Z24 {GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, ComponentType::Float, false}, // Z32FS8 }}; @@ -283,10 +285,10 @@ static constexpr std::array&, Tegra::GPU MortonCopy, MortonCopy, MortonCopy, - MortonCopy, - MortonCopy, MortonCopy, MortonCopy, + MortonCopy, + MortonCopy, MortonCopy, // clang-format on }; @@ -339,10 +341,10 @@ static constexpr std::array&, Tegra::GPU MortonCopy, MortonCopy, MortonCopy, - MortonCopy, - MortonCopy, MortonCopy, MortonCopy, + MortonCopy, + MortonCopy, MortonCopy, // clang-format on }; diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 55cf3782c..beec01746 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h @@ -68,11 +68,15 @@ struct SurfaceParams { MaxColorFormat, + // Depth formats + Z32F = 42, + Z16 = 43, + + MaxDepthFormat, + // DepthStencil formats - Z24S8 = 42, - S8Z24 = 43, - Z32F = 44, - Z16 = 45, + Z24S8 = 44, + S8Z24 = 45, Z32FS8 = 46, MaxDepthStencilFormat, @@ -153,10 +157,10 @@ struct SurfaceParams { 1, // RG8S 1, // RG32UI 1, // R32UI - 1, // Z24S8 - 1, // S8Z24 1, // Z32F 1, // Z16 + 1, // Z24S8 + 1, // S8Z24 1, // Z32FS8 }}; @@ -211,10 +215,10 @@ struct SurfaceParams { 16, // RG8S 64, // RG32UI 32, // R32UI - 32, // Z24S8 - 32, // S8Z24 32, // Z32F 16, // Z16 + 32, // Z24S8 + 32, // S8Z24 64, // Z32FS8 }}; @@ -587,6 +591,10 @@ struct SurfaceParams { return SurfaceType::ColorTexture; } + if (static_cast(pixel_format) < static_cast(PixelFormat::MaxDepthFormat)) { + return SurfaceType::Depth; + } + if (static_cast(pixel_format) < static_cast(PixelFormat::MaxDepthStencilFormat)) { return SurfaceType::DepthStencil; -- cgit v1.2.3