Parcourir la source

vk_rasterizer: Fix framebuffer creation validation errors

Framebuffer creation was ignoring the number of color attachments.
ReinUsesLisp il y a 6 ans
Parent
commit
3e35101895
1 fichiers modifiés avec 4 ajouts et 2 suppressions
  1. 4 2
      src/video_core/renderer_vulkan/vk_rasterizer.cpp

+ 4 - 2
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@@ -692,7 +692,7 @@ std::tuple<VkFramebuffer, VkExtent2D> RasterizerVulkan::ConfigureFramebuffers(
     FramebufferCacheKey key{renderpass, std::numeric_limits<u32>::max(),
                             std::numeric_limits<u32>::max(), std::numeric_limits<u32>::max()};
 
-    const auto try_push = [&](const View& view) {
+    const auto try_push = [&key](const View& view) {
         if (!view) {
             return false;
         }
@@ -703,7 +703,9 @@ std::tuple<VkFramebuffer, VkExtent2D> RasterizerVulkan::ConfigureFramebuffers(
         return true;
     };
 
-    for (std::size_t index = 0; index < std::size(color_attachments); ++index) {
+    const auto& regs = system.GPU().Maxwell3D().regs;
+    const std::size_t num_attachments = static_cast<std::size_t>(regs.rt_control.count);
+    for (std::size_t index = 0; index < num_attachments; ++index) {
         if (try_push(color_attachments[index])) {
             texture_cache.MarkColorBufferInUse(index);
         }