SlideShare a Scribd company logo
1 of 37
Download to read offline
The Rainbow Treasure Map
Advanced Color Management on Linux with AMD/SteamDeck
Melissa Wen
XDC 2023 - A Coruña - Spain
1
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Technical Talk
2
1. XDC 2022 | "I'm not an AMD expert, but..." | Melissa Wen
2. XDC 2022 | Is HDR Harder? | Harry Wentland
3. XDC 2022 Lightning | HDR Workshop Summary | Harry Wentland
4. Color management and HDR documentation for FOSS graphics | Pekka Paalanen et al.
5. Cinematic Color - 2012 SIGGRAPH course notes | Jeremy Selan
6. AMD Driver-specific Properties for Color Management on Linux (Part 1) | Melissa Wen
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Advanced Color Management on Linux
● Wide variety of source content colorimetry (SDR/HDR/different
color gamuts, profiles, etc.)
● Wide variety of output display devices
● Internal processing (window composition, etc)
● Users expect consistent color reproduction
● Linux kernel lacks an interface to manage the diversity of color
profiles
3
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Driver-Specific Color Properties
[PATCH v4 00/32] drm/amd/display: add AMD driver-specific properties for color mgmt
➔ Endless KMS generic color API
➔ Many uncertainties regarding the diversity of color capabilities among hardware
vendors
➔ Gamescope is the userspace case (SteamOS 3.5)
➔ Advanced color management: gamut mapping, HDR rendering, SDR on HDR,
HDR on SDR
4
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Steam Deck Kernel Driver
➔ Accelerated Processing Unit (APU)
➔ Product Name: STEAMDECK
➔ Code Reference: VANGOGH
➔ Display Driver: DCN3.01 (DCN3 family)
5
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Display Driver in the Linux/DRM
DRM/KMS
AMD Display Manager (DM)
AMD Display Core (DC)
kernel space
6
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Connecting DC and DRM
DRM/KMS
AMD Display Manager (DM)
AMD Display Core (DC)
kernel space
7
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Examining AMD DC
DRM/KMS
AMD Display Manager (DM)
AMD Display Core (DC)
kernel space
8
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Display Core Next (DCN)
9
https://dri.freedesktop.org/docs/drm/gpu/amdgpu/display/dcn-overview.html
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Display Core Next (DCN) - Color Caps
10
Pre-blending
DPP: Display Pipe and Plane
Post-blending
MPC: Multiple Pipe/Plane Combined
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane
11
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane
12
John Travolta in Pulp Fiction
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamma
Corr
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
AMD DC
13
Blending
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamma
Corr
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
AMD DC
14
Blending
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
AMD DC
15
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
16
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane Degamma TF and LUT
Transition from encoded values to linear values for precise arithmetic operations
Pre-defined TFs are hardcoded curves to DPP Degamma ROM block
● sRGB EOTF;
● BT.709 inverse OETF;
● PQ EOTF;
● Gamma 2.2, Gamma 2.4 and Gamma 2.6 EOTF
1D LUT supports 4096 entries to DPP Gamma Correction block
The data is interpreted as an array of struct drm_color_lut elements
17
input func
Degam
ROM
Gamma
Corr
Degamma
LUT
Degamma
TF
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
18
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane CTM
For color space conversion
3x4-dimensions matrix of fixed-points s31.32 set to DPP Gamut Remap block
Remapping CRTC CTM to MPC Gamut Remap block
19
gamut
remap
Gamut
Remap
CTM
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
20
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
21
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane HDR Multiplier
Applied to the color values of an image to increase their overall brightness
Useful for converting images from SDR to HDR
PQ TF is needed for any subsequent transforms
22
hdr
mult
HDR
Mult
HDR
Mult
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
23
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane Shaper TF and LUT
Delinearize/normalize the color space before applying a 3D LUT
NO hardcoded curves
Pre-defined TFs are calculated by AMD color module
● sRGB inverse EOTF;
● BT.709 OETF;
● PQ inverse EOTF;
● Gamma 2.2, Gamma 2.4 and Gamma 2.6 inverse EOTF.
The color module combines TF and user LUT into the LUT to DPP Shaper LUT RAM block
24
shaper
func
Shaper
RAM
Shaper
TF
Shaper
LUT
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
25
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane 3D LUT
Suitable for complex color transformations and adjustments between color channels
Supported size: 17x17x17 (4913 entries) and 9x9x9 (729)
Tetrahedral interpolation
Blue is the outermost dimension, red the innermost.
26
3dlut
func
3D LUT
3D LUT
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
27
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD Plane Blend TF and LUT
Linearize the color space again, after 3D LUT and before blending
NO hardcoded curves
Pre-defined TFs are calculated by AMD color module
● sRGB EOTF;
● BT.709 inverse OETF;
● PQ EOTF;
● Gamma 2.2, Gamma 2.4 and Gamma 2.6 EOTF.
The color module combines TF and user LUT into the LUT to DPP Blend Gamma block
28
blend
func
Blend
Gamma
Blend
TF
Blend
LUT
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Pre-blending: DRM plane + AMD DC DPP
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
29
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Post-blending: DRM CRTC + AMD DC MPC
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
TF
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
30
Blending
Gamma
Corr
Blend
Gamma
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
AMD CRTC Gamma TF
Delinearize/convert to wire encoding
NO hardcoded curves
Pre-defined TFs are calculated by AMD color module
● sRGB inverse EOTF;
● BT.709 OETF;
● PQ inverse EOTF;
● Gamma 2.2, Gamma 2.4 and Gamma 2.6 inverse EOTF.
The color module combines TF and user LUT into the LUT to MPC Gamma RAM block.
31
Gamma
TF
Gamma
LUT
out
func
Gamma
RAM
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
DRM/AMD Color Management Pipeline
input func gamut
remap
hdr
mult
shaper
func
3dlut
func
blend
func
Degam
ROM
Gamut
Remap
HDR
Mult
Shaper
RAM
3D LUT Blend
Gamma
Degamma
LUT
CTM
HDR
Mult
Shaper
TF
3D LUT
Degamma
TF
Blend
TF
Shaper
LUT
Blend
LUT
DRM/AMD plane
CTM
gamut
remap
Gamut
Remap
Gamma
TF
Gamma
LUT
Degam
LUT
out
func
Gamma
RAM
DRM CRTC
32
Blending
Gamma
Corr
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023 33
Steam Deck Color Pipeline
AMD Driver-Specific Color Properties
Image by catalyststuff on Freepik
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023 34
https://github.com/ValveSoftware/gamescope/blob/master/src/docs/Steam%20Deck%20Display%20Pipeline.png
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023 35
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
The search for the Rainbow
treasure is not over!
36
The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck
Melissa Wen, XDC 2023
Thank You!
We're hiring
www.igalia.com/jobs
37

