summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar liamwhite2023-03-08 09:16:06 -0500
committerGravatar GitHub2023-03-08 09:16:06 -0500
commit3cf88a4d6ce9efd653ec9b49f1b06e3db4c81093 (patch)
tree81f921ed23f4926c5d3352ab804a0db029970a89 /src/video_core/renderer_vulkan
parentMerge pull request #9921 from liamwhite/override (diff)
parentCheck all swizzle components for red, not just [0], pass float border color r... (diff)
downloadyuzu-3cf88a4d6ce9efd653ec9b49f1b06e3db4c81093.tar.gz
yuzu-3cf88a4d6ce9efd653ec9b49f1b06e3db4c81093.tar.xz
yuzu-3cf88a4d6ce9efd653ec9b49f1b06e3db4c81093.zip
Merge pull request #9896 from Kelebek1/d24s8
Check all swizzle components for red, not just [0]
Diffstat (limited to 'src/video_core/renderer_vulkan')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp11
2 files changed, 8 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index f085d53a1..25965b684 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -1294,7 +1294,7 @@ void RasterizerVulkan::UpdateDepthBoundsTestEnable(Tegra::Engines::Maxwell3D::Re
1294 LOG_WARNING(Render_Vulkan, "Depth bounds is enabled but not supported"); 1294 LOG_WARNING(Render_Vulkan, "Depth bounds is enabled but not supported");
1295 enabled = false; 1295 enabled = false;
1296 } 1296 }
1297 scheduler.Record([enable = regs.depth_bounds_enable](vk::CommandBuffer cmdbuf) { 1297 scheduler.Record([enable = enabled](vk::CommandBuffer cmdbuf) {
1298 cmdbuf.SetDepthBoundsTestEnableEXT(enable); 1298 cmdbuf.SetDepthBoundsTestEnableEXT(enable);
1299 }); 1299 });
1300} 1300}
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index 8a204f93f..e013d1c60 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -189,13 +189,16 @@ constexpr VkBorderColor ConvertBorderColor(const std::array<float, 4>& color) {
189 if (info.IsRenderTarget()) { 189 if (info.IsRenderTarget()) {
190 return ImageAspectMask(info.format); 190 return ImageAspectMask(info.format);
191 } 191 }
192 const bool is_first = info.Swizzle()[0] == SwizzleSource::R; 192 bool any_r =
193 std::ranges::any_of(info.Swizzle(), [](SwizzleSource s) { return s == SwizzleSource::R; });
193 switch (info.format) { 194 switch (info.format) {
194 case PixelFormat::D24_UNORM_S8_UINT: 195 case PixelFormat::D24_UNORM_S8_UINT:
195 case PixelFormat::D32_FLOAT_S8_UINT: 196 case PixelFormat::D32_FLOAT_S8_UINT:
196 return is_first ? VK_IMAGE_ASPECT_DEPTH_BIT : VK_IMAGE_ASPECT_STENCIL_BIT; 197 // R = depth, G = stencil
198 return any_r ? VK_IMAGE_ASPECT_DEPTH_BIT : VK_IMAGE_ASPECT_STENCIL_BIT;
197 case PixelFormat::S8_UINT_D24_UNORM: 199 case PixelFormat::S8_UINT_D24_UNORM:
198 return is_first ? VK_IMAGE_ASPECT_STENCIL_BIT : VK_IMAGE_ASPECT_DEPTH_BIT; 200 // R = stencil, G = depth
201 return any_r ? VK_IMAGE_ASPECT_STENCIL_BIT : VK_IMAGE_ASPECT_DEPTH_BIT;
199 case PixelFormat::D16_UNORM: 202 case PixelFormat::D16_UNORM:
200 case PixelFormat::D32_FLOAT: 203 case PixelFormat::D32_FLOAT:
201 return VK_IMAGE_ASPECT_DEPTH_BIT; 204 return VK_IMAGE_ASPECT_DEPTH_BIT;
@@ -1769,7 +1772,7 @@ Sampler::Sampler(TextureCacheRuntime& runtime, const Tegra::Texture::TSCEntry& t
1769 .minLod = tsc.mipmap_filter == TextureMipmapFilter::None ? 0.0f : tsc.MinLod(), 1772 .minLod = tsc.mipmap_filter == TextureMipmapFilter::None ? 0.0f : tsc.MinLod(),
1770 .maxLod = tsc.mipmap_filter == TextureMipmapFilter::None ? 0.25f : tsc.MaxLod(), 1773 .maxLod = tsc.mipmap_filter == TextureMipmapFilter::None ? 0.25f : tsc.MaxLod(),
1771 .borderColor = 1774 .borderColor =
1772 arbitrary_borders ? VK_BORDER_COLOR_INT_CUSTOM_EXT : ConvertBorderColor(color), 1775 arbitrary_borders ? VK_BORDER_COLOR_FLOAT_CUSTOM_EXT : ConvertBorderColor(color),
1773 .unnormalizedCoordinates = VK_FALSE, 1776 .unnormalizedCoordinates = VK_FALSE,
1774 }); 1777 });
1775} 1778}