Platform-independent Game Memory
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

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