fix(host1x): suppress VIC warnings for small dimension mismatches

Only warn when dimension differences exceed 16 pixels to avoid noise
from common codec alignment padding (e.g., 1088 vs 1080).

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-12-07 17:46:37 +10:00
parent 9efe66e5b2
commit 7b532d8ec7

View File

@@ -1,4 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <array> #include <array>
@@ -88,8 +89,13 @@ void Vic::Execute() {
} }
const u64 surface_width = config.surface_width_minus1 + 1; const u64 surface_width = config.surface_width_minus1 + 1;
const u64 surface_height = config.surface_height_minus1 + 1; const u64 surface_height = config.surface_height_minus1 + 1;
if (static_cast<u64>(frame->GetWidth()) != surface_width || const u64 frame_width = static_cast<u64>(frame->GetWidth());
static_cast<u64>(frame->GetHeight()) != surface_height) { const u64 frame_height = static_cast<u64>(frame->GetHeight());
// Only warn if the difference is significant (more than 16 pixels, common alignment boundary)
// Small differences are often due to codec alignment requirements and are handled gracefully
const u64 width_diff = frame_width > surface_width ? frame_width - surface_width : surface_width - frame_width;
const u64 height_diff = frame_height > surface_height ? frame_height - surface_height : surface_height - frame_height;
if (width_diff > 16 || height_diff > 16) {
// TODO: Properly support multiple video streams with differing frame dimensions // TODO: Properly support multiple video streams with differing frame dimensions
LOG_WARNING(Service_NVDRV, "Frame dimensions {}x{} don't match surface dimensions {}x{}", LOG_WARNING(Service_NVDRV, "Frame dimensions {}x{} don't match surface dimensions {}x{}",
frame->GetWidth(), frame->GetHeight(), surface_width, surface_height); frame->GetWidth(), frame->GetHeight(), surface_width, surface_height);