diff --git a/src/app/sdl3_app_buffers.cpp b/src/app/sdl3_app_buffers.cpp index 953afdd..2fb914d 100644 --- a/src/app/sdl3_app_buffers.cpp +++ b/src/app/sdl3_app_buffers.cpp @@ -56,6 +56,7 @@ void Sdl3App::LoadSceneData() { void Sdl3App::CreateVertexBuffer() { TRACE_FUNCTION(); VkDeviceSize bufferSize = sizeof(vertices_[0]) * vertices_.size(); + TRACE_VAR(bufferSize); vulkan::CreateBuffer(device_, physicalDevice_, bufferSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, vertexBuffer_, vertexBufferMemory_); @@ -69,6 +70,7 @@ void Sdl3App::CreateVertexBuffer() { void Sdl3App::CreateIndexBuffer() { TRACE_FUNCTION(); VkDeviceSize bufferSize = sizeof(indices_[0]) * indices_.size(); + TRACE_VAR(bufferSize); vulkan::CreateBuffer(device_, physicalDevice_, bufferSize, VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, indexBuffer_, indexBufferMemory_); diff --git a/src/app/sdl3_app_core.cpp b/src/app/sdl3_app_core.cpp index 4bda5d8..7a05404 100644 --- a/src/app/sdl3_app_core.cpp +++ b/src/app/sdl3_app_core.cpp @@ -83,6 +83,7 @@ void ThrowSdlErrorIfFailed(int result, const char* context) { Sdl3App::Sdl3App(const std::filesystem::path& scriptPath) : cubeScript_(scriptPath) { TRACE_FUNCTION(); + TRACE_VAR(scriptPath); } void Sdl3App::Run() { @@ -95,12 +96,15 @@ void Sdl3App::Run() { void Sdl3App::InitSDL() { TRACE_FUNCTION(); + TRACE_VAR(kWidth); + TRACE_VAR(kHeight); ThrowSdlErrorIfFailed(SDL_Init(SDL_INIT_VIDEO), "SDL_Init failed"); ThrowSdlErrorIfFailed(SDL_Vulkan_LoadLibrary(nullptr), "SDL_Vulkan_LoadLibrary failed"); window_ = SDL_CreateWindow("SDL3 Vulkan Demo", kWidth, kHeight, SDL_WINDOW_VULKAN | SDL_WINDOW_RESIZABLE); if (!window_) { throw std::runtime_error(BuildSdlErrorMessage("SDL_CreateWindow failed")); } + TRACE_VAR(window_); SDL_StartTextInput(window_); } @@ -126,6 +130,7 @@ void Sdl3App::InitVulkan() { void Sdl3App::MainLoop() { TRACE_FUNCTION(); + TRACE_VAR(guiHasCommands_); bool running = true; auto start = std::chrono::steady_clock::now(); while (running) { diff --git a/src/app/sdl3_app_device.cpp b/src/app/sdl3_app_device.cpp index 1c1406d..1222393 100644 --- a/src/app/sdl3_app_device.cpp +++ b/src/app/sdl3_app_device.cpp @@ -24,6 +24,8 @@ void Sdl3App::CreateInstance() { } std::vector extensionList(extensions, extensions + extensionCount); + TRACE_VAR(extensionCount); + TRACE_VAR(extensionList.size()); VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; diff --git a/src/app/sdl3_app_render.cpp b/src/app/sdl3_app_render.cpp index a6290d0..00ca111 100644 --- a/src/app/sdl3_app_render.cpp +++ b/src/app/sdl3_app_render.cpp @@ -39,6 +39,8 @@ void Sdl3App::CreateCommandBuffers() { void Sdl3App::RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex, float time, const std::array& viewProj) { TRACE_FUNCTION(); + TRACE_VAR(imageIndex); + TRACE_FUNCTION(); VkCommandBufferBeginInfo beginInfo{}; beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -147,6 +149,7 @@ void Sdl3App::DrawFrame(float time) { } else if (result != VK_SUCCESS) { throw std::runtime_error("Failed to acquire swap chain image"); } + TRACE_VAR(imageIndex); float aspect = static_cast(swapChainExtent_.width) / static_cast(swapChainExtent_.height); auto viewProj = cubeScript_.GetViewProjectionMatrix(aspect); diff --git a/src/app/sdl3_app_swapchain.cpp b/src/app/sdl3_app_swapchain.cpp index 5705c60..8bf1e8b 100644 --- a/src/app/sdl3_app_swapchain.cpp +++ b/src/app/sdl3_app_swapchain.cpp @@ -18,6 +18,7 @@ void Sdl3App::CreateSwapChain() { if (support.capabilities.maxImageCount > 0 && imageCount > support.capabilities.maxImageCount) { imageCount = support.capabilities.maxImageCount; } + TRACE_VAR(imageCount); VkSwapchainCreateInfoKHR createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; diff --git a/src/app/trace.hpp b/src/app/trace.hpp index 25a1092..a66b7f0 100644 --- a/src/app/trace.hpp +++ b/src/app/trace.hpp @@ -3,6 +3,7 @@ #include #include +#include namespace sdl3cpp::app { @@ -22,6 +23,16 @@ public: } } + template + static void LogVariable(const char* name, const T& value) { + if (!Enabled()) { + return; + } + std::ostringstream oss; + oss << "[TRACE] " << name << " = " << value; + std::cout << oss.str() << '\n'; + } + private: static inline std::atomic_bool enabled_{false}; }; @@ -39,5 +50,6 @@ private: } // namespace sdl3cpp::app #define TRACE_FUNCTION() sdl3cpp::app::TraceScope traceScope##__COUNTER__{__func__} +#define TRACE_VAR(var) sdl3cpp::app::TraceLogger::LogVariable(#var, var) #endif // SDL3CPP_APP_TRACE_HPP diff --git a/src/main.cpp b/src/main.cpp index a64fb2b..564597e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -222,6 +222,12 @@ AppOptions ParseCommandLine(int argc, char** argv) { return options; } +void LogRuntimeConfig(const RuntimeConfig& config) { + TRACE_VAR(config.width); + TRACE_VAR(config.height); + TRACE_VAR(config.scriptPath); +} + void WriteRuntimeConfigJson(const RuntimeConfig& runtimeConfig, const std::filesystem::path& configPath) { rapidjson::Document document; @@ -281,6 +287,7 @@ int main(int argc, char** argv) { try { AppOptions options = ParseCommandLine(argc, argv); sdl3cpp::app::TraceLogger::SetEnabled(options.traceEnabled); + LogRuntimeConfig(options.runtimeConfig); if (options.seedOutput) { WriteRuntimeConfigJson(options.runtimeConfig, *options.seedOutput); }