[video output=day260 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Implementing Drill-down in the Profiler" vod_platform=youtube id=wklr6ogongg annotator=Miblo] [0:58][Run the game and consider how to develop the profiler] [5:10][handmade_debug.cpp: Make DrawProfileIn do PushRectOutline instead of PushRect] [5:56][handmade_render_group.cpp: Introduce a PushRectOutline that takes the same arguments as PushRect] [6:34][Run the game and see that the outlined rectangles don't seem to be correct] [9:24][Debugger: Step into PushRectOutline and inspect its values] [12:43][handmade_render_group.cpp: Make PushRectOutline use the thickness] [13:40][handmade_debug.cpp: Get that thickness back in there] [14:03][Run the game and view the profiler] [14:26][handmade_debug.cpp: Introduce DrawProfileBars] [19:21][handmade_debug.cpp: Call DrawProfileBars in DrawProfileIn] [20:11][Run the game and see that the profile view is the same] [20:19][handmade_debug.cpp: Call DrawProfileBars recursively] [21:07][Run the game and view the entire call stack in the profile] [22:02][handmade_debug.h: Introduce MouseTextStackY to enable us to see information for multiple debug elements] [23:28][Run the game and see this information] [24:18][handmade_debug.cpp: Introduce GetLineAdvance to give us a more robust way to write multiple lines] [26:50][Run the game and see our correctly spaced lines] [27:21][win32_handmade.cpp: Increase the PushBufferSize] [27:57][Run the game, view the profiler and consider implementing zoom] [30:52][handmade_debug.cpp: Begin to implement zoom] [31:51][handmade_debug.h: Introduce debug_view_profile_graph] [34:32][handmade_debug.cpp: Provide the ability to set RootNode based on a search] [46:15][handmade_debug.h and handmade_debug.cpp: Provide the ability to set the profile graph root for zooming] [52:58][Run the game and try out the zoom] [53:30][Debugger: Break into DEBUGEndInteract and inspect the values upon zooming] [1:01:12][Debugger: Break on ZoomInteraction, inspect the values and find that we're currently picking the wrong Frame] [1:04:46][handmade_debug.cpp: Search for the correct Frame to set the RootNode] [1:06:58][Run the game and successfully try out the beautiful zoom] [1:09:28][Q&A][:speech] [1:10:11][@deepmist:][Are you as productive in a single 8 hour period as you are on the show over 8 sessions?] [1:10:38][@Popcorn0x90][Do you have that in your current game at work?] [1:10:54][@jessem3y3r][Is our debug tooling sophisticated enough to detect OS slowness, i.e. problems with heap / mem performance, etc?[ref site="Casey's Blog" page="The Worst API Ever Made" url="http://mollyrocket.com/casey/stream_0029.html"]] [1:13:14][@SoysauceTheKid][When doing playback, is the debug info showing the past CPU info?] [1:13:49][@oscarnuwar][Only in C/CPP?] [1:13:57][@cynikhul][What type of game is this, e.g. FPS, RPM etc?] [1:14:05][@Popcorn0x90][Yes profiler!] [1:14:10][@guitarm87][I discovered why I didn't see the font rendering. I'm on a 2560 x 1440 screen with 200% DPI scaling. Do I have to use a specific resolution to make it work?] [1:14:59][@erdomina][Was there a factor in not implementing moving backwards in the threading system?] [1:17:27][Call it][:speech] [1:18:20][Promote 4coder][:speech] [/video]