[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: #138 Co-authored-by: JPikachu <jpikachu@eden-emu.dev> Co-committed-by: JPikachu <jpikachu@eden-emu.dev>
This commit is contained in:
parent
0b29fb7c8a
commit
eeb68768d6
2 changed files with 13 additions and 2 deletions
|
@ -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-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// 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) {
|
std::span<const VideoCommon::ImageCopy> copies) {
|
||||||
// As per the size-compatible formats section of vulkan, copy manually via ReinterpretImage
|
// As per the size-compatible formats section of vulkan, copy manually via ReinterpretImage
|
||||||
// these images that aren't size-compatible
|
// these images that aren't size-compatible
|
||||||
if (HasAlpha(src.info.format) != HasAlpha(dst.info.format) ||
|
if (BytesPerBlock(src.info.format) != BytesPerBlock(dst.info.format)) {
|
||||||
BytesPerBlock(src.info.format) != BytesPerBlock(dst.info.format)) {
|
|
||||||
auto oneCopy = VideoCommon::ImageCopy{
|
auto oneCopy = VideoCommon::ImageCopy{
|
||||||
.src_offset = VideoCommon::Offset3D(0, 0, 0),
|
.src_offset = VideoCommon::Offset3D(0, 0, 0),
|
||||||
.dst_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-FileCopyrightText: 2014 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -263,6 +266,12 @@ bool HasAlpha(PixelFormat pixel_format) {
|
||||||
case PixelFormat::B8G8R8A8_SRGB:
|
case PixelFormat::B8G8R8A8_SRGB:
|
||||||
case PixelFormat::BC1_RGBA_SRGB:
|
case PixelFormat::BC1_RGBA_SRGB:
|
||||||
case PixelFormat::A4B4G4R4_UNORM:
|
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;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue