2017-12-06 22:26:13 +00:00
|
|
|
[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Platform-independent Game Memory" vod_platform=youtube id=tcENxzeTjbI annotator=jacebennett annotator=Miblo]
|
|
|
|
[0:58][Intro to memory management.]
|
|
|
|
[4:07][We won't be allocating.]
|
|
|
|
[5:17]['Allocation Festivals']
|
|
|
|
[5:35][Why talk about allocation now?]
|
|
|
|
[7:35][What would 'normally' happen]
|
|
|
|
[11:55][Problem: dynamic allocation spreads managment across code, makes it opaque]
|
|
|
|
[13:18][Problem: allocation is another trip through the platform layer]
|
|
|
|
[15:03][What we will do instead]
|
|
|
|
[17:25][Adding memory to the platform abstraction]
|
|
|
|
[20:41][Initializing with the new model]
|
|
|
|
[21:17][Allocating the memory in the platform]
|
|
|
|
[26:33][Yes, Virginia, memory comes zeroed.]
|
|
|
|
[28:40][Put it where you want it.]
|
|
|
|
[33:33][Debugging: Integral promotion]
|
|
|
|
[36:38][Note that the clear to zero is cheap.]
|
|
|
|
[37:27][Memory? Check.]
|
|
|
|
[40:28][Intro to assertions]
|
|
|
|
[44:33][Avoiding the runtime cost]
|
|
|
|
[45:03][Build options]
|
|
|
|
[48:08][Build options for memory]
|
|
|
|
[50:31][Combining allocations]
|
|
|
|
[51:30][Debugging]
|
|
|
|
[55:07][Mission accomplished.]
|
|
|
|
[56:24][TODO: Pass timing info to game]
|
2018-03-07 21:48:09 +00:00
|
|
|
[58:24][Q&A][:speech]
|
2017-12-06 22:26:13 +00:00
|
|
|
[59:20][Reasoning behind Main Memory Pool vs Dynamic Allocation?]
|
|
|
|
[1:03:31][Why use the void* in game_memory?]
|
|
|
|
[1:04:13][Elaborate on Permanent vs Transient storage?]
|
|
|
|
[1:07:03][Will the code be on github \[be public\]?]
|
|
|
|
[1:07:38][What do you mean by 'avoiding round trips'?]
|
|
|
|
[1:12:55][Are you going to keep the sound buffer allocation seperate?]
|
|
|
|
[1:13:14][Why didn't you use libc's assert macro?]
|
|
|
|
[1:13:43][You're assert has issues.]
|
|
|
|
[1:14:37][Why did you pick a BaseAddress so high up (2TB)?]
|
|
|
|
[1:15:09][What is the difference between the memory columns in Task Manager?]
|
|
|
|
[1:17:41][Tangent: PerfMon]
|
|
|
|
[1:20:39][Recommended: Channel 9 video: Mark Russinovich Mysteries of Windows Memory Managment.]
|
|
|
|
[1:21:04][Are there any guidelines for choosing a safe BaseAddress?]
|
|
|
|
[1:21:46][What happens if the user doesn't have enough RAM?]
|
|
|
|
[1:22:40][Isn't worrying about not having enough memory silly?]
|
|
|
|
[1:23:25][Why are you using pools instead of static allocation?]
|
|
|
|
[1:23:52][What mechanism will we use to assign memory out of our pools?]
|
|
|
|
[1:24:17][Having Q&A after the episode is like code review. Was that your intent?]
|
|
|
|
[1:25:16][What about i.e. modding support? You can't tell in advance if you've allowed enough memory for someone else's mod.]
|
|
|
|
[1:26:34][Will our 64-bit allocation break on Raspberry Pi?]
|
|
|
|
[1:27:27][Will the Transient storage be freed, or will you just take off its end until its gone?]
|
|
|
|
[1:27:45][Is it better to keep track of how much memory is freed instead of total size?]
|
|
|
|
[1:28:06][Why are you reluctant to have to constants be 64-bit integers?]
|
|
|
|
[1:29:27][Did you pass different flags to VirtualAlloc for permanent and transient storage?]
|
|
|
|
[1:29:54][What are the 'other reasons' for specifying a BaseAddress.]
|
|
|
|
[1:31:01][Is it possible the pool will be fragmented?]
|
2018-03-07 21:48:09 +00:00
|
|
|
[1:33:10][Sign Off][:speech]
|
2017-12-06 22:26:13 +00:00
|
|
|
[/video]
|