SlideShare une entreprise Scribd logo
1  sur  47
Crossing Platforms:
Bringing Call of Duty to Mobile
Unite Copenhagen 2019
Galaxy GameDev: since 2016
Bringing Call of Duty to Mobile
• Call of Duty Mobile
• Adaptive Performance
• Vulkan Optimizations
Call of Duty Mobile
Call of Duty Mobile
Call of Duty Mobile
Call of Duty Mobile
Call of Duty Mobile
Mobile Limitation
FPS
Core Freq
Temperature After Throttling
• Temperature
– No active cooling
– Performance Throttling
• Power
– Limitation of Battery
– Use more power than needed
• Performance
– Hardware Fragmentation causes
different capabilities between devices
Developers can’t control
Adaptive Performance
GalaxyGame SDK
14
Get device performance
status and thermal trends
Proactively adjust performance
and quality settings on the fly
Power Manager
Power Budget Control
CPU Level
CPU
Level
CPU
Level
GPU Level
GPU
Level
GPU
Level
core freq
freq cap
Power Manager
Frame Time Tracking
1.0 ms
Bottleneck Detection
Frame
Time
CPU
Time
GPU
Time
Target
FPS
CPU
GPUGPU
Time
CPU
Time
Frame
Time
Bottleneck Detection
Frame
Time
CPU
Time
GPU
Time
Target
FPS
CPU
GPU
1.0 ms
1.0 ms
Default Power Manager
Auto 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
Temp
Trend
Bottleneck Detection
Frame
Time
CPU
Time
GPU
Time
Target
FPS
CPU
GPU
Bottleneck
Mode
Allow U/D
CPU
Allow U/D
GPU
GPU
Time
CPU
Time
Frame
Time
Power Manager + Dynamic Quality Scaling
30
15
200 10
Time [m]
Adaptive Performance is now available
Adaptive Performance is now available
21
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
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% offloading
GPU 0~1% offloading
Target Frame Rate 57 ~ 60 CPU 0~5% offloading
GPU 0~5% offloading
Shadow Distance(80 ~ 50)
Foliage LOD(1.0 ~ 0.8)
Adaptive Performance
• Adaptive Performance
vs Normal Condition
Feature ADP Normal
FPS 58 54
Stability (%) 100 100
CPU (%) 11.37 11.69
GPU (%) 80.08 87.85
FPS
ADP-FPS Normal-FPS
Adaptive Performance
• Can save power and
manage thermal better
Feature ADP Normal
FPS 58 54
Stability (%) 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
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
• 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
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 memory
Larger buffer
• Single Scratch Buffer
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
Vulkan Optimizations
Signal
DestroyThread
• Low Priority Destroy Thread
Render thread Destroy thread
Delayed Destroy
Delayed Destroy
Delayed Destroy
Garbage Collect
vkDestroy***
vkDestroy***
vkDestroy***
Wait
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
Vulkan Optimizations
• Descriptor Set Batching/Caching
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
vkUpdateDescriptorSets
— Combine separate Update calls into one
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
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
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
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
Vulkan Optimizations
• RenderPass Load/Store
When render target is being fully redrawn there
is no need to load previous data.
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
Vulkan Optimizations
• Threaded Present
Prepare Render Present Prepare
Prepare Render Prepare
Present
Original
Threaded present
Render thread
Present thread
Render thread
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
Vulkan Optimizations
• VB, IB Binding Optimization
As buffers are same there is no need to bind
them every draw call.
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
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
Thank You!
gamedev@samsung.com

Contenu connexe

Tendances

Rendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnellRendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
AMD Developer Central
 

Tendances (20)

Siggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentialsSiggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentials
 
ECS: Making the Entity Debugger - Unite LA
ECS: Making the Entity Debugger - Unite LAECS: Making the Entity Debugger - Unite LA
ECS: Making the Entity Debugger - Unite LA
 
How we optimized our Game - Jake & Tess' Finding Monsters Adventure
How we optimized our Game - Jake & Tess' Finding Monsters AdventureHow we optimized our Game - Jake & Tess' Finding Monsters Adventure
How we optimized our Game - Jake & Tess' Finding Monsters Adventure
 
Introduction to the Unreal Development Kit
Introduction to the Unreal Development KitIntroduction to the Unreal Development Kit
Introduction to the Unreal Development Kit
 
Optimizing Games for Mobiles
Optimizing Games for MobilesOptimizing Games for Mobiles
Optimizing Games for Mobiles
 
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity
 
Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019Built for performance: the UIElements Renderer – Unite Copenhagen 2019
Built for performance: the UIElements Renderer – Unite Copenhagen 2019
 
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
 
