mobilizing call of duty - the khronos group inc...' v o s µ o l v k ] u ] Ì ] } v z v w ² d...
TRANSCRIPT
![Page 1: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/1.jpg)
Mobilizing Call of Duty:Bringing a Blockbuster Title to AndroidReboot Develop Red 2019
Benjamin MitchellGameDev Engineer, Samsung Electronics
![Page 2: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/2.jpg)
![Page 3: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/3.jpg)
Galaxy GameDev : since 2016
![Page 4: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/4.jpg)
![Page 5: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/5.jpg)
Bringing Call of Duty to Mobile
• Call of Duty Mobile
• Adaptive Performance
• Vulkan Optimizations
![Page 6: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/6.jpg)
![Page 7: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/7.jpg)
Call of Duty Mobile
![Page 8: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/8.jpg)
Call of Duty Mobile
![Page 9: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/9.jpg)
Call of Duty Mobile
![Page 10: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/10.jpg)
Call of Duty Mobile
![Page 11: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/11.jpg)
Call of Duty Mobile
![Page 12: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/12.jpg)
![Page 13: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/13.jpg)
Mobile Limitation
FPS
Core Freq
Temperature After Throttling• Temperature– No active cooling
– Performance Throttling
• Power– Limitation of Battery
• Performance– Hardware Fragmentation
• Optimization is out of the Developer’s control.
![Page 14: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/14.jpg)
Adaptive Performance
Galaxy Game SDK
14
• Gather Data- Device Performance- Thermal Trends
• Adapt Performance- Adjust Quality Settings- Modify performance requirements
![Page 15: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/15.jpg)
Power Manager
Power Budget Control
Default Core Frequencies
With Frequency Cap
![Page 16: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/16.jpg)
Power Manager
Frame Time Tracking
1.0 ms
Bottleneck Detection
FrameTime
CPUTime
GPUTime
Target FPS
CPU
GPUGPUTime
CPUTime
FrameTime
Bottleneck Detection
FrameTime
CPUTime
GPUTime
Target FPS
CPU
GPU
1.0 ms
1.0 ms
![Page 17: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/17.jpg)
Default Power ManagerAuto Perf Control
Temp Trend
Target FPS
U/D CPU
U/D GPU
Value
U/D CPU
U/D GPU
Update Interval
CPU Level
CPU Level CPU Level
GPU Level
GPU Level GPU Level
TempTrend
Bottleneck Detection
FrameTime
CPU Time
GPUTime
Target FPS
CPU
GPU
Bottleneck
Mode Allow U/D CPU
Allow U/D GPU
GPUTime
CPUTime
FrameTime
![Page 18: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/18.jpg)
![Page 19: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/19.jpg)
Adaptive Performance Quality Scaling
• Quality Scale Factors
• Shadow/Rendering Distance
• Texture LoD
• Animation LoD
• Target Frame Rate
![Page 20: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/20.jpg)
Power Manager + Dynamic Quality Scaling
30
15
200 10
Time [m]
![Page 21: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/21.jpg)
Adaptive Performance is now available
![Page 22: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/22.jpg)
Adaptive Performance is now available
22
![Page 23: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/23.jpg)
Adaptive Performance in Call of Duty Mobile
![Page 24: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/24.jpg)
Adaptive Performance in Call of Duty Mobile
• Quality Scale Factors
• Shadow Distance
• Foliage LoD
• Animation LoD
• Target Frame Rate
• Power Management
• Bottleneck Detection
• CPU/GPU Power Budget Control
![Page 25: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/25.jpg)
Adaptive Performance
Feature Parameter Scaling Impact
Shadow Distance 80 ~ 50 CPU 0~10% offloading
Foliage LOD 1 ~ 0.8 GPU 0~5% offloading
Animation LOD 0 ~ 2 CPU 0~3% offloadingGPU 0~1% offloading
Target Frame Rate 57 ~ 60 CPU 0~5% offloadingGPU 0~5% offloading
Shadow Distance(80 ~ 50)
Foliage LOD(1.0 ~ 0.8)
![Page 26: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/26.jpg)
Adaptive Performance
• Adaptive Performance
vs Normal Condition
Feature ADP Normal
FPS 58 54Stability (%) 100 100
CPU (%) 11.37 11.69
GPU (%) 80.08 87.85
FPS
ADP-FPS Normal-FPS
![Page 27: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/27.jpg)
Adaptive Performance
• Can save power and
manage thermal better
Feature ADP Normal
FPS 58 54Stability (%) 100 100
CPU (%) 11.37 11.69
GPU (%) 80.08 87.85
Temperature
Normal ADP 60 160 260 360 460
Max Freq
ADP-CPU ADP-GPU
Normal-CPU Normal-GPU
![Page 28: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/28.jpg)
![Page 29: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/29.jpg)
General Vulkan Optimizations
• Pipeline Barriers
• Ensure most optimal stage masks
• Batch them!• Load/Store Ops
• You don’t always have to care!
• LoadOpLoad and StoreOpStore• Cache Stuff
• PSOs
• Descriptor Sets
![Page 30: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/30.jpg)
General Vulkan Optimizations
• Pipeline Barriers
• Ensure most optimal stage masks
• Batch them!• Load/Store Ops
• You don’t always have to care!
• LoadOpLoad and StoreOpStore• Cache Stuff
• PSOs
• Descriptor Sets
![Page 31: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/31.jpg)
General Vulkan Optimizations• Pipeline Barriers
— Ensure optimal use of stage masks
— This is NOT optimal
Vertex Shader
Fragment Shader
Vertex Shader
...
Fragment Shader
Vertex Shader
...
Fragment Shader
...
SRC VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
DST VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
![Page 32: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/32.jpg)
General Vulkan Optimizations• Pipeline Barriers
— Ensure optimal use of stage masks
— This IS optimal
Vertex Shader
Fragment Shader
Vertex Shader
...
Fragment Shader
Vertex Shader
...
Fragment Shader
...
SRC VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
DST VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
![Page 33: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/33.jpg)
General Vulkan Optimizations• Pipeline Barriers
— Batch them!
vkCmdPipelineBarrier(…, 1, &barrier);
vkCmdPipelineBarrier(…, 1, &barrier);
vkCmdPipelineBarrier(…, 1, &barrier);
vkCmdPipelineBarrier(…, 1, &barrier);
vkCmdPipelineBarrier(…, 1, &barrier);
vkCmdPipelineBarrier(…, 5, &barriers.getData());
![Page 34: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/34.jpg)
General Vulkan Optimizations
• Pipeline Barriers
• Ensure most optimal stage masks
• Batch them!• Load/Store Ops
• You don’t always have to care!
• LoadOpLoad and StoreOpStore• Cache Stuff
• PSOs
• Descriptor Sets
![Page 35: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/35.jpg)
General Vulkan Optimizations• Load/Store Ops
— You don’t always have to care!
colorAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE
colorAttachment.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE
colorAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD
colorAttachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE
![Page 36: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/36.jpg)
General Vulkan Optimizations
• Pipeline Barriers
• Ensure most optimal stage masks
• Batch them!• Load/Store Ops
• You don’t always have to care!
• LoadOpLoad and StoreOpStore• Cache Stuff
• Use VKPipelineCache
• Descriptor Sets
![Page 37: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/37.jpg)
General Vulkan Optimizations• Cache Stuff
— Use VkPipelineCache
— Descriptor Sets
vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, …);
1st Run
vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, …);
2nd Run
vkCreateGraphicsPipelines(device, pipelineCache, …);
2nd Run
vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, …);
1st Run
vkCreatePipelineCache(device, &createInfo, NULL, &cache);
![Page 38: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/38.jpg)
General Vulkan Optimizations• Cache Stuff
— Use VkPipelineCache
— Descriptor Sets
vkUpdateDescriptorSets(device, …);
1st Frame
vkUpdateDescriptorSets(device, …);
All remaining Frames
descriptorSet = someDescriptorMap.find(resourceKey);
All remaining Frames
vkUpdateDescriptorSets(device, …);
1st Frame
someDescriptorMap.emplace(resourceKey, &descriptorSet);
![Page 39: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/39.jpg)
General Vulkan Optimizations
• Pipeline Barriers
• Ensure most optimal stage masks
• Batch them!• Load/Store Ops
• You don’t always have to care!
• LoadOpLoad and StoreOpStore• Cache Stuff
• PSOs
• Descriptor Sets
![Page 40: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/40.jpg)
General Vulkan Optimizations
• WaitForFence
• Try to avoid it!
• Use a pool of Command Buffers• RenderPasses
• Minimize switching
• Combine passes!• Threads
• Put stuff on other threads.
![Page 41: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/41.jpg)
General Vulkan Optimizations
• WaitForFence
• Try to avoid it!
• Use a pool of Command Buffers• RenderPasses
• Minimize switching
• Combine passes!• Threads
• Put stuff on other threads.
![Page 42: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/42.jpg)
General Vulkan Optimizations• WaitForFences
— Try to avoid it!
— Make use of pools of command buffers
…
vkWaitForFences(device, 1, &fence, true, timeout);
…if(!fencePool.empty())
fence = fencePool.pop_back();
Else
fence = vkCreateFence(…, &fenceToUse);
result = vkGetFenceStatus(device, fence);
if(result == VK_STATUS_NOT_READY)
fencePool.push_back(fence);
![Page 43: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/43.jpg)
General Vulkan Optimizations
• WaitForFence
• Try to avoid it!
• Use a pool of Command Buffers• RenderPasses
• Minimize switching
• Combine passes!• Threads
• Put stuff on other threads.
![Page 44: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/44.jpg)
General Vulkan Optimizations• RenderPasses
— Minimize switching
vkCmdBeginRenderPass(commandBuffer, &beginInfo, contents);
vkCmdEndRenderPass(commandBuffer);
vkCmdBeginRenderPass(commandBuffer, &beginInfo, contents);
DrawObjects2();
DrawObjects1();
vkCmdEndRenderPass(commandBuffer);
vkCmdBeginRenderPass(commandBuffer, &beginInfo, contents);
DrawObjects2();
DrawObjects1();
vkCmdEndRenderPass(commandBuffer);
![Page 45: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/45.jpg)
General Vulkan Optimizations
• WaitForFence
• Try to avoid it!
• Use a pool of Command Buffers• RenderPasses
• Minimize switching
• Combine passes!• Threads
• Put stuff on other threads.
![Page 46: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/46.jpg)
General Vulkan Optimizations• Threads
Task 1 Task 2 Task 3 Task 1
Task 1 Task 2
Task 3
Original
Multi-Threaded
Thread 1
Thread 2
Thread 1
Task 3
Task 1 Task 2
![Page 47: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/47.jpg)
General Vulkan Optimizations
• WaitForFence
• Try to avoid it!
• Use a pool of Command Buffers• RenderPasses
• Minimize switching
• Combine passes!• Threads
• Put stuff on other threads.
![Page 48: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/48.jpg)
Vulkan Optimizations in Call of Duty Mobile
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 49: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/49.jpg)
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
Vulkan Optimizations
![Page 50: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/50.jpg)
Vulkan Optimizations
— Ring buffer for all needs
— Usually recreated only during first load
Allocate Allocate Allocate
offset offset offset
Allocate
Free Memory
Allocate
Not enough memoryLarger buffer
• Single Scratch Buffer
![Page 51: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/51.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 52: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/52.jpg)
Vulkan Optimizations
Signal
DestroyThread
• Low Priority Destroy Thread
Render thread Destroy thread
Delayed Destroy
Delayed Destroy
Delayed Destroy
Garbage Collect
vkDestroy***
vkDestroy***
vkDestroy***
Wait
![Page 53: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/53.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 54: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/54.jpg)
Vulkan Optimizations• Descriptor Set Batching/Caching
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
— Combine separate Update calls into one
![Page 55: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/55.jpg)
Vulkan Optimizations• Descriptor Set Batching/Caching
— Cache and reuse sets with same resources
AllocateDS+
UpdateDS
BindDS+
Draw…
AllocateDS+
UpdateDS
BindDS+
Draw…
AllocateDS+
UpdateDS
BindDS+
Draw… …
AllocateDS+
UpdateDS
BindDS+
Draw…
BindDS+
Draw……
BindDS+
Draw…
Allocate and update Descriptor Sets before each draw call
Reuse Descriptors Sets from cache
![Page 56: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/56.jpg)
Vulkan Optimizations• Descriptor Set Batching/Caching
— Cache and reuse sets with same resources
BindDS+
Draw…
BindDS+
Draw…
BindDS+
Draw… …
AllocateDS+
UpdateDS
BindDS+
Draw…
BindDS+
Draw……
BindDS+
Draw…
AllocateDS+
UpdateDS
AllocateDS+
UpdateDS
AllocateDS+
UpdateDS
Allocate and update Descriptor Sets before each draw call
Reuse Descriptors Sets from cache
![Page 57: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/57.jpg)
Vulkan Optimizations• Descriptor Set Batching/Caching
— Cache and reuse sets with same resources
AllocateDS+
UpdateDS
BindDS+
Draw…
Allocate and update Descriptor Sets before each draw call
Reuse Descriptors Sets from cache
AllocateDS+
UpdateDS
BindDS+
Draw…
AllocateDS+
UpdateDS
BindDS+
Draw… …
BindDS+
Draw…
BindDS+
Draw……
BindDS+
Draw…
AllocateDS+
UpdateDS
![Page 58: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/58.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 59: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/59.jpg)
Vulkan Optimizations• RenderPass Load/Store
When render target is being fully redrawn there is no need to load previous data.
![Page 60: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/60.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 61: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/61.jpg)
Vulkan Optimizations• Threaded Present
Prepare Render Present Prepare
Prepare Render Prepare
Present
Original
Threaded present
Render thread
Present thread
Render thread
![Page 62: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/62.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 63: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/63.jpg)
Vulkan Optimizations• VB, IB Binding Optimization
As buffers are same there is no need to bind them every draw call.
![Page 64: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/64.jpg)
Vulkan Optimizations
• Single Scratch Buffer
• Low Priority Destroy Thread
• Descriptor Set Batching/Caching
• RenderPass Load/Store
• Threaded Present
• VB, IB Binding Optimization
• Direct Buffer Access
![Page 65: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/65.jpg)
Vulkan Optimizations
Upload(vertex/index/uniform data)
Main thread
Copy
Device bufferRender thread
Memory
Memory
Copy
Upload(vertex/index/uniform data)
Main thread
Copy
Device buffer
Render thread
• Direct Buffer Access
Original
Direct access
![Page 66: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/66.jpg)
![Page 69: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/69.jpg)
Top 3 Takeaways
1: Use Adaptive Performance!2: Check your barriers!3: Check your load/store ops!
![Page 70: Mobilizing Call Of Duty - The Khronos Group Inc...' v o s µ o l v K ] u ] Ì ] } v Z v W ² D ] v ] u ] Ì Á ] Z ] v P YN&PG%HJLQ5HQGHU3DVV FRPPDQG%XIIHU EHJLQ,QIR FRQWHQWV YN&PG(QG5HQGHU3DVV](https://reader033.vdocuments.mx/reader033/viewer/2022060916/60a92f27682ad92c5e53f24d/html5/thumbnails/70.jpg)
Top 3 Takeaways
1: Use Adaptive Performance!2: Check your barriers!3: Check your load/store ops!3.5: Thread stuff!