[video output=day243 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Asynchronous Texture Downloads" vod_platform=youtube id=onEloWtN91Y annotator=Miblo]
[0:03][Welcome back]
[1:18][Promote 4coder and discuss modal editing]
[10:42][Recap and set the stage for the day]
[12:48][Blackboard: Texture Downloads]
[15:14][Blackboard: Thinking of the GPU memory like a cache]
[18:46][Blackboard: Swizzling]
[19:24]["CBAD, that's my rapper name"][quote 392]
[26:11][Blackboard: Power of 2 textures and modern rectangular texture processing]
[29:12][Blackboard: The problems with our current texture downloading scheme]
[33:59]["Drivers and Windows. They conspire to "help" you"][quote 393]
[34:05][Blackboard: Asset stores]
[37:18][Blackboard: How the CPU asset store works]
[38:52][Blackboard: The GPU asset store]
[42:00][handmade.cpp: Return to the codebase][quote 394]
[42:05][handmade_opengl.cpp: How our loading currently happens]
[44:14][handmade_asset.cpp: Refresh our memories as to what LoadBitmap and LoadAssetWorkDirectly do]
[49:10][handmade_opengl.cpp: Move glTex* calls to handmade_asset.cpp and consider holding the frame if we are not ready with the texture]
[51:07][win32_handmade.cpp: Pull the pieces of the picture together]
[54:02][win32_handmade.cpp: Call Win32CreateOpenGLContextForWorkerThread in ThreadProc]
[55:44][win32_handmade.cpp: Introduce Win32CreateOpenGLContextForWorkerThread]
[1:02:18][win32_handmade.cpp: Introduce struct win32_thread_startup]
[1:04:31][win32_handmade.cpp: Pass Startup to Win32MakeQueue directly]
[1:06:19][win32_handmade.cpp: Undo and introduce GlobalOpenGLRC and GlobalDC instead]
[1:11:13][Run the game and see nothing]
[1:12:02][win32_handmade.cpp: Add bool32 NeedsOpenGL to platform_work_queue]
[1:16:02][Run the game and still see nothing]
[1:16:39][handmade_platform.h: Add platform_allocate_texture and platform_deallocate_texture to platform_api and add their equivalent calls]
[1:20:03][handmade_asset.cpp: Call Platform.AllocateTexture in the FinalizeAsset_Bitmap case]
[1:26:30][win32_handmade.cpp: Write PLATFORM_DEALLOCATE_TEXURE]
[1:28:01]["The stream actually hasn't ended..."][quote 395]
[1:34:08][handmade_asset.h: Add AssetType to asset_memory_header]
[1:39:56][Run the game, see nothing and leave it at that]
[1:41:21][Q&A][:speech]
[1:41:30][@Miblo][Are we missing a Day in the episode guide? The guide only goes up to Day 242, but today's overlay was saying Day 244]
[1:42:39][@garryjohanson][Is it possible to tell OpenGL which graphics card to use if you have more than one in a given machine?]
[1:45:26][@cubercaleb][Is it really a good idea to keep the DC around forever? What if the user changes their monitor config while Handmade Hero is running?]
[1:46:07][@pragmascrypt][Wouldn't the allocate and deallocate texture fit better in the opengl.cpp layer instead of the platform?]
[1:46:26][handmade_opengl.cpp: Move PLATFORM_ALLOCATE_TEXTURE in from win32_handmade.cpp]
[1:46:53][@blah238][What is Microsoft's rationale for not allowing exclusive fullscreen mode for Universal Windows Platform games? Seems like that would just shoot themselves in the foot]
[1:48:19][@ezysigh][Is there a way to preload vertices / normals / colors to the card in the same way as textures (e.g. before glDrawElements is called) or is that usually never an issue?]
[1:49:50][@ffsjs][Could you invite Jeff to "supervise" and "micromanage" you while coding sometime?]
[1:50:54][@cubercaleb][For 3D models isn't it typical to upload the mesh to the GPU once and write a shader that takes a transform matrix for drawing each model?]
[1:52:58][@ffsjs][It was just for entertainment reasons, I wasn't implying anything else. Jeff saying: "you know, I really don't like the name of that "variable""]
[1:54:01][@cubercaleb][How the heck do you even read code with one letter variables?]
[1:56:55][@ffsjs][Thank you for the stream. We are not doing a good job asking relevant questions, obviously]
[1:57:59][Wrap it up for now][:speech]
[1:58:34][Promote 4coder][:speech]
[/video]
