From 90a1b3348cd7a2ac4b0245d1f281a837e5e54c17 Mon Sep 17 00:00:00 2001 From: PixelyIon Date: Sat, 22 Jan 2022 06:21:51 +0530 Subject: [PATCH] Implement D24S8 + R11G11B10 Formats --- .../main/cpp/skyline/gpu/interconnect/graphics_context.h | 3 +++ app/src/main/cpp/skyline/gpu/texture/format.h | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h index c3831eac..7ffa265d 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h @@ -203,6 +203,7 @@ namespace skyline::gpu::interconnect { FORMAT_SAME_CASE(B5G6R5, Unorm); FORMAT_SAME_CASE(B5G5R5A1, Unorm); FORMAT_SAME_INT_FLOAT_CASE(R32); + FORMAT_SAME_CASE(R11G11B10, Float); FORMAT_SAME_NORM_INT_FLOAT_CASE(R16G16); FORMAT_SAME_CASE(R8G8B8A8, Unorm); FORMAT_SAME_CASE(R8G8B8A8, Srgb); @@ -253,6 +254,8 @@ namespace skyline::gpu::interconnect { return format::D32Float; case MaxwellDepthRtFormat::S8D24Unorm: return format::S8D24Unorm; + case MaxwellDepthRtFormat::D24S8Unorm: + return format::D24S8Unorm; default: throw exception("Cannot translate the supplied depth RT format: 0x{:X}", static_cast(format)); } diff --git a/app/src/main/cpp/skyline/gpu/texture/format.h b/app/src/main/cpp/skyline/gpu/texture/format.h index be336eab..c5cdb3c7 100644 --- a/app/src/main/cpp/skyline/gpu/texture/format.h +++ b/app/src/main/cpp/skyline/gpu/texture/format.h @@ -72,6 +72,11 @@ namespace skyline::gpu::format { FORMAT_INT_FLOAT(R32, 32, eR32); FORMAT_NORM_INT_FLOAT(R16G16, 32, eR16G16); FORMAT(B10G11R11Float, 32, eB10G11R11UfloatPack32); + FORMAT(R11G11B10Float, 32, eB10G11R11UfloatPack32, .swizzle = { + .red = swc::Blue, + .green = swc::Green, + .blue = swc::Red, + }); FORMAT_NORM_INT_SRGB(R8G8B8A8, 32, eR8G8B8A8); FORMAT_NORM_INT_SRGB(G8B8A8R8, 32, eB8G8R8A8, .swizzle = { .blue = swc::Alpha, @@ -149,6 +154,9 @@ namespace skyline::gpu::format { FORMAT(S8D24Unorm, 32, eD24UnormS8Uint, .vkAspect = { vka::eStencil | vka::eDepth }); // TODO: Swizzle Depth/Stencil + FORMAT(D24S8Unorm, 32, eD24UnormS8Uint, .vkAspect = { + vka::eStencil | vka::eDepth + }); #undef FORMAT #undef FORMAT_SUFF_UNORM_SRGB