From 4244a6418d779cb5299e70d93afc56c679b3756c Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Mon, 17 Aug 2026 17:57:13 -0400 Subject: [PATCH] Fix license header + removal of ternary on depth stencil routes for msaa uploads --- .../translate/impl/texture_fetch_swizzled.cpp | 3 +++ .../impl/texture_gather_swizzled.cpp | 3 +++ .../translate/impl/texture_load_swizzled.cpp | 3 +++ .../frontend/maxwell/translate_program.h | 3 +++ src/video_core/renderer_vulkan/blit_image.cpp | 10 ++++---- .../renderer_vulkan/vk_compute_pass.cpp | 24 ++++++++++++------- .../renderer_vulkan/vk_texture_cache.cpp | 13 +++++----- src/video_core/textures/texture.h | 3 +++ 8 files changed, 43 insertions(+), 19 deletions(-) diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp index 98e177a92e..032393226d 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_gather_swizzled.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_gather_swizzled.cpp index 4a27433739..54e0c6f597 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_gather_swizzled.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_gather_swizzled.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_load_swizzled.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_load_swizzled.cpp index 0fd7c1cda5..5a38292204 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_load_swizzled.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_load_swizzled.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/shader_recompiler/frontend/maxwell/translate_program.h b/src/shader_recompiler/frontend/maxwell/translate_program.h index 49d2800d08..23c7ba1bbf 100644 --- a/src/shader_recompiler/frontend/maxwell/translate_program.h +++ b/src/shader_recompiler/frontend/maxwell/translate_program.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/video_core/renderer_vulkan/blit_image.cpp b/src/video_core/renderer_vulkan/blit_image.cpp index 1f3d452e16..482c5d7255 100644 --- a/src/video_core/renderer_vulkan/blit_image.cpp +++ b/src/video_core/renderer_vulkan/blit_image.cpp @@ -1607,11 +1607,11 @@ void BlitImageHelper::CopyMSAADepth(RenderPassCache& render_pass_cache, VkImage MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, true, src_format).format; const VkFormat dst_vk_format = MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, true, dst_format).format; - const VkImageAspectFlags attachment_aspect = - VideoCore::Surface::GetFormatType(dst_format) == - VideoCore::Surface::SurfaceType::DepthStencil - ? VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT - : VK_IMAGE_ASPECT_DEPTH_BIT; + VkImageAspectFlags attachment_aspect = VK_IMAGE_ASPECT_DEPTH_BIT; + if (VideoCore::Surface::GetFormatType(dst_format) == + VideoCore::Surface::SurfaceType::DepthStencil) { + attachment_aspect |= VK_IMAGE_ASPECT_STENCIL_BIT; + } for (const VideoCommon::ImageCopy& copy : copies) { ASSERT(copy.src_subresource.base_layer == 0); ASSERT(copy.src_subresource.num_layers == 1); diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.cpp b/src/video_core/renderer_vulkan/vk_compute_pass.cpp index 7654d49aac..236ed51361 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pass.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pass.cpp @@ -1062,10 +1062,14 @@ void BlockLinearUnswizzle2DPass::Unswizzle( .layerCount = VK_REMAINING_ARRAY_LAYERS, }, }; - cmdbuf.PipelineBarrier(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | - (is_initialized ? vk::PIPELINE_STAGE_GRAPHICS_COMPUTE - : VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), - VK_PIPELINE_STAGE_TRANSFER_BIT, 0, {}, buffer_barrier, pre_copy); + VkPipelineStageFlags pre_copy_src_stages = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT; + if (is_initialized) { + pre_copy_src_stages |= vk::PIPELINE_STAGE_GRAPHICS_COMPUTE; + } else { + pre_copy_src_stages |= VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + } + cmdbuf.PipelineBarrier(pre_copy_src_stages, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, {}, + buffer_barrier, pre_copy); const VkBufferImageCopy copy{ .bufferOffset = out_offset, @@ -1306,10 +1310,14 @@ void BlockLinearUnswizzle3DBufferPass::Unswizzle( .layerCount = VK_REMAINING_ARRAY_LAYERS, }, }; - cmdbuf.PipelineBarrier(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | - (is_initialized ? vk::PIPELINE_STAGE_GRAPHICS_COMPUTE - : VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), - VK_PIPELINE_STAGE_TRANSFER_BIT, 0, {}, buffer_barrier, pre_copy); + VkPipelineStageFlags pre_copy_src_stages = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT; + if (is_initialized) { + pre_copy_src_stages |= vk::PIPELINE_STAGE_GRAPHICS_COMPUTE; + } else { + pre_copy_src_stages |= VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + } + cmdbuf.PipelineBarrier(pre_copy_src_stages, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, {}, + buffer_barrier, pre_copy); const VkBufferImageCopy copy{ .bufferOffset = out_offset, diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 2713840d60..3fea36a91c 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -1903,12 +1903,13 @@ void Image::UploadMemory(VkBuffer buffer, VkDeviceSize offset, const bool msaa_upload_copies_stencil = msaa_upload_is_depth && (aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT) != 0 && runtime->device.IsExtShaderStencilExportSupported(); - const VkImageAspectFlags upload_aspect_mask = - msaa_upload_is_depth - ? (msaa_upload_copies_stencil - ? VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT - : VK_IMAGE_ASPECT_DEPTH_BIT) - : aspect_mask; + VkImageAspectFlags upload_aspect_mask = aspect_mask; + if (msaa_upload_is_depth) { + upload_aspect_mask = VK_IMAGE_ASPECT_DEPTH_BIT; + if (msaa_upload_copies_stencil) { + upload_aspect_mask |= VK_IMAGE_ASPECT_STENCIL_BIT; + } + } ImageInfo temp_info = info; temp_info.num_samples = 1; diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h index 112885f0c3..9fc6a631bd 100644 --- a/src/video_core/textures/texture.h +++ b/src/video_core/textures/texture.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later