More Related Content

Similar to The rainbow treasure map: Advanced color management on Linux with AMD/Steam Deck – XDC 2023

A beginner’s guide to programming GPUs with CUDA
A beginner’s guide to programming GPUs with CUDAA beginner’s guide to programming GPUs with CUDA
A beginner’s guide to programming GPUs with CUDAPiyush Mittal
 
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornDirect3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornAMD Developer Central
 
AMD Display Technologies
AMD Display TechnologiesAMD Display Technologies
AMD Display TechnologiesAMD
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival GuideKernel TLV
 
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...AMD Developer Central
 
thu-blake-gdc-2014-final
thu-blake-gdc-2014-finalthu-blake-gdc-2014-final
thu-blake-gdc-2014-finalRobert Taylor
 
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael MantorGS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael MantorAMD Developer Central
 
Memory Optimization in Cocos2d-x WP8 using Compressed Textures
Memory Optimization in Cocos2d-x WP8 using Compressed TexturesMemory Optimization in Cocos2d-x WP8 using Compressed Textures
Memory Optimization in Cocos2d-x WP8 using Compressed TexturesPhong Cao
 
Unity advanced computer graphics week 02
Unity advanced computer graphics week 02Unity advanced computer graphics week 02
Unity advanced computer graphics week 02Tri Thanh
 
