Fixing Profiling Across Code Reloads ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter c Credits

Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Credits Menu

Enter Open URL (in new tab)
0:39handmade.prj: Move the .prj files from the code to the root directory
0:39handmade.prj: Move the .prj files from the code to the root directory
0:39handmade.prj: Move the .prj files from the code to the root directory
1:11Recap and set the stage for the day
1:11Recap and set the stage for the day
1:11Recap and set the stage for the day
2:38Run the game, do a hot-reload and note that the profile is busted
2:38Run the game, do a hot-reload and note that the profile is busted
2:38Run the game, do a hot-reload and note that the profile is busted
3:48Explain the debug collation situation in terms of multithreadedness
3:48Explain the debug collation situation in terms of multithreadedness
3:48Explain the debug collation situation in terms of multithreadedness
8:45Consider how to potentially solve the problem
8:45Consider how to potentially solve the problem
8:45Consider how to potentially solve the problem
12:19win32_handmade.cpp: Flush all the queues, do FrameEnd and then finally do the hot-reload
12:19win32_handmade.cpp: Flush all the queues, do FrameEnd and then finally do the hot-reload
12:19win32_handmade.cpp: Flush all the queues, do FrameEnd and then finally do the hot-reload
14:58Run the game, attempt to hot-reload, and hang
14:58Run the game, attempt to hot-reload, and hang
14:58Run the game, attempt to hot-reload, and hang
15:54Debugger: Investigate what's going on here
15:54Debugger: Investigate what's going on here
15:54Debugger: Investigate what's going on here
17:52Explain the bug: Upon hot-reloading, we go back through the collation code because there was no collation code to call
17:52Explain the bug: Upon hot-reloading, we go back through the collation code because there was no collation code to call
17:52Explain the bug: Upon hot-reloading, we go back through the collation code because there was no collation code to call
19:07win32_handmade.cpp: Try loading the game code multiple times during collation
19:07win32_handmade.cpp: Try loading the game code multiple times during collation
19:07win32_handmade.cpp: Try loading the game code multiple times during collation
21:43Run the game and try hot-reloading
21:43Run the game and try hot-reloading
21:43Run the game and try hot-reloading
22:21"How about you actually check to see if it's loaded, Muratori!"α
22:21"How about you actually check to see if it's loaded, Muratori!"α
22:21"How about you actually check to see if it's loaded, Muratori!"α
22:34win32_handmade.cpp: Fix the LoadTry loop
22:34win32_handmade.cpp: Fix the LoadTry loop
22:34win32_handmade.cpp: Fix the LoadTry loop
23:03Run the game and try that one more time
23:03Run the game and try that one more time
23:03Run the game and try that one more time
23:32Debugger: Investigate what's going on
23:32Debugger: Investigate what's going on
23:32Debugger: Investigate what's going on
24:45Blame it on the codeβ
24:45Blame it on the codeβ
24:45Blame it on the codeβ
26:21handmade_cutscene.h: Introduce struct cutscene and enum cutscene_id
26:21handmade_cutscene.h: Introduce struct cutscene and enum cutscene_id
26:21handmade_cutscene.h: Introduce struct cutscene and enum cutscene_id
29:26Run the game and find that we're not safe across reloads in the cutscene mode
29:26Run the game and find that we're not safe across reloads in the cutscene mode
29:26Run the game and find that we're not safe across reloads in the cutscene mode
30:29Debugger: Break on Win32UnloadGameCode and inspect the GlobalDebugTable
30:29Debugger: Break on Win32UnloadGameCode and inspect the GlobalDebugTable
30:29Debugger: Break on Win32UnloadGameCode and inspect the GlobalDebugTable
34:00A thoughtγ
34:00A thoughtγ
34:00A thoughtγ
34:24win32_handmade.cpp: Disable the EventRecording while we reload
34:24win32_handmade.cpp: Disable the EventRecording while we reload
34:24win32_handmade.cpp: Disable the EventRecording while we reload
39:18win32_handmade.cpp: Enable the EventRecording initially
39:18win32_handmade.cpp: Enable the EventRecording initially
39:18win32_handmade.cpp: Enable the EventRecording initially
39:51Run the game and...
39:51Run the game and...
39:51Run the game and...
40:23Admire the lovely profilerδ
40:23Admire the lovely profilerδ
40:23Admire the lovely profilerδ
40:55build.bat: Switch to -O2 and see how the profiler fares
40:55build.bat: Switch to -O2 and see how the profiler fares
40:55build.bat: Switch to -O2 and see how the profiler fares
41:56Happy puppyε
41:56Happy puppyε
41:56Happy puppyε
42:03Q&A
42:03Q&A
42:03Q&A
42:40erafo Not sure if this was asked before but is it worth to use static_cast instead of a C-style cast that does static_cast, dynamic_cast and reinterpret_cast, if you know that you only need the first?
🗪
42:40erafo Not sure if this was asked before but is it worth to use static_cast instead of a C-style cast that does static_cast, dynamic_cast and reinterpret_cast, if you know that you only need the first?
🗪
42:40erafo Not sure if this was asked before but is it worth to use static_cast instead of a C-style cast that does static_cast, dynamic_cast and reinterpret_cast, if you know that you only need the first?
🗪
43:32Demo: C-style cast
43:32Demo: C-style cast
43:32Demo: C-style cast
48:19Demo: C++ dynamic_cast
48:19Demo: C++ dynamic_cast
48:19Demo: C++ dynamic_cast
51:29cubercaleb How exactly did they mess up casting in C++?
🗪
51:29cubercaleb How exactly did they mess up casting in C++?
🗪
51:29cubercaleb How exactly did they mess up casting in C++?
🗪
53:21novynn dynamic_cast will return 0 if it fails
🗪
53:21novynn dynamic_cast will return 0 if it fails
🗪
53:21novynn dynamic_cast will return 0 if it fails
🗪
53:39evraire Is the debug view for bitmaps working again?
🗪
53:39evraire Is the debug view for bitmaps working again?
🗪
53:39evraire Is the debug view for bitmaps working again?
🗪
54:15rooster441 For string manipulation, is there a library worth to use in C/C++? I could do it with Python but I'd like to use C
🗪
54:15rooster441 For string manipulation, is there a library worth to use in C/C++? I could do it with Python but I'd like to use C
🗪
54:15rooster441 For string manipulation, is there a library worth to use in C/C++? I could do it with Python but I'd like to use C
🗪
54:57deepmist You are spending a lot of time on debug tools before you need them. Is it going to be worth it?
🗪
54:57deepmist You are spending a lot of time on debug tools before you need them. Is it going to be worth it?
🗪
54:57deepmist You are spending a lot of time on debug tools before you need them. Is it going to be worth it?
🗪
58:07cubercaleb Speaking of string libraries, what kinds of things do you think should be in a good string library?
🗪
58:07cubercaleb Speaking of string libraries, what kinds of things do you think should be in a good string library?
🗪
58:07cubercaleb Speaking of string libraries, what kinds of things do you think should be in a good string library?
🗪
59:36insobot expixel: Hand banana hero. You rock
59:36insobot expixel: Hand banana hero. You rock
59:36insobot expixel: Hand banana hero. You rock
59:40Andrew Chronister: "Insobot is a national treasure"ζ
59:40Andrew Chronister: "Insobot is a national treasure"ζ
59:40Andrew Chronister: "Insobot is a national treasure"ζ
1:00:01cubercaleb Does using VirtualAlloc and reserving a lot of memory upfront count?
🗪
1:00:01cubercaleb Does using VirtualAlloc and reserving a lot of memory upfront count?
🗪
1:00:01cubercaleb Does using VirtualAlloc and reserving a lot of memory upfront count?
🗪
1:01:16cubercaleb Well I meant using MEM_RESERVE then MEM_COMMIT so that you can append quickly without the copy
🗪
1:01:16cubercaleb Well I meant using MEM_RESERVE then MEM_COMMIT so that you can append quickly without the copy
🗪
1:01:16cubercaleb Well I meant using MEM_RESERVE then MEM_COMMIT so that you can append quickly without the copy
🗪
1:01:40Go eat dinner
1:01:40Go eat dinner
1:01:40Go eat dinner
1:02:24Promote Martins Mozeiko
1:02:24Promote Martins Mozeiko
1:02:24Promote Martins Mozeiko
1:03:05Mention HandmadeCon 2016
1:03:05Mention HandmadeCon 2016
1:03:05Mention HandmadeCon 2016
1:03:46Promote 4coder
1:03:46Promote 4coder
1:03:46Promote 4coder