Browse Source

Fix license header + removal of ternary on depth stencil routes for msaa uploads

android-meows
CamilleLaVey 4 days ago
parent
commit
4244a6418d
  1. 3
      src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp
  2. 3
      src/shader_recompiler/frontend/maxwell/translate/impl/texture_gather_swizzled.cpp
  3. 3
      src/shader_recompiler/frontend/maxwell/translate/impl/texture_load_swizzled.cpp
  4. 3
      src/shader_recompiler/frontend/maxwell/translate_program.h
  5. 10
      src/video_core/renderer_vulkan/blit_image.cpp
  6. 24
      src/video_core/renderer_vulkan/vk_compute_pass.cpp
  7. 13
      src/video_core/renderer_vulkan/vk_texture_cache.cpp
  8. 3
      src/video_core/textures/texture.h

3
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-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later

3
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-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later

3
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-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later

3
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-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later

10
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; MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, true, src_format).format;
const VkFormat dst_vk_format = const VkFormat dst_vk_format =
MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, true, dst_format).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) { for (const VideoCommon::ImageCopy& copy : copies) {
ASSERT(copy.src_subresource.base_layer == 0); ASSERT(copy.src_subresource.base_layer == 0);
ASSERT(copy.src_subresource.num_layers == 1); ASSERT(copy.src_subresource.num_layers == 1);

24
src/video_core/renderer_vulkan/vk_compute_pass.cpp

@ -1062,10 +1062,14 @@ void BlockLinearUnswizzle2DPass::Unswizzle(
.layerCount = VK_REMAINING_ARRAY_LAYERS, .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{ const VkBufferImageCopy copy{
.bufferOffset = out_offset, .bufferOffset = out_offset,
@ -1306,10 +1310,14 @@ void BlockLinearUnswizzle3DBufferPass::Unswizzle(
.layerCount = VK_REMAINING_ARRAY_LAYERS, .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{ const VkBufferImageCopy copy{
.bufferOffset = out_offset, .bufferOffset = out_offset,

13
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 = const bool msaa_upload_copies_stencil =
msaa_upload_is_depth && (aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT) != 0 && msaa_upload_is_depth && (aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT) != 0 &&
runtime->device.IsExtShaderStencilExportSupported(); 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; ImageInfo temp_info = info;
temp_info.num_samples = 1; temp_info.num_samples = 1;

3
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-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later

Loading…
Cancel
Save