Handmade Hero»Episode Guide
Tracking Asset Usage
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
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 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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
00:00:18Recap and plan for today
00:00:18Recap and plan for today
00:00:18Recap and plan for today
00:01:12Using the OS's virtual memory system to solve our memory management problem
00:01:12Using the OS's virtual memory system to solve our memory management problem
00:01:12Using the OS's virtual memory system to solve our memory management problem
00:04:27Tracking memory load
00:04:27Tracking memory load
00:04:27Tracking memory load
00:04:51Using an allocation scheme that gets the memory from the OS and returns it on eviction
00:04:51Using an allocation scheme that gets the memory from the OS and returns it on eviction
00:04:51Using an allocation scheme that gets the memory from the OS and returns it on eviction
00:08:19Implementing platform_allocate_memory
00:08:19Implementing platform_allocate_memory
00:08:19Implementing platform_allocate_memory
00:10:26These changes break the looped live code editing feature
00:10:26These changes break the looped live code editing feature
00:10:26These changes break the looped live code editing feature
00:12:57Two approaches: a) deferring LoadBitmap calls till the end of the frame and b) keeping some amount of free space to make loading always possible
00:12:57Two approaches: a) deferring LoadBitmap calls till the end of the frame and b) keeping some amount of free space to make loading always possible
00:12:57Two approaches: a) deferring LoadBitmap calls till the end of the frame and b) keeping some amount of free space to make loading always possible
00:13:40Tracking amount of memory used in the asset system (AcquireAssetMemory)
00:13:40Tracking amount of memory used in the asset system (AcquireAssetMemory)
00:13:40Tracking amount of memory used in the asset system (AcquireAssetMemory)
00:15:16RealeaseAssetMemory requires us to provide the size of asset to free
00:15:16RealeaseAssetMemory requires us to provide the size of asset to free
00:15:16RealeaseAssetMemory requires us to provide the size of asset to free
00:18:16Using the platform calls instead of the memory arenas
00:18:16Using the platform calls instead of the memory arenas
00:18:16Using the platform calls instead of the memory arenas
00:19:17Tracking memory usage and freeing memory at the end of the frame (EvictAssetsAsNecessary)
00:19:17Tracking memory usage and freeing memory at the end of the frame (EvictAssetsAsNecessary)
00:19:17Tracking memory usage and freeing memory at the end of the frame (EvictAssetsAsNecessary)
00:21:40Evicting the least recently used asset
00:21:40Evicting the least recently used asset
00:21:40Evicting the least recently used asset
00:23:18EvictAsset
00:23:18EvictAsset
00:23:18EvictAsset
00:26:44Distinguishing between bitmaps and sound inside AssetState
00:26:44Distinguishing between bitmaps and sound inside AssetState
00:26:44Distinguishing between bitmaps and sound inside AssetState
00:29:35Computing the amount of memory taken by an asset
00:29:35Computing the amount of memory taken by an asset
00:29:35Computing the amount of memory taken by an asset
00:35:11Getting rid of duplicated calculations
00:35:11Getting rid of duplicated calculations
00:35:11Getting rid of duplicated calculations
00:41:41Figuring out the location of the chunk of memory to free
00:41:41Figuring out the location of the chunk of memory to free
00:41:41Figuring out the location of the chunk of memory to free
00:45:52Doubly linked list to keep track of least recently used asset
00:45:52Doubly linked list to keep track of least recently used asset
00:45:52Doubly linked list to keep track of least recently used asset
00:52:09Doubly linked list theory (blackboard)
00:52:09Doubly linked list theory (blackboard)
00:52:09Doubly linked list theory (blackboard)
00:53:55AddAssetHeaderToList
00:53:55AddAssetHeaderToList
00:53:55AddAssetHeaderToList
00:56:21Semantic setup of pointers
00:56:21Semantic setup of pointers
00:56:21Semantic setup of pointers
00:57:13RemoveAssetHeaderFromList
00:57:13RemoveAssetHeaderFromList
00:57:13RemoveAssetHeaderFromList
01:02:18Initial sentinel setup
01:02:18Initial sentinel setup
01:02:18Initial sentinel setup
01:04:33We should avoid evicting locked assets
01:04:33We should avoid evicting locked assets
01:04:33We should avoid evicting locked assets
01:07:32Types of doubly linked lists and overview of their implementation
01:07:32Types of doubly linked lists and overview of their implementation
01:07:32Types of doubly linked lists and overview of their implementation
01:10:00Q&A
🗩
01:10:00Q&A
🗩
01:10:00Q&A
🗩
01:10:05noxy_key What function owns the pointer to the head of linked list?
🗪
01:10:05noxy_key What function owns the pointer to the head of linked list?
🗪
01:10:05noxy_key What function owns the pointer to the head of linked list?
🗪
01:10:16zuurr_ Isn't a linked list what you're always told not to do if you're care about the cache at all?
🗪
01:10:16zuurr_ Isn't a linked list what you're always told not to do if you're care about the cache at all?
🗪
01:10:16zuurr_ Isn't a linked list what you're always told not to do if you're care about the cache at all?
🗪
01:11:45insofaras Could the platform_allocate_memory function allocate a few bytes more than requested and store the size there to avoid it having to be passed to the free function?
🗪
01:11:45insofaras Could the platform_allocate_memory function allocate a few bytes more than requested and store the size there to avoid it having to be passed to the free function?
🗪
01:11:45insofaras Could the platform_allocate_memory function allocate a few bytes more than requested and store the size there to avoid it having to be passed to the free function?
🗪
01:12:07constantinopol Having a list header at the end of each asset struct, wouldn't that invalidate the cache a lot, when processing the list, since asset structs are potentially large?
🗪
01:12:07constantinopol Having a list header at the end of each asset struct, wouldn't that invalidate the cache a lot, when processing the list, since asset structs are potentially large?
🗪
01:12:07constantinopol Having a list header at the end of each asset struct, wouldn't that invalidate the cache a lot, when processing the list, since asset structs are potentially large?
🗪
01:13:14phazyck In RemoveAssetHeaderFromList, would it make sense to zero out the prev and next pointers of the header that is being removed, or is it just unnecessary cleanup? Are there pros and cons to this?
🗪
01:13:14phazyck In RemoveAssetHeaderFromList, would it make sense to zero out the prev and next pointers of the header that is being removed, or is it just unnecessary cleanup? Are there pros and cons to this?
🗪
01:13:14phazyck In RemoveAssetHeaderFromList, would it make sense to zero out the prev and next pointers of the header that is being removed, or is it just unnecessary cleanup? Are there pros and cons to this?
🗪
01:13:56captainduh Will there be a fountain of heads somewhere in the actual game, possibly as a Halloween item?
🗪
01:13:56captainduh Will there be a fountain of heads somewhere in the actual game, possibly as a Halloween item?
🗪
01:13:56captainduh Will there be a fountain of heads somewhere in the actual game, possibly as a Halloween item?
🗪
01:14:03sukmiekok Is Twitch your full-time job?
🗪
01:14:03sukmiekok Is Twitch your full-time job?
🗪
01:14:03sukmiekok Is Twitch your full-time job?
🗪
01:14:07guit4rfreak How will you re-enable the live code reloading after this is done?
🗪
01:14:07guit4rfreak How will you re-enable the live code reloading after this is done?
🗪
01:14:07guit4rfreak How will you re-enable the live code reloading after this is done?
🗪
01:15:13cubercaleb Can you briefly go over inlined functions?
🗪
01:15:13cubercaleb Can you briefly go over inlined functions?
🗪
01:15:13cubercaleb Can you briefly go over inlined functions?
🗪
01:16:20abnercoimbre Which classic data structure do you enjoy implementing the most?
🗪
01:16:20abnercoimbre Which classic data structure do you enjoy implementing the most?
🗪
01:16:20abnercoimbre Which classic data structure do you enjoy implementing the most?
🗪
01:17:08grumpygiant256 Does/will this system support hotloading of assets?
🗪
01:17:08grumpygiant256 Does/will this system support hotloading of assets?
🗪
01:17:08grumpygiant256 Does/will this system support hotloading of assets?
🗪
01:18:38guit4rfreak Does it make sense to write your own non-block dynamic allocator instead of using the memory system of the OS?
🗪
01:18:38guit4rfreak Does it make sense to write your own non-block dynamic allocator instead of using the memory system of the OS?
🗪
01:18:38guit4rfreak Does it make sense to write your own non-block dynamic allocator instead of using the memory system of the OS?
🗪