Handmade Hero»Episode Guide
LRU Texture Handle Reuse
?
?

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)
0:00Set the stage for an unannounced day mopping up issues1
🗩
0:00Set the stage for an unannounced day mopping up issues1
🗩
0:00Set the stage for an unannounced day mopping up issues1
🗩
1:47Watch the cutscene for incorrect rendering
🏃
1:47Watch the cutscene for incorrect rendering
🏃
1:47Watch the cutscene for incorrect rendering
🏃
5:51Watch the cutscene for a second time, considering that we have a texture transfer problem
🏃
5:51Watch the cutscene for a second time, considering that we have a texture transfer problem
🏃
5:51Watch the cutscene for a second time, considering that we have a texture transfer problem
🏃
6:57Refamiliarise ourselves with the texture transfer code
📖
6:57Refamiliarise ourselves with the texture transfer code
📖
6:57Refamiliarise ourselves with the texture transfer code
📖
14:50Consult docs.GL on glTexImage3D2 and glPixelStore3
📖
14:50Consult docs.GL on glTexImage3D2 and glPixelStore3
📖
14:50Consult docs.GL on glTexImage3D2 and glPixelStore3
📖
18:44Consider instrumenting OpenGLManageTextures() and watch the cutscene to see our rendering artifacts at different places
🏃
18:44Consider instrumenting OpenGLManageTextures() and watch the cutscene to see our rendering artifacts at different places
🏃
18:44Consider instrumenting OpenGLManageTextures() and watch the cutscene to see our rendering artifacts at different places
🏃
21:54Watch the cutscene under NSight
🏃
21:54Watch the cutscene under NSight
🏃
21:54Watch the cutscene under NSight
🏃
24:36Capture a frame during our glitch and inspect the textures
🏃
24:36Capture a frame during our glitch and inspect the textures
🏃
24:36Capture a frame during our glitch and inspect the textures
🏃
28:48Investigate whether or not we are properly reserving our texture transfer memory
📖
28:48Investigate whether or not we are properly reserving our texture transfer memory
📖
28:48Investigate whether or not we are properly reserving our texture transfer memory
📖
37:45Circular buffer usage cases
🖌
37:45Circular buffer usage cases
🖌
37:45Circular buffer usage cases
🖌
42:05Fix our circular buffer usage in BeginTextureOp(), replacing TransferMemoryUsedCount with TransferMemoryLastUsed in renderer_texture_queue
42:05Fix our circular buffer usage in BeginTextureOp(), replacing TransferMemoryUsedCount with TransferMemoryLastUsed in renderer_texture_queue
42:05Fix our circular buffer usage in BeginTextureOp(), replacing TransferMemoryUsedCount with TransferMemoryLastUsed in renderer_texture_queue
51:04Watch the cutscene to see no texture transfer errors first time round
🏃
51:04Watch the cutscene to see no texture transfer errors first time round
🏃
51:04Watch the cutscene to see no texture transfer errors first time round
🏃
54:52Find that the cutscene is busted second time round
🏃
54:52Find that the cutscene is busted second time round
🏃
54:52Find that the cutscene is busted second time round
🏃
56:40Address the "Check z coordinates of cutscene" issue4
📖
56:40Address the "Check z coordinates of cutscene" issue4
📖
56:40Address the "Check z coordinates of cutscene" issue4
📖
59:09Make RenderCutsceneAtTime() start the cutscene at scene 6
59:09Make RenderCutsceneAtTime() start the cutscene at scene 6
59:09Make RenderCutsceneAtTime() start the cutscene at scene 6
1:00:17Increase the Z of scene 6's fourth layer from -3.0 to -2.9
1:00:17Increase the Z of scene 6's fourth layer from -3.0 to -2.9
1:00:17Increase the Z of scene 6's fourth layer from -3.0 to -2.9
1:00:33See fearful tears appear, and close that issue5
🗹
🏃
1:00:33See fearful tears appear, and close that issue5
🗹
🏃
1:00:33See fearful tears appear, and close that issue5
🗹
🏃
1:01:29Texture handle recycling
📖
1:01:29Texture handle recycling
📖
1:01:29Texture handle recycling
📖
1:06:29Implement least-recently-used (LRU) texture handle recycling in GetBitmap()
1:06:29Implement least-recently-used (LRU) texture handle recycling in GetBitmap()
1:06:29Implement least-recently-used (LRU) texture handle recycling in GetBitmap()
1:24:34Initialise our LRU texture handle lists in AllocateGameAssets(), and introduce AcquireTextureHandle()
1:24:34Initialise our LRU texture handle lists in AllocateGameAssets(), and introduce AcquireTextureHandle()
1:24:34Initialise our LRU texture handle lists in AllocateGameAssets(), and introduce AcquireTextureHandle()
1:39:56Watch the cutscene to find that our new LRU texture handle recycling has solved our problem
🏃
1:39:56Watch the cutscene to find that our new LRU texture handle recycling has solved our problem
🏃
1:39:56Watch the cutscene to find that our new LRU texture handle recycling has solved our problem
🏃
1:46:26Close the "Add texture handle recycling to asset system" issue6
🗹
1:46:26Close the "Add texture handle recycling to asset system" issue6
🗹
1:46:26Close the "Add texture handle recycling to asset system" issue6
🗹
1:47:00Fix S32FromZ() to use the Ignored pointer7
1:47:00Fix S32FromZ() to use the Ignored pointer7
1:47:00Fix S32FromZ() to use the Ignored pointer7
1:48:11Close the "S32FromZ unused variable by mistake (minor)" issue8
1:48:11Close the "S32FromZ unused variable by mistake (minor)" issue8
1:48:11Close the "S32FromZ unused variable by mistake (minor)" issue8
1:48:42"Sign extension bug" issue9
📖
1:48:42"Sign extension bug" issue9
📖
1:48:42"Sign extension bug" issue9
📖
1:52:25Step in to Win32ProcessPendingMessages() to see the sign extension occurring in the disassembly
🏃
1:52:25Step in to Win32ProcessPendingMessages() to see the sign extension occurring in the disassembly
🏃
1:52:25Step in to Win32ProcessPendingMessages() to see the sign extension occurring in the disassembly
🏃
1:53:00Prevent IsDown in Win32ProcessPendingMessages() from being sign extended
1:53:00Prevent IsDown in Win32ProcessPendingMessages() from being sign extended
1:53:00Prevent IsDown in Win32ProcessPendingMessages() from being sign extended
1:53:20Step in to Win32ProcessPendingMessages() to see that sign extension no longer occurs
🏃
1:53:20Step in to Win32ProcessPendingMessages() to see that sign extension no longer occurs
🏃
1:53:20Step in to Win32ProcessPendingMessages() to see that sign extension no longer occurs
🏃
1:56:23Close the "Sign extension bug" issue10
🗹
1:56:23Close the "Sign extension bug" issue10
🗹
1:56:23Close the "Sign extension bug" issue10
🗹
1:56:58"Can still call OpenGL.DebugLightBufferTexIndex / OpenGL.DebugLightBufferIndex in release mode" issue11
📖
1:56:58"Can still call OpenGL.DebugLightBufferTexIndex / OpenGL.DebugLightBufferIndex in release mode" issue11
📖
1:56:58"Can still call OpenGL.DebugLightBufferTexIndex / OpenGL.DebugLightBufferIndex in release mode" issue11
📖
1:57:52Remove DebugLightBufferIndex and DebugLightBufferTexIndex from the open_gl struct
1:57:52Remove DebugLightBufferIndex and DebugLightBufferTexIndex from the open_gl struct
1:57:52Remove DebugLightBufferIndex and DebugLightBufferTexIndex from the open_gl struct
1:58:17Close that issue12
🗹
1:58:17Close that issue12
🗹
1:58:17Close that issue12
🗹
1:58:54"Avoid hard dependency on OpenGL 4.2 (glTexStorage3D)" issue13
📖
1:58:54"Avoid hard dependency on OpenGL 4.2 (glTexStorage3D)" issue13
📖
1:58:54"Avoid hard dependency on OpenGL 4.2 (glTexStorage3D)" issue13
📖
1:59:34Make OpenGLInit() pass 0 as the level to the glTexImage3D() call
1:59:34Make OpenGLInit() pass 0 as the level to the glTexImage3D() call
1:59:34Make OpenGLInit() pass 0 as the level to the glTexImage3D() call
2:00:08Find that that works
🏃
2:00:08Find that that works
🏃
2:00:08Find that that works
🏃
2:00:48Close that issue14
🗹
2:00:48Close that issue14
🗹
2:00:48Close that issue14
🗹
2:02:02Q&A
🗩
2:02:02Q&A
🗩
2:02:02Q&A
🗩
2:02:54davechat Q: Does 4coder support indenting of shader code yet?
🗪
2:02:54davechat Q: Does 4coder support indenting of shader code yet?
🗪
2:02:54davechat Q: Does 4coder support indenting of shader code yet?
🗪
2:04:19bryanwwag Q: Personally I've only ever used LRU caches. Have you ever used LFU, and has it worked well?
🗪
2:04:19bryanwwag Q: Personally I've only ever used LRU caches. Have you ever used LFU, and has it worked well?
🗪
2:04:19bryanwwag Q: Personally I've only ever used LRU caches. Have you ever used LFU, and has it worked well?
🗪
2:05:03bryanwwag (least frequently used)15
🗪
2:05:03bryanwwag (least frequently used)15
🗪
2:05:03bryanwwag (least frequently used)15
🗪
2:11:05bryanwwag LFU has more overhead than LRU. More accounting, but statistically it supposedly converges to the same expected values
🗪
2:11:05bryanwwag LFU has more overhead than LRU. More accounting, but statistically it supposedly converges to the same expected values
🗪
2:11:05bryanwwag LFU has more overhead than LRU. More accounting, but statistically it supposedly converges to the same expected values
🗪
2:12:26Custom emotes
🗩
2:12:26Custom emotes
🗩
2:12:26Custom emotes
🗩
2:14:07mint_spider Q: Owl of Shame emote, Pig Hat emote for starters
🗪
2:14:07mint_spider Q: Owl of Shame emote, Pig Hat emote for starters
🗪
2:14:07mint_spider Q: Owl of Shame emote, Pig Hat emote for starters
🗪
2:14:58thebirkisreal Q: Go look at the Handmade Network discord's emotes
🗪
2:14:58thebirkisreal Q: Go look at the Handmade Network discord's emotes
🗪
2:14:58thebirkisreal Q: Go look at the Handmade Network discord's emotes
🗪
2:15:02garryjohanson Q: Jon Blow's face
🗪
2:15:02garryjohanson Q: Jon Blow's face
🗪
2:15:02garryjohanson Q: Jon Blow's face
🗪
2:15:17se5a1 Lemongrab
🗪
2:15:17se5a1 Lemongrab
🗪
2:15:17se5a1 Lemongrab
🗪
2:15:57Wrap it up
🗩
2:15:57Wrap it up
🗩
2:15:57Wrap it up
🗩