From 9f792c2cf57f35b3b61e4dc42c2d71ac2566e167 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Sun, 1 Jan 2023 21:04:34 +0200 Subject: [PATCH] Add thread logger, split renderer from PICA --- CMakeLists.txt | 7 +++- include/kernel/kernel.hpp | 1 + include/logger.hpp | 37 ++++++++++--------- src/core/kernel/threads.cpp | 4 +- .../renderer_gl.cpp} | 4 +- 5 files changed, 28 insertions(+), 25 deletions(-) rename src/core/{PICA/renderer_opengl.cpp => renderer_gl/renderer_gl.cpp} (97%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 429f979a..87f8a9ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,8 +59,10 @@ set(SERVICE_SOURCE_FILES src/core/services/service_manager.cpp src/core/services src/core/services/ptm.cpp src/core/services/mic.cpp src/core/services/cecd.cpp ) set(PICA_SOURCE_FILES src/core/PICA/gpu.cpp src/core/PICA/regs.cpp src/core/PICA/shader_unit.cpp - src/core/PICA/shader_interpreter.cpp src/core/PICA/renderer_opengl.cpp + src/core/PICA/shader_interpreter.cpp ) +set(RENDERER_GL_SOURCE_FILES src/core/renderer_gl/renderer_gl.cpp) + set(LOADER_SOURCE_FILES src/core/loader/elf.cpp src/core/loader/ncsd.cpp src/core/loader/ncch.cpp) set(FS_SOURCE_FILES src/core/fs/archive_ncch.cpp src/core/fs/archive_save_data.cpp src/core/fs/archive_sdmc.cpp) @@ -95,8 +97,9 @@ source_group("Source Files\\Core\\Kernel" FILES ${KERNEL_SOURCE_FILES}) source_group("Source Files\\Core\\Loader" FILES ${LOADER_SOURCE_FILES}) source_group("Source Files\\Core\\Services" FILES ${SERVICE_SOURCE_FILES}) source_group("Source Files\\Core\\PICA" FILES ${PICA_SOURCE_FILES}) +source_group("Source Files\\Core\\OpenGL Renderer" FILES ${RENDERER_GL_SOURCE_FILES}) source_group("Source Files\\Third Party" FILES ${THIRD_PARTY_SOURCE_FILES}) add_executable(Alber ${SOURCE_FILES} ${FS_SOURCE_FILES} ${KERNEL_SOURCE_FILES} ${LOADER_SOURCE_FILES} ${SERVICE_SOURCE_FILES} -${PICA_SOURCE_FILES} ${THIRD_PARTY_SOURCE_FILES} ${HEADER_FILES}) +${PICA_SOURCE_FILES} ${RENDERER_GL_SOURCE_FILES} ${THIRD_PARTY_SOURCE_FILES} ${HEADER_FILES}) target_link_libraries(Alber PRIVATE dynarmic SDL2-static) \ No newline at end of file diff --git a/include/kernel/kernel.hpp b/include/kernel/kernel.hpp index ac6315b5..6662a722 100644 --- a/include/kernel/kernel.hpp +++ b/include/kernel/kernel.hpp @@ -81,6 +81,7 @@ private: MAKE_LOG_FUNCTION(log, kernelLogger) MAKE_LOG_FUNCTION(logSVC, svcLogger) + MAKE_LOG_FUNCTION(logThread, threadLogger) MAKE_LOG_FUNCTION(logDebugString, debugStringLogger) MAKE_LOG_FUNCTION(logError, errorLogger) MAKE_LOG_FUNCTION(logFileIO, fileIOLogger) diff --git a/include/logger.hpp b/include/logger.hpp index 01ac282b..5025bc44 100644 --- a/include/logger.hpp +++ b/include/logger.hpp @@ -18,26 +18,27 @@ namespace Log { }; // Our loggers here. Enable/disable by toggling the template param - static Logger kernelLogger; - static Logger debugStringLogger; // Enables output for the outputDebugString SVC - static Logger errorLogger; - static Logger fileIOLogger; - static Logger svcLogger; - static Logger gpuLogger; + static Logger kernelLogger; + static Logger debugStringLogger; // Enables output for the outputDebugString SVC + static Logger errorLogger; + static Logger fileIOLogger; + static Logger svcLogger; + static Logger threadLogger; + static Logger gpuLogger; // Service loggers - static Logger aptLogger; - static Logger cecdLogger; - static Logger cfgLogger; - static Logger dspServiceLogger; - static Logger fsLogger; - static Logger hidLogger; - static Logger gspGPULogger; - static Logger gspLCDLogger; - static Logger micLogger; - static Logger ndmLogger; - static Logger ptmLogger; - static Logger srvLogger; + static Logger aptLogger; + static Logger cecdLogger; + static Logger cfgLogger; + static Logger dspServiceLogger; + static Logger fsLogger; + static Logger hidLogger; + static Logger gspGPULogger; + static Logger gspLCDLogger; + static Logger micLogger; + static Logger ndmLogger; + static Logger ptmLogger; + static Logger srvLogger; #define MAKE_LOG_FUNCTION(functionName, logger) \ template \ diff --git a/src/core/kernel/threads.cpp b/src/core/kernel/threads.cpp index 1931a158..9198d069 100644 --- a/src/core/kernel/threads.cpp +++ b/src/core/kernel/threads.cpp @@ -11,7 +11,7 @@ void Kernel::switchThread(int newThreadIndex) { auto& oldThread = threads[currentThreadIndex]; auto& newThread = threads[newThreadIndex]; newThread.status = ThreadStatus::Running; - printf("Switching from thread %d to %d\n", currentThreadIndex, newThreadIndex); + logThread("Switching from thread %d to %d\n", currentThreadIndex, newThreadIndex); // Bail early if the new thread is actually the old thread if (currentThreadIndex == newThreadIndex) [[unlikely]] { @@ -70,8 +70,6 @@ std::optional Kernel::getNextThread() { if (canThreadRun(t)) { return index; } - - // TODO: Check timeouts here } // No thread was found diff --git a/src/core/PICA/renderer_opengl.cpp b/src/core/renderer_gl/renderer_gl.cpp similarity index 97% rename from src/core/PICA/renderer_opengl.cpp rename to src/core/renderer_gl/renderer_gl.cpp index 2c41dba5..5cd63dd1 100644 --- a/src/core/PICA/renderer_opengl.cpp +++ b/src/core/renderer_gl/renderer_gl.cpp @@ -191,8 +191,8 @@ void GPU::drawVertices(OpenGL::Primitives primType, Vertex* vertices, u32 count) f24 depthOffset = f24::fromRaw(regs[PICAInternalRegs::DepthOffset] & 0xffffff); printf("Depth enable: %d, func: %d, writeEnable: %d\n", depthEnable, depthFunc, depthWriteEnable); - if (depthScale.toFloat32() != -1.0 || depthOffset.toFloat32() != 0.0) - Helpers::panic("TODO: Implement depth scale/offset. Remove the depth *= -1.0 from vertex shader"); + //if (depthScale.toFloat32() != -1.0 || depthOffset.toFloat32() != 0.0) + // Helpers::panic("TODO: Implement depth scale/offset. Remove the depth *= -1.0 from vertex shader"); // TODO: Actually use this float viewportWidth = f24::fromRaw(regs[PICAInternalRegs::ViewportWidth] & 0xffffff).toFloat32() * 2.0;