GS-4108, Direct Compute in Gaming, by Bill Bilodeau
GS-4108, Direct Compute in Gaming, by Bill BilodeauGS-4108, Direct Compute in Gaming, by Bill Bilodeau
GS-4108, Direct Compute in Gaming, by Bill BilodeauAMD Developer Central
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahGS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahAMD Developer Central
 
Amd future of gp us - campus party
Amd   future of gp us - campus partyAmd   future of gp us - campus party
Amd future of gp us - campus partyCampus Party Brasil
 
Minko stage3d 20130222
Minko stage3d 20130222Minko stage3d 20130222
Minko stage3d 20130222Minko3D
 
Tobias Oetiker: RRDtool - how to make it sit up and beg
Tobias Oetiker: RRDtool - how to make it sit up and begTobias Oetiker: RRDtool - how to make it sit up and beg
Tobias Oetiker: RRDtool - how to make it sit up and begFriprogsenteret
 
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs   from fiction t...Embedded Recipes 2018 - Upstream multimedia on amlogic so cs   from fiction t...
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...Anne Nicolas
 

Similar to The rainbow treasure map: Advanced color management on Linux with AMD/Steam Deck – XDC 2023 (20)

A beginner’s guide to programming GPUs with CUDA
A beginner’s guide to programming GPUs with CUDAA beginner’s guide to programming GPUs with CUDA
A beginner’s guide to programming GPUs with CUDA
 
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave OldcornDirect3D12 and the Future of Graphics APIs by Dave Oldcorn
Direct3D12 and the Future of Graphics APIs by Dave Oldcorn
 
AMD Display Technologies
AMD Display TechnologiesAMD Display Technologies
AMD Display Technologies
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
 
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...
PT-4055, Optimizing Raytracing on GCN with AMD Development Tools, by Tzachi C...
 
thu-blake-gdc-2014-final
thu-blake-gdc-2014-finalthu-blake-gdc-2014-final
thu-blake-gdc-2014-final
 
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael MantorGS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
 
Memory Optimization in Cocos2d-x WP8 using Compressed Textures
Memory Optimization in Cocos2d-x WP8 using Compressed TexturesMemory Optimization in Cocos2d-x WP8 using Compressed Textures
Memory Optimization in Cocos2d-x WP8 using Compressed Textures
 
Unity advanced computer graphics week 02
Unity advanced computer graphics week 02Unity advanced computer graphics week 02
Unity advanced computer graphics week 02
 
GS-4108, Direct Compute in Gaming, by Bill Bilodeau
GS-4108, Direct Compute in Gaming, by Bill BilodeauGS-4108, Direct Compute in Gaming, by Bill Bilodeau
GS-4108, Direct Compute in Gaming, by Bill Bilodeau
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
AM37x EVM
AM37x EVM AM37x EVM
AM37x EVM
 
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla MahGS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
GS-4106 The AMD GCN Architecture - A Crash Course, by Layla Mah
 
Gpgpu
GpgpuGpgpu
Gpgpu
 
Amd future of gp us - campus party
Amd   future of gp us - campus partyAmd   future of gp us - campus party
Amd future of gp us - campus party
 
Minko stage3d 20130222
Minko stage3d 20130222Minko stage3d 20130222
Minko stage3d 20130222
 
Tobias Oetiker: RRDtool - how to make it sit up and beg
Tobias Oetiker: RRDtool - how to make it sit up and begTobias Oetiker: RRDtool - how to make it sit up and beg
Tobias Oetiker: RRDtool - how to make it sit up and beg
 
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs   from fiction t...Embedded Recipes 2018 - Upstream multimedia on amlogic so cs   from fiction t...
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...
 

