2:04Blackboard: Basic process of optimization
2:04Blackboard: Basic process of optimization
2:04Blackboard: Basic process of optimization
10:22GAME_UPDATE_AND_RENDER: Add __rdtsc cycle counts
10:22GAME_UPDATE_AND_RENDER: Add __rdtsc cycle counts
10:22GAME_UPDATE_AND_RENDER: Add __rdtsc cycle counts
11:23Introduce debug_cycle_counter in handmade_platform.h
11:23Introduce debug_cycle_counter in handmade_platform.h
11:23Introduce debug_cycle_counter in handmade_platform.h
13:52Support folks on platforms such as Linux and Mac, etc.
13:52Support folks on platforms such as Linux and Mac, etc.
13:52Support folks on platforms such as Linux and Mac, etc.
18:42Compile, clean and run
18:42Compile, clean and run
18:42Compile, clean and run
19:44FillGroundChunk: Turn off the ground chunks
19:44FillGroundChunk: Turn off the ground chunks
19:44FillGroundChunk: Turn off the ground chunks
20:24Get a look at those timer values
20:24Get a look at those timer values
20:24Get a look at those timer values
26:09Run the game and see the debug cycle count
26:09Run the game and see the debug cycle count
26:09Run the game and see the debug cycle count
27:25We are already missing our budgetα
27:25We are already missing our budgetα
27:25We are already missing our budgetα
28:16Confirm what we know to be true
28:16Confirm what we know to be true
28:16Confirm what we know to be true
28:45RenderGroupToOutput: Add a timed block
28:45RenderGroupToOutput: Add a timed block
28:45RenderGroupToOutput: Add a timed block
29:55Introduce DebugGlobalMemory to enable us to access this timing stuff even when we shouldn't have access to it
29:55Introduce DebugGlobalMemory to enable us to access this timing stuff even when we shouldn't have access to it
29:55Introduce DebugGlobalMemory to enable us to access this timing stuff even when we shouldn't have access to it
32:10Note the difference between the two cycle counts
32:10Note the difference between the two cycle counts
32:10Note the difference between the two cycle counts
33:34Confirm that DrawRectangleSlowly is the culprit
33:34Confirm that DrawRectangleSlowly is the culprit
33:34Confirm that DrawRectangleSlowly is the culprit
35:16Introduce HitCount to discover if DrawRectangleSlowly is slow because it is slow, or because it's called so often
35:16Introduce HitCount to discover if DrawRectangleSlowly is slow because it is slow, or because it's called so often
35:16Introduce HitCount to discover if DrawRectangleSlowly is slow because it is slow, or because it's called so often
37:45Discover that we're calling the renderer thirteen times and DrawRectangleSlowly 64 times
37:45Discover that we're calling the renderer thirteen times and DrawRectangleSlowly 64 times
37:45Discover that we're calling the renderer thirteen times and DrawRectangleSlowly 64 times
39:05Figure out how many pixels we're filling
39:05Figure out how many pixels we're filling
39:05Figure out how many pixels we're filling
43:28Bust out some emacs-fuβ
43:28Bust out some emacs-fuβ
43:28Bust out some emacs-fuβ
43:42Note that we're not operating on that many more pixels than the total on the screen
43:42Note that we're not operating on that many more pixels than the total on the screen
43:42Note that we're not operating on that many more pixels than the total on the screen
44:21Blackboard: Overdraw
44:21Blackboard: Overdraw
44:21Blackboard: Overdraw
46:30Blackboard: Progress report
46:30Blackboard: Progress report
46:30Blackboard: Progress report
47:24Turn off the NormalMap
47:24Turn off the NormalMap
47:24Turn off the NormalMap
48:58Understanding ballpark timings
48:58Understanding ballpark timings
48:58Understanding ballpark timings
1:01:54grumpygiant256 Why no text labels on the counters?
🗪
1:01:54grumpygiant256 Why no text labels on the counters?
🗪
1:01:54grumpygiant256 Why no text labels on the counters?
🗪
1:02:10childz I'm sorry if this is something you've gone over before, but can you explain the difference between new and malloc() in C++ and when each is useful?
🗪
1:02:10childz I'm sorry if this is something you've gone over before, but can you explain the difference between new and malloc() in C++ and when each is useful?
🗪
1:02:10childz I'm sorry if this is something you've gone over before, but can you explain the difference between new and malloc() in C++ and when each is useful?
🗪
1:03:04mrcowking Is your handwriting as bad in real life as it is with a tablet?
🗪
1:03:04mrcowking Is your handwriting as bad in real life as it is with a tablet?
🗪
1:03:04mrcowking Is your handwriting as bad in real life as it is with a tablet?
🗪
1:03:22mr4thdimention Can you also cut out instructions by doing more work to save previous computations. Like d - XAxis, followed by d - XAxis - YAxis. Should that just be 2 instructions?
🗪
1:03:22mr4thdimention Can you also cut out instructions by doing more work to save previous computations. Like d - XAxis, followed by d - XAxis - YAxis. Should that just be 2 instructions?
🗪
1:03:22mr4thdimention Can you also cut out instructions by doing more work to save previous computations. Like d - XAxis, followed by d - XAxis - YAxis. Should that just be 2 instructions?
🗪
1:03:50davidthomas426 Do you think we'll do multithreading in the software renderer?
🗪
1:03:50davidthomas426 Do you think we'll do multithreading in the software renderer?
🗪
1:03:50davidthomas426 Do you think we'll do multithreading in the software renderer?
🗪
1:04:07braincruser Is it possible to Quad-pump every operation?
🗪
1:04:07braincruser Is it possible to Quad-pump every operation?
🗪
1:04:07braincruser Is it possible to Quad-pump every operation?
🗪
1:07:29braincruser I meant, put it in wide instruction (SIMD)
🗪
1:07:29braincruser I meant, put it in wide instruction (SIMD)
🗪
1:07:29braincruser I meant, put it in wide instruction (SIMD)
🗪
1:09:02garryjohanson Would you talk Jeff into doing an optimization stream where you are the TA?
🗪
1:09:02garryjohanson Would you talk Jeff into doing an optimization stream where you are the TA?
🗪
1:09:02garryjohanson Would you talk Jeff into doing an optimization stream where you are the TA?
🗪
1:10:01That is the end of the stream
🗩
1:10:01That is the end of the stream
🗩
1:10:01That is the end of the stream
🗩