From 266cca5654289a56ab34e8651549aca8c1b1d507 Mon Sep 17 00:00:00 2001 From: psucien Date: Sun, 1 Sep 2024 23:26:46 +0200 Subject: [PATCH] Promote textures to depth if they use depth tiling --- src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 1 - src/video_core/texture_cache/host_compatibility.h | 2 +- src/video_core/texture_cache/image_info.cpp | 2 +- src/video_core/texture_cache/texture_cache.cpp | 1 - 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index eec015827..ab025f758 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -448,7 +448,6 @@ void GraphicsPipeline::BindResources(const Liverpool::Regs& regs, const auto tsharp = image_desc.GetSharp(*stage); if (tsharp) { tsharps.emplace_back(tsharp); - VideoCore::ImageInfo image_info{tsharp}; VideoCore::ImageInfo image_info{tsharp, image_desc.is_depth}; VideoCore::ImageViewInfo view_info{tsharp, image_desc.is_storage}; const auto& image_view = texture_cache.FindTexture(image_info, view_info); diff --git a/src/video_core/texture_cache/host_compatibility.h b/src/video_core/texture_cache/host_compatibility.h index f36bc22ed..0b4b6764e 100644 --- a/src/video_core/texture_cache/host_compatibility.h +++ b/src/video_core/texture_cache/host_compatibility.h @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: GPL-2.0-or-later // Copyright © 2023 Skyline Team and Contributors (https://github.com/skyline-emu/) // Copyright © 2015-2023 The Khronos Group Inc. // Copyright © 2015-2023 Valve Corporation diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index fa7d92b43..bd4671688 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp @@ -204,7 +204,7 @@ ImageInfo::ImageInfo(const AmdGpu::Image& image, bool force_depth /*= false*/) n tiling_mode = image.GetTilingMode(); pixel_format = LiverpoolToVK::SurfaceFormat(image.GetDataFmt(), image.GetNumberFmt()); // Override format if image is forced to be a depth target - if (force_depth) { + if (force_depth || tiling_mode == AmdGpu::TilingMode::Depth_MacroTiled) { if (pixel_format == vk::Format::eR32Sfloat) { pixel_format = vk::Format::eD32SfloatS8Uint; } else if (pixel_format == vk::Format::eR16Sfloat) { diff --git a/src/video_core/texture_cache/texture_cache.cpp b/src/video_core/texture_cache/texture_cache.cpp index 776b25605..f8389c7d0 100644 --- a/src/video_core/texture_cache/texture_cache.cpp +++ b/src/video_core/texture_cache/texture_cache.cpp @@ -209,7 +209,6 @@ ImageId TextureCache::FindImage(const ImageInfo& info) { cache_image.info.size == info.size) { ASSERT(cache_image.info.type == info.type); - ASSERT(cache_image.info.num_bits == info.num_bits); if (IsVulkanFormatCompatible((VkFormat)info.pixel_format, (VkFormat)cache_image.info.pixel_format)) { image_id = cache_id;