From 5102e2e3911773f98dd4e3fb32bf282f1416ca23 Mon Sep 17 00:00:00 2001 From: DH Date: Mon, 14 Oct 2024 23:35:33 +0300 Subject: [PATCH] gpu: do not crash on null debug string --- rpcsx/gpu/Pipe.cpp | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/rpcsx/gpu/Pipe.cpp b/rpcsx/gpu/Pipe.cpp index 81ee2c6ba..5c625c9bf 100644 --- a/rpcsx/gpu/Pipe.cpp +++ b/rpcsx/gpu/Pipe.cpp @@ -1116,17 +1116,22 @@ bool GraphicsPipe::setUConfigReg(Queue &queue) { auto data = queue.rptr + 2; if (index != 0) { - std::println( - stderr, - "set UConfig regs with index, offset: {:x}, count {}, index {}, {}", - offset, len, index, - gnm::mmio::registerName(decltype(uConfig)::kMmioOffset + offset)); + { + auto name = + gnm::mmio::registerName(decltype(uConfig)::kMmioOffset + offset); + std::println( + stderr, + "set UConfig regs with index, offset: {:x}, count {}, index {}, {}", + offset, len, index, name ? name : ""); + } for (std::size_t i = 0; i < len; ++i) { - std::println( - stderr, "writing to {} value {:x}", - gnm::mmio::registerName(decltype(uConfig)::kMmioOffset + offset + i), - data[i]); + auto id = decltype(uConfig)::kMmioOffset + offset + i; + if (auto regName = gnm::mmio::registerName(id)) { + std::println(stderr, "writing to {} value {:x}", regName, data[i]); + } else { + std::println(stderr, "writing to {:x} value {:x}", id, data[i]); + } } } @@ -1152,17 +1157,22 @@ bool GraphicsPipe::setContextReg(Queue &queue) { auto data = queue.rptr + 2; if (index != 0) { - std::println( - stderr, - "set Context regs with index, offset: {:x}, count {}, index {}, {}", - offset, len, index, - gnm::mmio::registerName(decltype(context)::kMmioOffset + offset)); + { + auto name = + gnm::mmio::registerName(decltype(context)::kMmioOffset + offset); + std::println( + stderr, + "set Context regs with index, offset: {:x}, count {}, index {}, {}", + offset, len, index, name ? name : ""); + } for (std::size_t i = 0; i < len; ++i) { - std::println( - stderr, "writing to {} value {:x}", - gnm::mmio::registerName(decltype(context)::kMmioOffset + offset + i), - data[i]); + auto id = decltype(context)::kMmioOffset + offset + i; + if (auto regName = gnm::mmio::registerName(id)) { + std::println(stderr, "writing to {} value {:x}", regName, data[i]); + } else { + std::println(stderr, "writing to {:x} value {:x}", id, data[i]); + } } }