From e97eb75b94800863108196b94bfcbc512a99d56b Mon Sep 17 00:00:00 2001 From: Triang3l Date: Sun, 4 Dec 2022 14:55:50 +0300 Subject: [PATCH] [Vulkan] Update variableMultisampleRate comments (actually supported) [ci skip] --- src/xenia/gpu/vulkan/vulkan_command_processor.cc | 2 -- src/xenia/gpu/vulkan/vulkan_render_target_cache.h | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/xenia/gpu/vulkan/vulkan_command_processor.cc b/src/xenia/gpu/vulkan/vulkan_command_processor.cc index e48115894..8df4af859 100644 --- a/src/xenia/gpu/vulkan/vulkan_command_processor.cc +++ b/src/xenia/gpu/vulkan/vulkan_command_processor.cc @@ -2532,8 +2532,6 @@ bool VulkanCommandProcessor::IssueDraw(xenos::PrimitiveType prim_type, // After all commands that may dispatch, copy or insert barriers, submit the // barriers (may end the render pass), and (re)enter the render pass before // drawing. - // TODO(Triang3l): Handle disabled variableMultisampleRate by restarting the - // render pass with no attachments if the sample count becomes different. SubmitBarriersAndEnterRenderTargetCacheRenderPass( render_target_cache_->last_update_render_pass(), render_target_cache_->last_update_framebuffer()); diff --git a/src/xenia/gpu/vulkan/vulkan_render_target_cache.h b/src/xenia/gpu/vulkan/vulkan_render_target_cache.h index c5032f82d..b151d622b 100644 --- a/src/xenia/gpu/vulkan/vulkan_render_target_cache.h +++ b/src/xenia/gpu/vulkan/vulkan_render_target_cache.h @@ -44,9 +44,13 @@ class VulkanRenderTargetCache final : public RenderTargetCache { // targets are different for 2x and 4x guest MSAA, pipelines because the // sample mask will have 2 samples excluded for 2x-as-4x). // This has effect only on the attachments, but even in cases when there - // are no attachments, it can be used to the sample count between + // are no attachments, it can be used to pass the sample count between // subsystems, for instance, to specify the desired number of samples to // use when there are no attachments in pipelines. + // Also, without attachments, using separate render passes for different + // sample counts ensures that if the variableMultisampleRate feature is + // not supported, no draws with different rasterization sample counts end + // up in one render pass. xenos::MsaaSamples msaa_samples : xenos::kMsaaSamplesBits; // 2 // << 0 is depth, << 1...4 is color. uint32_t depth_and_color_used : 1 + xenos::kMaxColorRenderTargets; // 7