From 02eb015d36d3f7ab3a5621e30dde5f8ff2a44b36 Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Sun, 19 Apr 2026 11:03:32 -0700 Subject: [PATCH] renderer_vulkan: Derive framebuffer sample-count from attachments Derive the framebuffer sample-count from the input color and depth operands. Similar to how `res_scale` is determined. --- src/video_core/rasterizer_cache/framebuffer_base.h | 3 +-- src/video_core/rasterizer_cache/rasterizer_cache.h | 1 - src/video_core/renderer_vulkan/vk_texture_runtime.cpp | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/video_core/rasterizer_cache/framebuffer_base.h b/src/video_core/rasterizer_cache/framebuffer_base.h index f7387b79f..2f2545849 100644 --- a/src/video_core/rasterizer_cache/framebuffer_base.h +++ b/src/video_core/rasterizer_cache/framebuffer_base.h @@ -27,8 +27,7 @@ struct FramebufferParams { u32 color_level; u32 depth_level; bool shadow_rendering; - u8 sample_count; - INSERT_PADDING_BYTES(2); + INSERT_PADDING_BYTES(3); bool operator==(const FramebufferParams& params) const noexcept { return std::memcmp(this, ¶ms, sizeof(FramebufferParams)) == 0; diff --git a/src/video_core/rasterizer_cache/rasterizer_cache.h b/src/video_core/rasterizer_cache/rasterizer_cache.h index fbf53205a..b87a59ecb 100644 --- a/src/video_core/rasterizer_cache/rasterizer_cache.h +++ b/src/video_core/rasterizer_cache/rasterizer_cache.h @@ -780,7 +780,6 @@ FramebufferHelper RasterizerCache::GetFramebufferSurfaces(bool using_color .color_level = color_level, .depth_level = depth_level, .shadow_rendering = regs.framebuffer.IsShadowRendering(), - .sample_count = sample_count, }; auto [it, new_framebuffer] = framebuffers.try_emplace(fb_params); diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index 4df1a2a12..583b97cfb 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -1603,7 +1603,7 @@ Framebuffer::Framebuffer(TextureRuntime& runtime, const VideoCore::FramebufferPa Surface* color, Surface* depth) : VideoCore::FramebufferParams{params}, instance{runtime.GetInstance()}, res_scale{color ? color->res_scale : (depth ? depth->res_scale : 1u)}, - sample_count{params.sample_count} { + sample_count{color ? color->sample_count : (depth ? depth->sample_count : 1u)} { auto& renderpass_cache = runtime.GetRenderpassCache(); if (shadow_rendering && !color) { return;