Introduction to 360 Video
Introduction to  360 VideoIntroduction to  360 Video
Introduction to 360 Video
 
DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIsDX12 & Vulkan: Dawn of a New Generation of Graphics APIs
DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
 
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware WebinarAn Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware Webinar
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware Webinar
 
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnellRendering Battlefield 4 with Mantle by Yuriy ODonnell
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
 
Scale CPU Experiences: Maximize Unity* Performance Using the Entity Component...
Scale CPU Experiences: Maximize Unity* Performance Using the Entity Component...Scale CPU Experiences: Maximize Unity* Performance Using the Entity Component...
Scale CPU Experiences: Maximize Unity* Performance Using the Entity Component...
 
Parallelizing Conqueror's Blade
Parallelizing Conqueror's BladeParallelizing Conqueror's Blade
Parallelizing Conqueror's Blade
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019
 
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsUnreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
 
Unreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorUnreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal Editor
 

Similaire à Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019

Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
Red_Hat_Storage
 

Similaire à Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019 (20)

Server side caching Vs other alternatives
Server side caching Vs other alternativesServer side caching Vs other alternatives
Server side caching Vs other alternatives
 
Addressing DHCP and DNS scalability issues in OpenStack Neutron
Addressing DHCP and DNS scalability issues in OpenStack NeutronAddressing DHCP and DNS scalability issues in OpenStack Neutron
Addressing DHCP and DNS scalability issues in OpenStack Neutron
 
VMworld Europe 2014: Virtual SAN Best Practices and Use Cases
VMworld Europe 2014: Virtual SAN Best Practices and Use CasesVMworld Europe 2014: Virtual SAN Best Practices and Use Cases
VMworld Europe 2014: Virtual SAN Best Practices and Use Cases
 
Micro-batching: High-performance writes
Micro-batching: High-performance writesMicro-batching: High-performance writes
Micro-batching: High-performance writes
 
Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...
Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...
Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...
 
Dx11 performancereloaded
Dx11 performancereloadedDx11 performancereloaded
Dx11 performancereloaded
 
VMware HCI solutions - 2020-01-16
VMware HCI solutions - 2020-01-16VMware HCI solutions - 2020-01-16
VMware HCI solutions - 2020-01-16
 
VMware VSAN Technical Deep Dive - March 2014
VMware VSAN Technical Deep Dive - March 2014VMware VSAN Technical Deep Dive - March 2014
VMware VSAN Technical Deep Dive - March 2014
 
V mware virtual san 5.5 deep dive
V mware virtual san 5.5 deep diveV mware virtual san 5.5 deep dive
V mware virtual san 5.5 deep dive
 
To Serverless and Beyond
To Serverless and BeyondTo Serverless and Beyond
To Serverless and Beyond
 
ceph-barcelona-v-1.2
ceph-barcelona-v-1.2ceph-barcelona-v-1.2
ceph-barcelona-v-1.2
 
Ceph barcelona-v-1.2
Ceph barcelona-v-1.2Ceph barcelona-v-1.2
Ceph barcelona-v-1.2
 
Kafka Tutorial: Advanced Producers
Kafka Tutorial: Advanced ProducersKafka Tutorial: Advanced Producers
Kafka Tutorial: Advanced Producers
 
Virtual san hardware guidance & best practices
Virtual san hardware guidance & best practicesVirtual san hardware guidance & best practices
Virtual san hardware guidance & best practices
 
TechNet Live spor 1 sesjon 6 - more vdi
TechNet Live spor 1   sesjon 6 - more vdiTechNet Live spor 1   sesjon 6 - more vdi
TechNet Live spor 1 sesjon 6 - more vdi
 
VMware virtual SAN 6 overview
VMware virtual SAN 6 overviewVMware virtual SAN 6 overview
VMware virtual SAN 6 overview
 
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...
AWS APAC Webinar Week - AWS MySQL Relational Database Services Best Practices...
 
Next Level Mobile Graphics | Munseong Kang, Oleksii Vasylenko
Next Level Mobile Graphics | Munseong Kang, Oleksii VasylenkoNext Level Mobile Graphics | Munseong Kang, Oleksii Vasylenko
Next Level Mobile Graphics | Munseong Kang, Oleksii Vasylenko
 
Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
Red Hat Storage Day Seattle: Stabilizing Petabyte Ceph Cluster in OpenStack C...
 
Right-Sizing your SQL Server Virtual Machine
Right-Sizing your SQL Server Virtual MachineRight-Sizing your SQL Server Virtual Machine
Right-Sizing your SQL Server Virtual Machine
 