More from Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023Igalia
 

More from Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

The rainbow treasure map: Advanced color management on Linux with AMD/Steam Deck – XDC 2023

  • 1. The Rainbow Treasure Map Advanced Color Management on Linux with AMD/SteamDeck Melissa Wen XDC 2023 - A Coruña - Spain 1
  • 2. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Technical Talk 2 1. XDC 2022 | "I'm not an AMD expert, but..." | Melissa Wen 2. XDC 2022 | Is HDR Harder? | Harry Wentland 3. XDC 2022 Lightning | HDR Workshop Summary | Harry Wentland 4. Color management and HDR documentation for FOSS graphics | Pekka Paalanen et al. 5. Cinematic Color - 2012 SIGGRAPH course notes | Jeremy Selan 6. AMD Driver-specific Properties for Color Management on Linux (Part 1) | Melissa Wen
  • 3. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Advanced Color Management on Linux ● Wide variety of source content colorimetry (SDR/HDR/different color gamuts, profiles, etc.) ● Wide variety of output display devices ● Internal processing (window composition, etc) ● Users expect consistent color reproduction ● Linux kernel lacks an interface to manage the diversity of color profiles 3
  • 4. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Driver-Specific Color Properties [PATCH v4 00/32] drm/amd/display: add AMD driver-specific properties for color mgmt ➔ Endless KMS generic color API ➔ Many uncertainties regarding the diversity of color capabilities among hardware vendors ➔ Gamescope is the userspace case (SteamOS 3.5) ➔ Advanced color management: gamut mapping, HDR rendering, SDR on HDR, HDR on SDR 4
  • 5. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Steam Deck Kernel Driver ➔ Accelerated Processing Unit (APU) ➔ Product Name: STEAMDECK ➔ Code Reference: VANGOGH ➔ Display Driver: DCN3.01 (DCN3 family) 5
  • 6. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Display Driver in the Linux/DRM DRM/KMS AMD Display Manager (DM) AMD Display Core (DC) kernel space 6
  • 7. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Connecting DC and DRM DRM/KMS AMD Display Manager (DM) AMD Display Core (DC) kernel space 7
  • 8. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Examining AMD DC DRM/KMS AMD Display Manager (DM) AMD Display Core (DC) kernel space 8
  • 9. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Display Core Next (DCN) 9 https://dri.freedesktop.org/docs/drm/gpu/amdgpu/display/dcn-overview.html
  • 10. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Display Core Next (DCN) - Color Caps 10 Pre-blending DPP: Display Pipe and Plane Post-blending MPC: Multiple Pipe/Plane Combined
  • 11. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane 11
  • 12. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane 12 John Travolta in Pulp Fiction
  • 13. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamma Corr Gamut Remap HDR Mult Shaper RAM 3D LUT CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC AMD DC 13 Blending Blend Gamma
  • 14. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamma Corr Gamut Remap HDR Mult Shaper RAM 3D LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC AMD DC 14 Blending Blend Gamma
  • 15. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC AMD DC 15 Blending Gamma Corr Blend Gamma
  • 16. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 16 Blending Gamma Corr Blend Gamma
  • 17. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane Degamma TF and LUT Transition from encoded values to linear values for precise arithmetic operations Pre-defined TFs are hardcoded curves to DPP Degamma ROM block ● sRGB EOTF; ● BT.709 inverse OETF; ● PQ EOTF; ● Gamma 2.2, Gamma 2.4 and Gamma 2.6 EOTF 1D LUT supports 4096 entries to DPP Gamma Correction block The data is interpreted as an array of struct drm_color_lut elements 17 input func Degam ROM Gamma Corr Degamma LUT Degamma TF
  • 18. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 18 Blending Gamma Corr Blend Gamma
  • 19. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane CTM For color space conversion 3x4-dimensions matrix of fixed-points s31.32 set to DPP Gamut Remap block Remapping CRTC CTM to MPC Gamut Remap block 19 gamut remap Gamut Remap CTM
  • 20. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 20 Blending Gamma Corr Blend Gamma
  • 21. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 21 Blending Gamma Corr Blend Gamma
  • 22. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane HDR Multiplier Applied to the color values of an image to increase their overall brightness Useful for converting images from SDR to HDR PQ TF is needed for any subsequent transforms 22 hdr mult HDR Mult HDR Mult
  • 23. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 23 Blending Gamma Corr Blend Gamma
  • 24. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane Shaper TF and LUT Delinearize/normalize the color space before applying a 3D LUT NO hardcoded curves Pre-defined TFs are calculated by AMD color module ● sRGB inverse EOTF; ● BT.709 OETF; ● PQ inverse EOTF; ● Gamma 2.2, Gamma 2.4 and Gamma 2.6 inverse EOTF. The color module combines TF and user LUT into the LUT to DPP Shaper LUT RAM block 24 shaper func Shaper RAM Shaper TF Shaper LUT
  • 25. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 25 Blending Gamma Corr Blend Gamma
  • 26. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane 3D LUT Suitable for complex color transformations and adjustments between color channels Supported size: 17x17x17 (4913 entries) and 9x9x9 (729) Tetrahedral interpolation Blue is the outermost dimension, red the innermost. 26 3dlut func 3D LUT 3D LUT
  • 27. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 27 Blending Gamma Corr Blend Gamma
  • 28. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD Plane Blend TF and LUT Linearize the color space again, after 3D LUT and before blending NO hardcoded curves Pre-defined TFs are calculated by AMD color module ● sRGB EOTF; ● BT.709 inverse OETF; ● PQ EOTF; ● Gamma 2.2, Gamma 2.4 and Gamma 2.6 EOTF. The color module combines TF and user LUT into the LUT to DPP Blend Gamma block 28 blend func Blend Gamma Blend TF Blend LUT
  • 29. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Pre-blending: DRM plane + AMD DC DPP input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 29 Blending Gamma Corr Blend Gamma
  • 30. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Post-blending: DRM CRTC + AMD DC MPC input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma TF Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 30 Blending Gamma Corr Blend Gamma
  • 31. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 AMD CRTC Gamma TF Delinearize/convert to wire encoding NO hardcoded curves Pre-defined TFs are calculated by AMD color module ● sRGB inverse EOTF; ● BT.709 OETF; ● PQ inverse EOTF; ● Gamma 2.2, Gamma 2.4 and Gamma 2.6 inverse EOTF. The color module combines TF and user LUT into the LUT to MPC Gamma RAM block. 31 Gamma TF Gamma LUT out func Gamma RAM
  • 32. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 DRM/AMD Color Management Pipeline input func gamut remap hdr mult shaper func 3dlut func blend func Degam ROM Gamut Remap HDR Mult Shaper RAM 3D LUT Blend Gamma Degamma LUT CTM HDR Mult Shaper TF 3D LUT Degamma TF Blend TF Shaper LUT Blend LUT DRM/AMD plane CTM gamut remap Gamut Remap Gamma TF Gamma LUT Degam LUT out func Gamma RAM DRM CRTC 32 Blending Gamma Corr
  • 33. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 33 Steam Deck Color Pipeline AMD Driver-Specific Color Properties Image by catalyststuff on Freepik
  • 34. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 34 https://github.com/ValveSoftware/gamescope/blob/master/src/docs/Steam%20Deck%20Display%20Pipeline.png
  • 35. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 35
  • 36. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 The search for the Rainbow treasure is not over! 36
  • 37. The Rainbow Treasure Map: advanced color management on Linux with AMD/SteamDeck Melissa Wen, XDC 2023 Thank You! We're hiring www.igalia.com/jobs 37