[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]
