From 3c1897b926754bd1578689a3c196da1577aa556c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 14 Jan 2022 22:01:41 +0100 Subject: [PATCH] Even more Profiling --- .../Platform/DX11/Renderer/Dx11PixelShader.bf | 12 ++++--- .../src/Platform/DX11/Renderer/Dx11Shader.bf | 10 ++++-- .../DX11/Renderer/Dx11VertexShader.bf | 10 ++++-- .../src/Platform/Windows/WindowsWindow.bf | 12 +++++-- GlitchyEngine/src/Program.bf | 33 ++++++++++++------- 5 files changed, 53 insertions(+), 24 deletions(-) diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf index c90fa30..a47e270 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf @@ -19,11 +19,15 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileRendererFunction!(); Shader.PlattformCompileShaderFromSource(code, macros, entryPoint, "ps_5_0", DefaultCompileFlags, out nativeCode); - - var result = NativeDevice.CreatePixelShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); - if(result.Failed) + { - Log.EngineLogger.Error($"Failed to create pixel shader: Message ({(int)result}): {result}"); + Debug.Profiler.ProfileResourceScope!("CreateNativePixelShader"); + + var result = NativeDevice.CreatePixelShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); + if(result.Failed) + { + Log.EngineLogger.Error($"Failed to create pixel shader: Message ({(int)result}): {result}"); + } } Reflect(nativeCode); diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf index 205306a..8b9b131 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf @@ -56,10 +56,14 @@ namespace GlitchyEngine.Renderer Debug.Profiler.ProfileResourceFunction!(); ID3D11ShaderReflection* reflection = null; - var result = D3DCompiler.D3DReflect(shaderCode.GetBufferPointer(), shaderCode.GetBufferSize(), &reflection); - if(result.Failed) { - Log.EngineLogger.Error($"Failed to reflect shader: Message ({(int)result}): {result}"); + Debug.Profiler.ProfileResourceScope!("D3DReflect"); + + var result = D3DCompiler.D3DReflect(shaderCode.GetBufferPointer(), shaderCode.GetBufferSize(), &reflection); + if(result.Failed) + { + Log.EngineLogger.Error($"Failed to reflect shader: Message ({(int)result}): {result}"); + } } reflection.GetDescription(let desc); diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf index d52df24..88f9510 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf @@ -21,10 +21,14 @@ namespace GlitchyEngine.Renderer Shader.PlattformCompileShaderFromSource(code, macros, entryPoint, "vs_5_0", DefaultCompileFlags, out nativeCode); - var result = NativeDevice.CreateVertexShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); - if(result.Failed) { - Log.EngineLogger.Error($"Failed to create vertex shader: Message ({(int)result}): {result}"); + Debug.Profiler.ProfileResourceScope!("CreateNativeVertexShader"); + + var result = NativeDevice.CreateVertexShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); + if(result.Failed) + { + Log.EngineLogger.Error($"Failed to create vertex shader: Message ({(int)result}): {result}"); + } } Reflect(nativeCode); diff --git a/GlitchyEngine/src/Platform/Windows/WindowsWindow.bf b/GlitchyEngine/src/Platform/Windows/WindowsWindow.bf index 63e8860..4c358ee 100644 --- a/GlitchyEngine/src/Platform/Windows/WindowsWindow.bf +++ b/GlitchyEngine/src/Platform/Windows/WindowsWindow.bf @@ -204,7 +204,11 @@ namespace GlitchyEngine _windowClass.HInstance = (.)_instanceHandle; if (desc.Icon.Ptr != null) + { + Debug.Profiler.ProfileScope!("LoadIcon"); + _windowClass.Icon = LoadImageW(0, desc.Icon.ToScopedNativeWChar!(), .Icon, 0, 0, .LoadFromFile); + } else _windowClass.Icon = 0; @@ -219,8 +223,12 @@ namespace GlitchyEngine Runtime.FatalError("Failed to register window class"); } - _windowHandle = CreateWindowExW(.None, _windowClass.ClassName, desc.Title.ToScopedNativeWChar!(), .WS_OVERLAPPEDWINDOW | .WS_VISIBLE, - CW_USEDEFAULT, CW_USEDEFAULT, desc.Width, desc.Height, 0, 0, (.)_instanceHandle, null); + { + Debug.Profiler.ProfileScope!("CreateWindow"); + + _windowHandle = CreateWindowExW(.None, _windowClass.ClassName, desc.Title.ToScopedNativeWChar!(), .WS_OVERLAPPEDWINDOW | .WS_VISIBLE, + CW_USEDEFAULT, CW_USEDEFAULT, desc.Width, desc.Height, 0, 0, (.)_instanceHandle, null); + } _graphicsContext = new GraphicsContext(_windowHandle); _graphicsContext.Init(); diff --git a/GlitchyEngine/src/Program.bf b/GlitchyEngine/src/Program.bf index 1d7c96d..4a999e2 100644 --- a/GlitchyEngine/src/Program.bf +++ b/GlitchyEngine/src/Program.bf @@ -14,25 +14,34 @@ namespace GlitchyEngine { Debug.Profiler.BeginProfiling(); - Log.EngineLogger.Info("Initializing Application..."); + Application app; - Stopwatch initWatch = scope Stopwatch(); + { + Debug.Profiler.ProfileScope!("Initialize"); + + Log.EngineLogger.Info("Initializing Application..."); - var app = CreateApplication(); + Stopwatch initWatch = scope Stopwatch(); - initWatch.Stop(); + app = CreateApplication(); - Log.EngineLogger.Info($"Application initialized ({initWatch.ElapsedMilliseconds}ms)."); - Log.EngineLogger.Info("Running App..."); + initWatch.Stop(); + + Log.EngineLogger.Info($"Application initialized ({initWatch.ElapsedMilliseconds}ms)."); + Log.EngineLogger.Info("Running App..."); + } app.Run(); - Log.EngineLogger.Info("Uninitializing Application..."); - - delete app; - - Log.EngineLogger.Info("Application uninitialized."); - + { + Debug.Profiler.ProfileScope!("Shutdown"); + + Log.EngineLogger.Info("Uninitializing Application..."); + + delete app; + + Log.EngineLogger.Info("Application uninitialized."); + } Debug.Profiler.EndProfiling(); return 0;