From a1d47717ae7f0445fb9d491a4d548aec17b1c053 Mon Sep 17 00:00:00 2001 From: Takoroka <137927095+Takoroka@users.noreply.github.com> Date: Fri, 30 Oct 2026 00:20:05 -0400 Subject: nx2: log per-call and periodic diagnostic lines at debug level A 9-minute Mario Kart World session wrote 36k log lines at the default level, most of them one per GPU call: nx2:syncpt 201/202 (12k), gpu submit jobs (7k), memory registrations (7k), "Lowered native shader" (1.6k), and 4.7k "Storage buffer tracked without bias" warnings, which every Switch 2 shader hits. These, the texture cache's per-image and per-format detail lines, the 3D image shapes and the per-type VMA lines are now debug level. The once-a-report summary lines (texture cache memory, images created/deleted, VMA heap budget) stay at info. --- src/video_core/texture_cache/texture_cache.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/video_core/texture_cache/texture_cache.h') diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index b95d9d8a39..62cd523073 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -260,7 +260,7 @@ void TextureCache

::TickFrame() { largest.end(), [](const auto& a, const auto& b) { return a.first > b.first; }); for (size_t i = 0; i < std::min(12, largest.size()); ++i) { const Image& image = *largest[i].second; - LOG_INFO(HW_GPU, " {} MiB: {:#x} {}x{}x{} layers {} levels {} format {} type {} flags {:#x}", + LOG_DEBUG(HW_GPU, " {} MiB: {:#x} {}x{}x{} layers {} levels {} format {} type {} flags {:#x}", largest[i].first >> 20, image.gpu_addr, image.info.size.width, image.info.size.height, image.info.size.depth, image.info.resources.layers, image.info.resources.levels, static_cast(image.info.format), static_cast(image.info.type), @@ -270,7 +270,7 @@ void TextureCache

::TickFrame() { for (const auto& [format, total] : by_format) formats.emplace_back(total.first, format); std::sort(formats.rbegin(), formats.rend()); for (size_t i = 0; i < std::min(8, formats.size()); ++i) { - LOG_INFO(HW_GPU, " format {}: {} MiB in {} images", formats[i].second, formats[i].first >> 20, + LOG_DEBUG(HW_GPU, " format {}: {} MiB in {} images", formats[i].second, formats[i].first >> 20, by_format[formats[i].second].second); } if constexpr (requires { runtime.LogMemoryStatistics(); }) { @@ -286,7 +286,7 @@ void TextureCache

::TickFrame() { std::sort(shapes.rbegin(), shapes.rend()); for (size_t i = 0; i < std::min(10, shapes.size()); ++i) { const u64 key = shapes[i].second; - LOG_INFO(HW_GPU, " created {}x: format {} type {} levels {} layers {} {}x{} (last at {:#x})", + LOG_DEBUG(HW_GPU, " created {}x: format {} type {} levels {} layers {} {}x{} (last at {:#x})", shapes[i].first, key >> 56, (key >> 52) & 0xF, (key >> 48) & 0xF, (key >> 36) & 0xFFF, (key >> 18) & 0x3FFFF, key & 0x3FFFF, created_shapes[key].second); @@ -1763,7 +1763,7 @@ ImageId TextureCache

::InsertImage(const ImageInfo& info, GPUVAddr gpu_addr, storage_info.native_tiling = gpu_memory->UsesNativeTiling(); if (storage_info.native_tiling && info.type == ImageType::e3D) { // Switch 2 3D images (lighting/fog volumes) are rare: log each one's shape. - LOG_INFO(HW_GPU, "3D image at {:#x}: {}x{}x{} levels {} format {} block {}x{}x{}", + LOG_DEBUG(HW_GPU, "3D image at {:#x}: {}x{}x{} levels {} format {} block {}x{}x{}", gpu_addr, info.size.width, info.size.height, info.size.depth, info.resources.levels, static_cast(info.format), info.block.width, info.block.height, info.block.depth); } -- cgit v1.2.3