SlideShare a Scribd company logo
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 Oldcorn
AMD Developer Central
 
AMD Display Technologies
AMD Display TechnologiesAMD Display Technologies
AMD Display Technologies
AMD
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
Electronic Arts / DICE
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
Kernel 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 Mantor
AMD 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 Textures
Phong Cao
 
Unity advanced computer graphics week 02
Unity advanced computer graphics week 02Unity advanced computer graphics week 02
Unity advanced computer graphics week 02
Tri 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 Bilodeau
AMD Developer Central
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
Electronic 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
 
AM37x EVM
AM37x EVM AM37x EVM
AM37x EVM
Mistral Solutions
 
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
AMD Developer Central
 
Gpgpu
GpgpuGpgpu
Gpgpu
Su Yan-Jen
 
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 beg
Friprogsenteret
 
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

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
Igalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
Igalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
Igalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
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 JIT
Igalia
 
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 GStreamer
Igalia
 
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
Igalia
 
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
Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
Igalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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 Raspberry
Igalia
 

More from Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
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
 

Recently uploaded

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 

Recently uploaded (20)

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 

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