SlideShare a Scribd company logo
1 of 27
Download to read offline
The 6th
Vulkan Developer Conference
Sunnyvale, California | February 5-7, 2024
2024
8 years of open drivers
Faith Ekstrand, Collabora
Iago Toral, Igalia
About Iago
● Graphics engineer at Igalia
● Contributor to Mesa since 2014
● Initial contributions in Mesa to Intel drivers for OpenGL and Vulkan
● Currently leading the Raspberry Pi 3D driver team at Igalia, mostly focused on
the Vulkan stack
About Faith
● Active member of the Vulkan working group since before 1.0
● Led Linux Vulkan driver development at Intel for 6 years
● Now at Collabora working on Linux graphics over-all
● Mesa Maintainer, focused on:
○ NIR optimizing shader compiler
○ SPIR-V front-end
○ Common Vulkan runtime
○ NVK, the new open-source driver for NVIDIA hardware
History of Vulkan in Mesa
● Mesa Vulkan work started May 8, 2015 (that’s before the 1.0 release 😉)
● Initial Intel driver was released on February 16, 2016
○ Released in tandem with the Vulkan 1.0 spec
○ One of the first 4 conformant implementations
○ Merged into mesa/main about 2 months later
● The RADV driver for AMD hardware landed October 7, 2016
○ Initially not conformant, but some apps ran
● Since then, we’ve gained drivers for nearly every major HW vendor:
○ Qualcomm (Turnip), Arm (Panvk), Broadcom (V3DV), Imagination (PVR), and NVIDIA (NVK)
● Lavapipe, utilizing the LLVMpipe CPU rasterization core
History of Vulkan in Mesa
Mesa also has a common runtime, shared across HW drivers
● Some of this was built as part of the initial Intel efforts:
○ NIR optimizing shader compiler core
○ SPIR-V front-end for NIR
○ Window-system code for X11 and Wayland
● Other pieces have been added later:
○ Dispatch and vkGet*ProcAddr() handling
○ vkQueueSubmit() threading and timeline semaphores
○ Render passes in terms of VK_KHR_dynamic rendering
○ Pipelines in terms of VK_EXT_shader_object (still WIP)
A timeline of Vulkan in Mesa
As of Febuary 1, 2024
The Mesa Matrix (https://mesamatrix.net)
Layered drivers
● Venus:
○ VirtIO-GPU Vulkan driver.
○ Allows guest OS to use the host’s native Vulkan implementation.
○ Merged upstream in April 2021.
● Dozen:
○ Vulkan over Direct3D 12
○ Vulkan support on Microsoft platforms where native Vulkan is not available.
○ Merged upstream in March 2022.
● Zink:
○ OpenGL over Vulkan.
○ OpenGL support on platforms where native OpenGL is not available.
○ Merged upstream in October 2019.
Useful environment variables
● MESA_VK_TRACE=rmv,rgp,rra
○ Comma-separated list of trace types to dump for offline analysis.
○ All currently supported trace types are for AMD Radeon tools:
■ Radeon Memory Visualizer: rmv (RADV, ANV)
■ Radeon GPU profiler: rgp (RADV)
■ Radeon Raytracing Analyzer: rra (RADV)
● MESA_VK_TRACE_FRAME
○ Specifies a frame index to capture.
● MESA_VK_TRACE_TRIGGER
○ Triggers frame capture when specified trigger file is created.
Useful environment variables
● MESA_VK_WSI_PRESENT_MODE=fifo|relaxed|mailbox|immediate
○ Overrides present mode in VkSwapchinCreateInfoKHR::presentMode.
● MESA_VK_HEADLESS_SWAPCHAIN
○ Forces all swapchains to be headless, as if VK_EXT_headless_surface was used.
● MESA_VK_ABORT_ON_DEVICE_LOSS (*)
○ Aborts execution upon seeing VK_ERROR_DEVICE_LOST.
● MESA_VK_ENABLE_SUBMIT_THREAD
○ Forces use of a submit thread on all queue submissions.
Useful environment variables
● Per-driver variables
○ These expose many driver-specific options.
○ Some accept ‘help’ as value to dump the list of accepted options.
■ INTEL_DEBUG (Anvil)
■ RADV_DEBUG, ACO_DEBUG (Radv)
■ TU_DEBUG (Turnip)
■ V3D_DEBUG (V3DV)
■ NVK_DEBUG (NVK)
■ PANVK_DEBUG (Panvk)
Useful Vulkan layers
● VK_LAYER_MESA_device_select
○ Forces device selection on platforms with multiple Vulkan implementations available.
○ Build with -Dvulkan-layers=device-select
Useful Vulkan layers
● VK_LAYER_MESA_overlay
○ Renders an overlay with selected statistics.
○ Build with -Dvulkan-layers=overlay.
○ VK_LAYER_MESA_OVERLAY_CONFIG=help for available stats.
Benefits of open drivers
● Linux OS integration
○ You already have a Mesa driver 😉
○ Packaged by all the Linux and BSD distros
○ No binary downloads from independent 3rd parties.
Benefits of open drivers
● Linux OS integration
● Application debugging
○ We aren’t hiding anything! (You can look at the code)
○ All the Driver developer tools are available to you
■ Environment variables
■ Command buffer streams
■ Shader compiler dumps
○ Most drivers support VK_pipeline_executable_properties integration for RenderDoc.
Benefits of open drivers
Benefits of open drivers
● Linux OS integration
● Application debugging
● Source code access
○ You can look under the hood
○ See how software drives the actual hardware
○ Build in debug mode and set breakpoints inside the driver
○ Maybe you can even try to fix your issue yourself!
Benefits of open drivers
● Linux OS integration
● Application debugging
● Source code access
● Better access to driver developers
○ We respond directly to issues
■ https://gitlab.freedesktop.org/mesa/mesa/-/issues/
○ You can join our IRC channels and ask questions
Benefits of open drivers
Benefits of open drivers
Benefits of open drivers
● Linux OS integration
● Application debugging
● Source code access
● Better access to driver developers
● Better cross-company collaboration
○ All the Mesa developers talk to each other
○ We all work on the common runtime and shader compiler
○ Most of us are also Khronos members
■ Pre-release extension work happens in Khronos gitlab
Want to help out?
Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/
Want to help out?
Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/
And also https://mesa3d.org
Want to help out?
Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/
And also https://mesa3d.org
We’re also in the #dri-devel channel on the OFTC IRC server
Any Questions?
Thanks!

More Related Content

Similar to 8 Years of Open Drivers, including the State of Vulkan in Mesa

Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - DevfactoryKangaroot
 
The ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devicesThe ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devicesMender.io
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
Gaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docxGaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docxGaganjot kaur
 
Cloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps ApproachCloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps ApproachNicola Ferraro
 
Future of Microservices - Jakub Hadvig
Future of Microservices - Jakub HadvigFuture of Microservices - Jakub Hadvig
Future of Microservices - Jakub HadvigWEBtlak
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Linaro
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 Linaro
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labRon Munitz
 
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...Marcin Bielak
 
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary SlidesRise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary SlidesDiUS
 
LAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALinaro
 
Snowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesSnowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesDrew Hansen
 
Overview of the Open Source Vulkan Driver for Raspberry Pi 4
Overview of the Open Source Vulkan Driver for Raspberry Pi  4Overview of the Open Source Vulkan Driver for Raspberry Pi  4
Overview of the Open Source Vulkan Driver for Raspberry Pi 4Igalia
 
LAS16-200: Firmware summit - Tianocore Progress and Status
LAS16-200:  Firmware summit - Tianocore Progress and StatusLAS16-200:  Firmware summit - Tianocore Progress and Status
LAS16-200: Firmware summit - Tianocore Progress and StatusLinaro
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabRon Munitz
 
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...InfluxData
 
Servo: A Web View From Somewhere Else
Servo: A Web View From Somewhere ElseServo: A Web View From Somewhere Else
Servo: A Web View From Somewhere ElseIgalia
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...DynamicInfraDays
 

Similar to 8 Years of Open Drivers, including the State of Vulkan in Mesa (20)

Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
 
The ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devicesThe ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devices
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Gaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docxGaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docx
 
Cloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps ApproachCloud Native Applications on Kubernetes: a DevOps Approach
Cloud Native Applications on Kubernetes: a DevOps Approach
 
Future of Microservices - Jakub Hadvig
Future of Microservices - Jakub HadvigFuture of Microservices - Jakub Hadvig
Future of Microservices - Jakub Hadvig
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
 
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
Let's build a robot with ROS - Internet of Things, Hardware & Robotics meetup...
 
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary SlidesRise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
 
LAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVA
 
Snowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesSnowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD Pipelines
 
Overview of the Open Source Vulkan Driver for Raspberry Pi 4
Overview of the Open Source Vulkan Driver for Raspberry Pi  4Overview of the Open Source Vulkan Driver for Raspberry Pi  4
Overview of the Open Source Vulkan Driver for Raspberry Pi 4
 
LAS16-200: Firmware summit - Tianocore Progress and Status
LAS16-200:  Firmware summit - Tianocore Progress and StatusLAS16-200:  Firmware summit - Tianocore Progress and Status
LAS16-200: Firmware summit - Tianocore Progress and Status
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
 
Servo: A Web View From Somewhere Else
Servo: A Web View From Somewhere ElseServo: A Web View From Somewhere Else
Servo: A Web View From Somewhere Else
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
 

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 WPEIgalia
 
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 DevicesIgalia
 
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 MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
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
 
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
 

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
 
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...
 

Recently uploaded

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
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
 

Recently uploaded (20)

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
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...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
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...
 

8 Years of Open Drivers, including the State of Vulkan in Mesa

  • 1. The 6th Vulkan Developer Conference Sunnyvale, California | February 5-7, 2024 2024 8 years of open drivers Faith Ekstrand, Collabora Iago Toral, Igalia
  • 2. About Iago ● Graphics engineer at Igalia ● Contributor to Mesa since 2014 ● Initial contributions in Mesa to Intel drivers for OpenGL and Vulkan ● Currently leading the Raspberry Pi 3D driver team at Igalia, mostly focused on the Vulkan stack
  • 3. About Faith ● Active member of the Vulkan working group since before 1.0 ● Led Linux Vulkan driver development at Intel for 6 years ● Now at Collabora working on Linux graphics over-all ● Mesa Maintainer, focused on: ○ NIR optimizing shader compiler ○ SPIR-V front-end ○ Common Vulkan runtime ○ NVK, the new open-source driver for NVIDIA hardware
  • 4. History of Vulkan in Mesa ● Mesa Vulkan work started May 8, 2015 (that’s before the 1.0 release 😉) ● Initial Intel driver was released on February 16, 2016 ○ Released in tandem with the Vulkan 1.0 spec ○ One of the first 4 conformant implementations ○ Merged into mesa/main about 2 months later ● The RADV driver for AMD hardware landed October 7, 2016 ○ Initially not conformant, but some apps ran ● Since then, we’ve gained drivers for nearly every major HW vendor: ○ Qualcomm (Turnip), Arm (Panvk), Broadcom (V3DV), Imagination (PVR), and NVIDIA (NVK) ● Lavapipe, utilizing the LLVMpipe CPU rasterization core
  • 5. History of Vulkan in Mesa Mesa also has a common runtime, shared across HW drivers ● Some of this was built as part of the initial Intel efforts: ○ NIR optimizing shader compiler core ○ SPIR-V front-end for NIR ○ Window-system code for X11 and Wayland ● Other pieces have been added later: ○ Dispatch and vkGet*ProcAddr() handling ○ vkQueueSubmit() threading and timeline semaphores ○ Render passes in terms of VK_KHR_dynamic rendering ○ Pipelines in terms of VK_EXT_shader_object (still WIP)
  • 6. A timeline of Vulkan in Mesa As of Febuary 1, 2024
  • 7. The Mesa Matrix (https://mesamatrix.net)
  • 8. Layered drivers ● Venus: ○ VirtIO-GPU Vulkan driver. ○ Allows guest OS to use the host’s native Vulkan implementation. ○ Merged upstream in April 2021. ● Dozen: ○ Vulkan over Direct3D 12 ○ Vulkan support on Microsoft platforms where native Vulkan is not available. ○ Merged upstream in March 2022. ● Zink: ○ OpenGL over Vulkan. ○ OpenGL support on platforms where native OpenGL is not available. ○ Merged upstream in October 2019.
  • 9. Useful environment variables ● MESA_VK_TRACE=rmv,rgp,rra ○ Comma-separated list of trace types to dump for offline analysis. ○ All currently supported trace types are for AMD Radeon tools: ■ Radeon Memory Visualizer: rmv (RADV, ANV) ■ Radeon GPU profiler: rgp (RADV) ■ Radeon Raytracing Analyzer: rra (RADV) ● MESA_VK_TRACE_FRAME ○ Specifies a frame index to capture. ● MESA_VK_TRACE_TRIGGER ○ Triggers frame capture when specified trigger file is created.
  • 10. Useful environment variables ● MESA_VK_WSI_PRESENT_MODE=fifo|relaxed|mailbox|immediate ○ Overrides present mode in VkSwapchinCreateInfoKHR::presentMode. ● MESA_VK_HEADLESS_SWAPCHAIN ○ Forces all swapchains to be headless, as if VK_EXT_headless_surface was used. ● MESA_VK_ABORT_ON_DEVICE_LOSS (*) ○ Aborts execution upon seeing VK_ERROR_DEVICE_LOST. ● MESA_VK_ENABLE_SUBMIT_THREAD ○ Forces use of a submit thread on all queue submissions.
  • 11. Useful environment variables ● Per-driver variables ○ These expose many driver-specific options. ○ Some accept ‘help’ as value to dump the list of accepted options. ■ INTEL_DEBUG (Anvil) ■ RADV_DEBUG, ACO_DEBUG (Radv) ■ TU_DEBUG (Turnip) ■ V3D_DEBUG (V3DV) ■ NVK_DEBUG (NVK) ■ PANVK_DEBUG (Panvk)
  • 12. Useful Vulkan layers ● VK_LAYER_MESA_device_select ○ Forces device selection on platforms with multiple Vulkan implementations available. ○ Build with -Dvulkan-layers=device-select
  • 13. Useful Vulkan layers ● VK_LAYER_MESA_overlay ○ Renders an overlay with selected statistics. ○ Build with -Dvulkan-layers=overlay. ○ VK_LAYER_MESA_OVERLAY_CONFIG=help for available stats.
  • 14. Benefits of open drivers ● Linux OS integration ○ You already have a Mesa driver 😉 ○ Packaged by all the Linux and BSD distros ○ No binary downloads from independent 3rd parties.
  • 15. Benefits of open drivers ● Linux OS integration ● Application debugging ○ We aren’t hiding anything! (You can look at the code) ○ All the Driver developer tools are available to you ■ Environment variables ■ Command buffer streams ■ Shader compiler dumps ○ Most drivers support VK_pipeline_executable_properties integration for RenderDoc.
  • 16. Benefits of open drivers
  • 17. Benefits of open drivers ● Linux OS integration ● Application debugging ● Source code access ○ You can look under the hood ○ See how software drives the actual hardware ○ Build in debug mode and set breakpoints inside the driver ○ Maybe you can even try to fix your issue yourself!
  • 18. Benefits of open drivers ● Linux OS integration ● Application debugging ● Source code access ● Better access to driver developers ○ We respond directly to issues ■ https://gitlab.freedesktop.org/mesa/mesa/-/issues/ ○ You can join our IRC channels and ask questions
  • 19. Benefits of open drivers
  • 20. Benefits of open drivers
  • 21.
  • 22. Benefits of open drivers ● Linux OS integration ● Application debugging ● Source code access ● Better access to driver developers ● Better cross-company collaboration ○ All the Mesa developers talk to each other ○ We all work on the common runtime and shader compiler ○ Most of us are also Khronos members ■ Pre-release extension work happens in Khronos gitlab
  • 23. Want to help out? Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/
  • 24. Want to help out? Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/ And also https://mesa3d.org
  • 25. Want to help out? Mesa lives at https://gitlab.freedesktop.org/mesa/mesa/ And also https://mesa3d.org We’re also in the #dri-devel channel on the OFTC IRC server