Browse Source
[vk] Exclude size equal alpha different copies from incompatible copy (#138)
Should fix bugs in Splatoon 2 and TotK
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/138
Co-authored-by: JPikachu <jpikachu@eden-emu.dev>
Co-committed-by: JPikachu <jpikachu@eden-emu.dev>
pull/144/head
JPikachu
5 months ago
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
2 changed files with
13 additions and
2 deletions
-
src/video_core/renderer_vulkan/vk_texture_cache.cpp
-
src/video_core/surface.cpp
|
|
|
@ -1,3 +1,6 @@ |
|
|
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
@ -1368,8 +1371,7 @@ void TextureCacheRuntime::CopyImage(Image& dst, Image& src, |
|
|
|
std::span<const VideoCommon::ImageCopy> copies) { |
|
|
|
// As per the size-compatible formats section of vulkan, copy manually via ReinterpretImage
|
|
|
|
// these images that aren't size-compatible
|
|
|
|
if (HasAlpha(src.info.format) != HasAlpha(dst.info.format) || |
|
|
|
BytesPerBlock(src.info.format) != BytesPerBlock(dst.info.format)) { |
|
|
|
if (BytesPerBlock(src.info.format) != BytesPerBlock(dst.info.format)) { |
|
|
|
auto oneCopy = VideoCommon::ImageCopy{ |
|
|
|
.src_offset = VideoCommon::Offset3D(0, 0, 0), |
|
|
|
.dst_offset = VideoCommon::Offset3D(0, 0, 0), |
|
|
|
|
|
|
|
@ -1,3 +1,6 @@ |
|
|
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
@ -263,6 +266,12 @@ bool HasAlpha(PixelFormat pixel_format) { |
|
|
|
case PixelFormat::B8G8R8A8_SRGB: |
|
|
|
case PixelFormat::BC1_RGBA_SRGB: |
|
|
|
case PixelFormat::A4B4G4R4_UNORM: |
|
|
|
case PixelFormat::BC2_SRGB: |
|
|
|
case PixelFormat::BC2_UNORM: |
|
|
|
case PixelFormat::BC3_SRGB: |
|
|
|
case PixelFormat::BC3_UNORM: |
|
|
|
case PixelFormat::BC7_SRGB: |
|
|
|
case PixelFormat::BC7_UNORM: |
|
|
|
return true; |
|
|
|
default: |
|
|
|
return false; |
|
|
|
|