Plus de Unity Technologies

Plus de Unity Technologies (20)

Build Immersive Worlds in Virtual Reality
Build Immersive Worlds  in Virtual RealityBuild Immersive Worlds  in Virtual Reality
Build Immersive Worlds in Virtual Reality
 
Augmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldAugmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real world
 
Let’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreLet’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and more
 
Using synthetic data for computer vision model training
Using synthetic data for computer vision model trainingUsing synthetic data for computer vision model training
Using synthetic data for computer vision model training
 
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global IndustriesThe Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
 
Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games
 
Unity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator ToolsUnity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator Tools
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
 
Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019
 
Turn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiencesTurn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiences
 
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
 
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
 
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
 
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
 
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
 
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
 
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
 
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
 
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
 
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019

  • 1. Crossing Platforms: Bringing Call of Duty to Mobile Unite Copenhagen 2019
  • 2.
  • 4.
  • 5. Bringing Call of Duty to Mobile • Call of Duty Mobile • Adaptive Performance • Vulkan Optimizations
  • 6.
  • 7. Call of Duty Mobile
  • 8. Call of Duty Mobile
  • 9. Call of Duty Mobile
  • 10. Call of Duty Mobile
  • 11. Call of Duty Mobile
  • 12.
  • 13. Mobile Limitation FPS Core Freq Temperature After Throttling • Temperature – No active cooling – Performance Throttling • Power – Limitation of Battery – Use more power than needed • Performance – Hardware Fragmentation causes different capabilities between devices Developers can’t control
  • 14. Adaptive Performance GalaxyGame SDK 14 Get device performance status and thermal trends Proactively adjust performance and quality settings on the fly
  • 15. Power Manager Power Budget Control CPU Level CPU Level CPU Level GPU Level GPU Level GPU Level core freq freq cap
  • 16. Power Manager Frame Time Tracking 1.0 ms Bottleneck Detection Frame Time CPU Time GPU Time Target FPS CPU GPUGPU Time CPU Time Frame Time Bottleneck Detection Frame Time CPU Time GPU Time Target FPS CPU GPU 1.0 ms 1.0 ms
  • 17. Default Power Manager Auto 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 Temp Trend Bottleneck Detection Frame Time CPU Time GPU Time Target FPS CPU GPU Bottleneck Mode Allow U/D CPU Allow U/D GPU GPU Time CPU Time Frame Time
  • 18.
  • 19. Power Manager + Dynamic Quality Scaling 30 15 200 10 Time [m]
  • 20. Adaptive Performance is now available
  • 21. Adaptive Performance is now available 21
  • 22. 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
  • 23. 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% offloading GPU 0~1% offloading Target Frame Rate 57 ~ 60 CPU 0~5% offloading GPU 0~5% offloading Shadow Distance(80 ~ 50) Foliage LOD(1.0 ~ 0.8)
  • 24. Adaptive Performance • Adaptive Performance vs Normal Condition Feature ADP Normal FPS 58 54 Stability (%) 100 100 CPU (%) 11.37 11.69 GPU (%) 80.08 87.85 FPS ADP-FPS Normal-FPS
  • 25. Adaptive Performance • Can save power and manage thermal better Feature ADP Normal FPS 58 54 Stability (%) 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
  • 26.
  • 27. 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
  • 28. • 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
  • 29. 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 memory Larger buffer • Single Scratch Buffer
  • 30. 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
  • 31. Vulkan Optimizations Signal DestroyThread • Low Priority Destroy Thread Render thread Destroy thread Delayed Destroy Delayed Destroy Delayed Destroy Garbage Collect vkDestroy*** vkDestroy*** vkDestroy*** Wait
  • 32. 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
  • 33. Vulkan Optimizations • Descriptor Set Batching/Caching vkUpdateDescriptorSets vkUpdateDescriptorSets vkUpdateDescriptorSets vkUpdateDescriptorSets vkUpdateDescriptorSets vkUpdateDescriptorSets — Combine separate Update calls into one
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. Vulkan Optimizations • RenderPass Load/Store When render target is being fully redrawn there is no need to load previous data.
  • 39. 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
  • 40. Vulkan Optimizations • Threaded Present Prepare Render Present Prepare Prepare Render Prepare Present Original Threaded present Render thread Present thread Render thread
  • 41. 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
  • 42. Vulkan Optimizations • VB, IB Binding Optimization As buffers are same there is no need to bind them every draw call.
  • 43. 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
  • 44. 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
  • 45.
  • 46.