Capturing the Entire Lighting Data
?
?

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:02Welcome to the stream
🗩
0:02Welcome to the stream
🗩
0:02Welcome to the stream
🗩
0:08Plug the Meow the Infinite printed comic Kickstarter1 and the related fun videos at Molly Rocket's YouTube channel2
📖
0:08Plug the Meow the Infinite printed comic Kickstarter1 and the related fun videos at Molly Rocket's YouTube channel2
📖
0:08Plug the Meow the Infinite printed comic Kickstarter1 and the related fun videos at Molly Rocket's YouTube channel2
📖
4:06Dive into the code
🗩
4:06Dive into the code
🗩
4:06Dive into the code
🗩
4:46Fix hhlightprof to allocate memory for four times the BoxCount to allow room for child boxes
4:46Fix hhlightprof to allocate memory for four times the BoxCount to allow room for child boxes
4:46Fix hhlightprof to allocate memory for four times the BoxCount to allow room for child boxes
5:12Determine to pseudo-verify our standalone ray tracer
🗩
5:12Determine to pseudo-verify our standalone ray tracer
🗩
5:12Determine to pseudo-verify our standalone ray tracer
🗩
6:44Determine to learn VTune
🗩
6:44Determine to learn VTune
🗩
6:44Determine to learn VTune
🗩
7:19Run hhlightprof for 16 seconds, to completion
🏃
7:19Run hhlightprof for 16 seconds, to completion
🏃
7:19Run hhlightprof for 16 seconds, to completion
🏃
7:41Decrease the ray multiplier from 256 to 64 in TestRayCast()
7:41Decrease the ray multiplier from 256 to 64 in TestRayCast()
7:41Decrease the ray multiplier from 256 to 64 in TestRayCast()
7:51Run hhlightprof for 4 seconds, to completion
🏃
7:51Run hhlightprof for 4 seconds, to completion
🏃
7:51Run hhlightprof for 4 seconds, to completion
🏃
8:00Increase the ray multiplier from 64 to 128 in TestRayCast()
8:00Increase the ray multiplier from 64 to 128 in TestRayCast()
8:00Increase the ray multiplier from 64 to 128 in TestRayCast()
8:08Run hhlightprof for 7 seconds, to completion
🏃
8:08Run hhlightprof for 7 seconds, to completion
🏃
8:08Run hhlightprof for 7 seconds, to completion
🏃
8:15Launch VTune and hunt its interface for custom analysis capabilities
🏃
8:15Launch VTune and hunt its interface for custom analysis capabilities
🏃
8:15Launch VTune and hunt its interface for custom analysis capabilities
🏃
11:45Launch VTune as administrator
🏃
11:45Launch VTune as administrator
🏃
11:45Launch VTune as administrator
🏃
12:11Consult VTune's documentation3
📖
12:11Consult VTune's documentation3
📖
12:11Consult VTune's documentation3
📖
14:09Research VTune's Hardware Event-based Sampling Collection4
📖
14:09Research VTune's Hardware Event-based Sampling Collection4
📖
14:09Research VTune's Hardware Event-based Sampling Collection4
📖
15:45Research VTune's Microarchitecture Exploration Analysis for Hardware Issues5
📖
15:45Research VTune's Microarchitecture Exploration Analysis for Hardware Issues5
📖
15:45Research VTune's Microarchitecture Exploration Analysis for Hardware Issues5
📖
16:02Research VTune's Custom Analysis6
📖
16:02Research VTune's Custom Analysis6
📖
16:02Research VTune's Custom Analysis6
📖
16:27Create a new "Fruit Salad x12" custom analysis in VTune
🗹
16:27Create a new "Fruit Salad x12" custom analysis in VTune
🗹
16:27Create a new "Fruit Salad x12" custom analysis in VTune
🗹
18:15Some words on x64 performance counters
🗩
18:15Some words on x64 performance counters
🗩
18:15Some words on x64 performance counters
🗩
21:14Continue to create our "Fruit Salad x12" custom analysis in VTune
🗹
21:14Continue to create our "Fruit Salad x12" custom analysis in VTune
🗹
21:14Continue to create our "Fruit Salad x12" custom analysis in VTune
🗹
23:25Rename "Fruit Salad x12" to "No Counters Template" and clone it as "The Ultimate Fruit Salad"
🗹
23:25Rename "Fruit Salad x12" to "No Counters Template" and clone it as "The Ultimate Fruit Salad"
🗹
23:25Rename "Fruit Salad x12" to "No Counters Template" and clone it as "The Ultimate Fruit Salad"
🗹
24:36Enable our desired counters in "The Ultimate Fruit Salad"
🗹
24:36Enable our desired counters in "The Ultimate Fruit Salad"
🗹
24:36Enable our desired counters in "The Ultimate Fruit Salad"
🗹
25:42Run hhlightprof in VTune
🏃
25:42Run hhlightprof in VTune
🏃
25:42Run hhlightprof in VTune
🏃
25:58Consult our VTune Hardware Events analysis
🏃
25:58Consult our VTune Hardware Events analysis
🏃
25:58Consult our VTune Hardware Events analysis
🏃
27:44A few words on 4 µOPs per cycle issuance
🗩
27:44A few words on 4 µOPs per cycle issuance
🗩
27:44A few words on 4 µOPs per cycle issuance
🗩
29:54Continue to consult our VTune Hardware Events analysis
🏃
29:54Continue to consult our VTune Hardware Events analysis
🏃
29:54Continue to consult our VTune Hardware Events analysis
🏃
30:44Rename "The Ultimate Fruit Salad" to "Instructions Per Clock" and swap out the UOPS_EXECUTED.CORE_CYCLES_NONE counter for UOPS_EXECUTED.CORE_CYCLES_GE_4
🗹
30:44Rename "The Ultimate Fruit Salad" to "Instructions Per Clock" and swap out the UOPS_EXECUTED.CORE_CYCLES_NONE counter for UOPS_EXECUTED.CORE_CYCLES_GE_4
🗹
30:44Rename "The Ultimate Fruit Salad" to "Instructions Per Clock" and swap out the UOPS_EXECUTED.CORE_CYCLES_NONE counter for UOPS_EXECUTED.CORE_CYCLES_GE_4
🗹
31:58Run our "Instructions Per Clock" analysis of hhlightprof
🏃
31:58Run our "Instructions Per Clock" analysis of hhlightprof
🏃
31:58Run our "Instructions Per Clock" analysis of hhlightprof
🏃
32:13Consult our "Instructions Per Clock" VTune analysis
🏃
32:13Consult our "Instructions Per Clock" VTune analysis
🏃
32:13Consult our "Instructions Per Clock" VTune analysis
🏃
32:42Interpret our "Instructions Per Clock" VTune analysis
🏃
32:42Interpret our "Instructions Per Clock" VTune analysis
🏃
32:42Interpret our "Instructions Per Clock" VTune analysis
🏃
34:36Get the Work In More Efficiently vs Do the Work More Efficiently
🗩
34:36Get the Work In More Efficiently vs Do the Work More Efficiently
🗩
34:36Get the Work In More Efficiently vs Do the Work More Efficiently
🗩
35:04Create a new "Arithmetic Port Usage" custom analysis in VTune
🗹
35:04Create a new "Arithmetic Port Usage" custom analysis in VTune
🗹
35:04Create a new "Arithmetic Port Usage" custom analysis in VTune
🗹
38:16Understanding port usage with uops.info7
📖
38:16Understanding port usage with uops.info7
📖
38:16Understanding port usage with uops.info7
📖
43:08Enable the counters of ports 0, 1 and 5, renaming "Arithmetic Port Usage" to "Float Port Usage"
🗹
43:08Enable the counters of ports 0, 1 and 5, renaming "Arithmetic Port Usage" to "Float Port Usage"
🗹
43:08Enable the counters of ports 0, 1 and 5, renaming "Arithmetic Port Usage" to "Float Port Usage"
🗹
44:08Run our "Float Port Usage" analysis of hhlightprof
🏃
44:08Run our "Float Port Usage" analysis of hhlightprof
🏃
44:08Run our "Float Port Usage" analysis of hhlightprof
🏃
44:23Consult our "Float Port Usage" VTune analysis
🏃
44:23Consult our "Float Port Usage" VTune analysis
🏃
44:23Consult our "Float Port Usage" VTune analysis
🏃
46:54Create a new "All Ports Usage" custom analysis in VTune
🗹
46:54Create a new "All Ports Usage" custom analysis in VTune
🗹
46:54Create a new "All Ports Usage" custom analysis in VTune
🗹
47:44Run our "All Ports Usage" analysis of hhlightprof
🏃
47:44Run our "All Ports Usage" analysis of hhlightprof
🏃
47:44Run our "All Ports Usage" analysis of hhlightprof
🏃
48:00Consult our "All Ports Usage" VTune analysis, noting that port 4 is the write port8
🏃
48:00Consult our "All Ports Usage" VTune analysis, noting that port 4 is the write port8
🏃
48:00Consult our "All Ports Usage" VTune analysis, noting that port 4 is the write port8
🏃
50:26Interpret our "All Ports Usage" VTune analysis, desiring to Get the Work In More Efficiently
🏃
50:26Interpret our "All Ports Usage" VTune analysis, desiring to Get the Work In More Efficiently
🏃
50:26Interpret our "All Ports Usage" VTune analysis, desiring to Get the Work In More Efficiently
🏃
52:34Determine to validate our code
🗩
52:34Determine to validate our code
🗩
52:34Determine to validate our code
🗩
53:39Step through an -Od build of hhlightprof
🏃
53:39Step through an -Od build of hhlightprof
🏃
53:39Step through an -Od build of hhlightprof
🏃
58:38Disable the LightBoxDumpTrigger
58:38Disable the LightBoxDumpTrigger
58:38Disable the LightBoxDumpTrigger
58:46Continue to step through hhlightprof
🏃
58:46Continue to step through hhlightprof
🏃
58:46Continue to step through hhlightprof
🏃
1:02:25Make EndLightingComputation() call DEBUGDumpData() on the SpecAtlas, DiffuseAtlas, and the entire lighting Solution
1:02:25Make EndLightingComputation() call DEBUGDumpData() on the SpecAtlas, DiffuseAtlas, and the entire lighting Solution
1:02:25Make EndLightingComputation() call DEBUGDumpData() on the SpecAtlas, DiffuseAtlas, and the entire lighting Solution
1:07:31Dump the lighting data to file
🏃
1:07:31Dump the lighting data to file
🏃
1:07:31Dump the lighting data to file
🏃
1:08:29Check out our lighting debug dumps
🗹
1:08:29Check out our lighting debug dumps
🗹
1:08:29Check out our lighting debug dumps
🗹
1:08:52Make TestRayCast() in hhlightprof do the full ComputeLightPropagationWork(), replacing Commands in the lighting_work with the DiffuseAtlas and SpecAtlas
1:08:52Make TestRayCast() in hhlightprof do the full ComputeLightPropagationWork(), replacing Commands in the lighting_work with the DiffuseAtlas and SpecAtlas
1:08:52Make TestRayCast() in hhlightprof do the full ComputeLightPropagationWork(), replacing Commands in the lighting_work with the DiffuseAtlas and SpecAtlas
1:14:53Introduce LoadEntireFile() in hhlightprof, and load in all our lighting dumps
1:14:53Introduce LoadEntireFile() in hhlightprof, and load in all our lighting dumps
1:14:53Introduce LoadEntireFile() in hhlightprof, and load in all our lighting dumps
1:21:01Set up hhlightprof to use our loaded dumps
1:21:01Set up hhlightprof to use our loaded dumps
1:21:01Set up hhlightprof to use our loaded dumps
1:25:12Hit a write access violation on the Solution->SamplingSpheres
🏃
1:25:12Hit a write access violation on the Solution->SamplingSpheres
🏃
1:25:12Hit a write access violation on the Solution->SamplingSpheres
🏃
1:25:41Hit a write access violation on Byte in ZeroSize()
🏃
1:25:41Hit a write access violation on Byte in ZeroSize()
🏃
1:25:41Hit a write access violation on Byte in ZeroSize()
🏃
1:25:45Allocate memory for the Solution->Works
1:25:45Allocate memory for the Solution->Works
1:25:45Allocate memory for the Solution->Works
1:28:11Run hhlightprof successfully
🏃
1:28:11Run hhlightprof successfully
🏃
1:28:11Run hhlightprof successfully
🏃
1:28:21Make hhlightprof validate our SpecAtlas texels
1:28:21Make hhlightprof validate our SpecAtlas texels
1:28:21Make hhlightprof validate our SpecAtlas texels
1:31:14Run hhlightprof with non-zero errors
🏃
1:31:14Run hhlightprof with non-zero errors
🏃
1:31:14Run hhlightprof with non-zero errors
🏃
1:31:57Run hhlightprof in -O2 with non-zero errors
🏃
1:31:57Run hhlightprof in -O2 with non-zero errors
🏃
1:31:57Run hhlightprof in -O2 with non-zero errors
🏃
1:32:02Make hhlightprof print the TexelCount
1:32:02Make hhlightprof print the TexelCount
1:32:02Make hhlightprof print the TexelCount
1:32:28Run hhlightprof with non-zero errors
🏃
1:32:28Run hhlightprof with non-zero errors
🏃
1:32:28Run hhlightprof with non-zero errors
🏃
1:32:51Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:32:51Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:32:51Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:33:49Run hhlightprof with a similar number of errors
🏃
1:33:49Run hhlightprof with a similar number of errors
🏃
1:33:49Run hhlightprof with a similar number of errors
🏃
1:34:32Double-check our SpecAtlas validity checking
📖
1:34:32Double-check our SpecAtlas validity checking
📖
1:34:32Double-check our SpecAtlas validity checking
📖
1:35:04Try making hhlightprof overwrite the tUpdateBlend as 0.0f
1:35:04Try making hhlightprof overwrite the tUpdateBlend as 0.0f
1:35:04Try making hhlightprof overwrite the tUpdateBlend as 0.0f
1:35:22Run hhlightprof with a changed number of errors
🏃
1:35:22Run hhlightprof with a changed number of errors
🏃
1:35:22Run hhlightprof with a changed number of errors
🏃
1:35:41Try making hhlightprof overwrite the tUpdateBlend as 100.0f
1:35:41Try making hhlightprof overwrite the tUpdateBlend as 100.0f
1:35:41Try making hhlightprof overwrite the tUpdateBlend as 100.0f
1:35:55Run hhlightprof with an infinite number of errors
🏃
1:35:55Run hhlightprof with an infinite number of errors
🏃
1:35:55Run hhlightprof with an infinite number of errors
🏃
1:36:03Try making hhlightprof overwrite the tUpdateBlend as 10.0f
1:36:03Try making hhlightprof overwrite the tUpdateBlend as 10.0f
1:36:03Try making hhlightprof overwrite the tUpdateBlend as 10.0f
1:36:14Run hhlightprof with many errors
🏃
1:36:14Run hhlightprof with many errors
🏃
1:36:14Run hhlightprof with many errors
🏃
1:36:16Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:36:16Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:36:16Try making hhlightprof overwrite the tUpdateBlend as 1.0f
1:36:22Run hhlightprof with few errors
🏃
1:36:22Run hhlightprof with few errors
🏃
1:36:22Run hhlightprof with few errors
🏃
1:36:33Prevent hhlightprof from overwriting the tUpdateBlend
1:36:33Prevent hhlightprof from overwriting the tUpdateBlend
1:36:33Prevent hhlightprof from overwriting the tUpdateBlend
1:36:41Continue to scour hhlightprof and Handmade Hero's lighting system for inconsistencies
📖
1:36:41Continue to scour hhlightprof and Handmade Hero's lighting system for inconsistencies
📖
1:36:41Continue to scour hhlightprof and Handmade Hero's lighting system for inconsistencies
📖
1:43:47Make TestRayCast() set the Work->VoxelX
1:43:47Make TestRayCast() set the Work->VoxelX
1:43:47Make TestRayCast() set the Work->VoxelX
1:44:39Run hhlightprof, still with errors
🏃
1:44:39Run hhlightprof, still with errors
🏃
1:44:39Run hhlightprof, still with errors
🏃
1:44:54Introduce InternalLightingCore() to perform our dumps
1:44:54Introduce InternalLightingCore() to perform our dumps
1:44:54Introduce InternalLightingCore() to perform our dumps
1:49:22Run hhlightprof, still with errors
🏃
1:49:22Run hhlightprof, still with errors
🏃
1:49:22Run hhlightprof, still with errors
🏃
1:49:33Q&A
🗩
1:49:33Q&A
🗩
1:49:33Q&A
🗩
1:49:58somebody_took_my_name Q: Is it still building under the overdose flag?
🗪
1:49:58somebody_took_my_name Q: Is it still building under the overdose flag?
🗪
1:49:58somebody_took_my_name Q: Is it still building under the overdose flag?
🗪
1:50:32uplinkcoder Q: Maybe capture a single threaded run?
🗪
1:50:32uplinkcoder Q: Maybe capture a single threaded run?
🗪
1:50:32uplinkcoder Q: Maybe capture a single threaded run?
🗪
1:52:05wakeuphate Q: On your UOPS info table9 earlier in the stream, you were set to Skylake rather than Kaby Lake, just in case that's why you were seeing issues then
🗪
1:52:05wakeuphate Q: On your UOPS info table9 earlier in the stream, you were set to Skylake rather than Kaby Lake, just in case that's why you were seeing issues then
🗪
1:52:05wakeuphate Q: On your UOPS info table9 earlier in the stream, you were set to Skylake rather than Kaby Lake, just in case that's why you were seeing issues then
🗪
1:55:29dataqsloth Q: Have you considered releasing your C course earlier as a beta release (even full price) just because so many of us and people we know are currently on quarantine!
🗪
1:55:29dataqsloth Q: Have you considered releasing your C course earlier as a beta release (even full price) just because so many of us and people we know are currently on quarantine!
🗪
1:55:29dataqsloth Q: Have you considered releasing your C course earlier as a beta release (even full price) just because so many of us and people we know are currently on quarantine!
🗪
1:55:59ikojan How long would the course be?
🗪
1:55:59ikojan How long would the course be?
🗪
1:55:59ikojan How long would the course be?
🗪
1:57:24vaualbus Q: Is it really bad on x86 to do unaligned pointers? Because I have a packed structure with pointers and the compiler is warning me about unaligned pointers. (Apparently there is a declspec to allow unaligned pointers?)
🗪
1:57:24vaualbus Q: Is it really bad on x86 to do unaligned pointers? Because I have a packed structure with pointers and the compiler is warning me about unaligned pointers. (Apparently there is a declspec to allow unaligned pointers?)
🗪
1:57:24vaualbus Q: Is it really bad on x86 to do unaligned pointers? Because I have a packed structure with pointers and the compiler is warning me about unaligned pointers. (Apparently there is a declspec to allow unaligned pointers?)
🗪
2:00:15leo0230 Q: Do instructions with memory operands actually use the arithmetic units before the data is ready?10
🗪
2:00:15leo0230 Q: Do instructions with memory operands actually use the arithmetic units before the data is ready?10
🗪
2:00:15leo0230 Q: Do instructions with memory operands actually use the arithmetic units before the data is ready?10
🗪
2:03:03enyo_enev Q: Is it going to be useful for hardcore fans of Handmade Hero?
🗪
2:03:03enyo_enev Q: Is it going to be useful for hardcore fans of Handmade Hero?
🗪
2:03:03enyo_enev Q: Is it going to be useful for hardcore fans of Handmade Hero?
🗪
2:03:51ikojan Q: Will the course be project-based, where throughout the course you'll be making x or y project?
🗪
2:03:51ikojan Q: Will the course be project-based, where throughout the course you'll be making x or y project?
🗪
2:03:51ikojan Q: Will the course be project-based, where throughout the course you'll be making x or y project?
🗪
2:04:00mindmark42 Q: Is there an API to access the performance counters so you don't have to use VTune?
🗪
2:04:00mindmark42 Q: Is there an API to access the performance counters so you don't have to use VTune?
🗪
2:04:00mindmark42 Q: Is there an API to access the performance counters so you don't have to use VTune?
🗪
2:05:45Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter11 and related fun videos at Molly Rocket's YouTube channel12
🗩
2:05:45Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter11 and related fun videos at Molly Rocket's YouTube channel12
🗩
2:05:45Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter11 and related fun videos at Molly Rocket's YouTube channel12
🗩