Basic General Purpose Allocation
?
?

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:13Recap and plan for the day
0:13Recap and plan for the day
0:13Recap and plan for the day
1:54Plan for today: Writing our own general-purpose memory allocator
1:54Plan for today: Writing our own general-purpose memory allocator
1:54Plan for today: Writing our own general-purpose memory allocator
4:12Ode to stack memory allocation
4:12Ode to stack memory allocation
4:12Ode to stack memory allocation
5:33The asset system needs a more sophisticated memory allocator
5:33The asset system needs a more sophisticated memory allocator
5:33The asset system needs a more sophisticated memory allocator
6:45Asset eviction and memory fragmentation, using a free list
🖌
6:45Asset eviction and memory fragmentation, using a free list
🖌
6:45Asset eviction and memory fragmentation, using a free list
🖌
10:41Overview of our approach
10:41Overview of our approach
10:41Overview of our approach
13:01Thinking of our available memory in terms of free fragments
13:01Thinking of our available memory in terms of free fragments
13:01Thinking of our available memory in terms of free fragments
14:25Merging contiguous free blocks
14:25Merging contiguous free blocks
14:25Merging contiguous free blocks
16:12We won't be performing small allocations
16:12We won't be performing small allocations
16:12We won't be performing small allocations
16:50Every block will keep information of neighboring blocks
16:50Every block will keep information of neighboring blocks
16:50Every block will keep information of neighboring blocks
18:43A possible way of implementing the allocation operation
18:43A possible way of implementing the allocation operation
18:43A possible way of implementing the allocation operation
24:12We can call EvictAssetsAsNecessary from inside AcquireAssetMemory!
24:12We can call EvictAssetsAsNecessary from inside AcquireAssetMemory!
24:12We can call EvictAssetsAsNecessary from inside AcquireAssetMemory!
28:44Modifying AcquireAssetMemory to work with our own memory
28:44Modifying AcquireAssetMemory to work with our own memory
28:44Modifying AcquireAssetMemory to work with our own memory
36:08Evicting assets to make room for a new one
36:08Evicting assets to make room for a new one
36:08Evicting assets to make room for a new one
37:19Keeping track of the location of our assets
37:19Keeping track of the location of our assets
37:19Keeping track of the location of our assets
40:46Doubly linked list of memory blocks
40:46Doubly linked list of memory blocks
40:46Doubly linked list of memory blocks
50:12FindBlockForSize
50:12FindBlockForSize
50:12FindBlockForSize
52:26Conditionally splitting the memory block used to store an asset as a function of its remaining capacity
52:26Conditionally splitting the memory block used to store an asset as a function of its remaining capacity
52:26Conditionally splitting the memory block used to store an asset as a function of its remaining capacity
56:35Recovering memory blocks inside ReleaseAssetMemory
56:35Recovering memory blocks inside ReleaseAssetMemory
56:35Recovering memory blocks inside ReleaseAssetMemory
58:15Q&A
🗩
58:15Q&A
🗩
58:15Q&A
🗩
59:40jameswidman Given that this is an optimization problem, it seems like we'll want to have a system for profiling asset use and eviction (and check its output periodically as the game and assets grow over the next year or so). Should this be on the agenda in the near term?
🗪
59:40jameswidman Given that this is an optimization problem, it seems like we'll want to have a system for profiling asset use and eviction (and check its output periodically as the game and assets grow over the next year or so). Should this be on the agenda in the near term?
🗪
59:40jameswidman Given that this is an optimization problem, it seems like we'll want to have a system for profiling asset use and eviction (and check its output periodically as the game and assets grow over the next year or so). Should this be on the agenda in the near term?
🗪
1:01:13graeme7 I'm not clear on what happens in the else when we fail to find a block, could you go over it?
🗪
1:01:13graeme7 I'm not clear on what happens in the else when we fail to find a block, could you go over it?
🗪
1:01:13graeme7 I'm not clear on what happens in the else when we fail to find a block, could you go over it?
🗪
1:03:43constantinopol Why do we need to check the remaining size > threshold ? Why not just use the remaining size if it satisfies the request size?
🗪
1:03:43constantinopol Why do we need to check the remaining size > threshold ? Why not just use the remaining size if it satisfies the request size?
🗪
1:03:43constantinopol Why do we need to check the remaining size > threshold ? Why not just use the remaining size if it satisfies the request size?
🗪
1:06:06snafusel How come this memory management system is strictly limited to game assets and not other things as well?
🗪
1:06:06snafusel How come this memory management system is strictly limited to game assets and not other things as well?
🗪
1:06:06snafusel How come this memory management system is strictly limited to game assets and not other things as well?
🗪
1:06:41gasto5 What will the GUI handle? (Answered at 01:11:18)
🗪
1:06:41gasto5 What will the GUI handle? (Answered at 01:11:18)
🗪
1:06:41gasto5 What will the GUI handle? (Answered at 01:11:18)
🗪
1:06:52grumpygiant256 If this were a commercial project, would it make sense to use malloc instead here, or write your own anyway for managing assets?
🗪
1:06:52grumpygiant256 If this were a commercial project, would it make sense to use malloc instead here, or write your own anyway for managing assets?
🗪
1:06:52grumpygiant256 If this were a commercial project, would it make sense to use malloc instead here, or write your own anyway for managing assets?
🗪
1:09:30gasto5 Any possibility of using Markov Chains for the game or game engine?
🗪
1:09:30gasto5 Any possibility of using Markov Chains for the game or game engine?
🗪
1:09:30gasto5 Any possibility of using Markov Chains for the game or game engine?
🗪
1:09:47mojobojo It's looking like Vulkan, if it gets released in a timely manner, is going to be a good choice for hardware rendering. I just read that you have control over all memory to avoid any unknown allocations "Explicit memory management in Vulkan allows applications to use custom allocation strategies. For example to allocate all memory up-front and avoid any allocations during rendering"
🗪
1:09:47mojobojo It's looking like Vulkan, if it gets released in a timely manner, is going to be a good choice for hardware rendering. I just read that you have control over all memory to avoid any unknown allocations "Explicit memory management in Vulkan allows applications to use custom allocation strategies. For example to allocate all memory up-front and avoid any allocations during rendering"
🗪
1:09:47mojobojo It's looking like Vulkan, if it gets released in a timely manner, is going to be a good choice for hardware rendering. I just read that you have control over all memory to avoid any unknown allocations "Explicit memory management in Vulkan allows applications to use custom allocation strategies. For example to allocate all memory up-front and avoid any allocations during rendering"
🗪
1:11:08blah238 Have you thought about having a "prefab" asset that people could use to make more complex assets, like a whole house with functional doors?
🗪
1:11:08blah238 Have you thought about having a "prefab" asset that people could use to make more complex assets, like a whole house with functional doors?
🗪
1:11:08blah238 Have you thought about having a "prefab" asset that people could use to make more complex assets, like a whole house with functional doors?
🗪
1:11:19gasto5 (Referring to Q at 01:06:41) The GUI mentioned in the TODO list
🗪
1:11:19gasto5 (Referring to Q at 01:06:41) The GUI mentioned in the TODO list
🗪
1:11:19gasto5 (Referring to Q at 01:06:41) The GUI mentioned in the TODO list
🗪
1:11:48constantinopol You keep saying "split the block in half" What do you mean? 'Size = Size/2'?
🗪
1:11:48constantinopol You keep saying "split the block in half" What do you mean? 'Size = Size/2'?
🗪
1:11:48constantinopol You keep saying "split the block in half" What do you mean? 'Size = Size/2'?
🗪
1:13:36mojobojo (Referring to Q at 01:09:47) This is where I read it from: http://blog.imgtec.com/powervr/trying-out-the-new-vulkan-graphics-api-on-powervr-gpus
🗪
1:13:36mojobojo (Referring to Q at 01:09:47) This is where I read it from: http://blog.imgtec.com/powervr/trying-out-the-new-vulkan-graphics-api-on-powervr-gpus
🗪
1:13:36mojobojo (Referring to Q at 01:09:47) This is where I read it from: http://blog.imgtec.com/powervr/trying-out-the-new-vulkan-graphics-api-on-powervr-gpus
🗪
1:15:07insofaras Will the debug GUI have a cool console like Quake/Unreal?
🗪
1:15:07insofaras Will the debug GUI have a cool console like Quake/Unreal?
🗪
1:15:07insofaras Will the debug GUI have a cool console like Quake/Unreal?
🗪