This talk will discuss the problems with the traditional vertex processing pipeline and present how mesh shading solves these problems. Instead of processing a fixed set of input vertices, mesh shaders can create an arbitrary topology of vertices and primitives. Mesh shading also includes a new solution for geometry amplification: task shaders.
The talk should be scheduled before Timur's...
Mesh shading introduces a new kind of graphics pipeline that replaces the traditional vertex/tessellation/geometry shaders. There are two new stages: mesh shaders which can create an arbitrary primitive topology and the optional task shaders, for geometry amplification.
This talk focuses on presenting how mesh and task shaders are implemented in Mesa, with specific details on how the new...
A lot has changed in the last six and a half years since the Vulkan spec was first released. Instead of only having one Vulkan driver in Mesa, we now have nine. Mesa has also built quite a bit of shared Vulkan driver infrastructure over the years. Writing a new Vulkan driver today looks little like it did six years ago. In this talk, Jason will give an overview of the infrastructure we...
Continuing Jason's ray tracing series this talk will be all about how we ended up implementing it in radv. I will talk about what hardware support RDNA provides and all the work we have to do in software. I will demonstrate some of the major performance challenges, contrast with how Intel solved them and show how ray tracing is on track to becoming probably the single most complex feature in radv.
The hardware is full of dark magic. The firmware is magic ring buffers all the way down. And the driver must chant special incantations to bring to life this Frankenstein GPU.
That's a job for two witches, a spell book of reverse-engineering tricks, and a heap of cursed software. Join us in our quest to free the Apple GPU from its Metal chains and summon its magic powers to Asahi Linux.
For decades, OpenGL has been a widely used and supported cross-platform graphics API. Each vendor has its own drivers, and these implementations have been developed and maintained with varying priorities, leading to a scenario where applications may run very differently based on whether the environment is Linux or Windows, x86 or Adreno, waxing or waning moon, etc.
This is not a good user...
It's very easy for Linux kernel driver maintainers to build strongholds around their code, as it's very difficult for the lay contributor to understand unusual macros or code that's often not properly documented and assumed to be only edited by "experts". As this is often the case with DRM drivers, we propose the adoption of KUnit as a tool not only for making such code more reliable, but also...
isaspec is tool to describe an instruction set in xml, and generate assembler and disassembler from that single description. It is currently used by freedreno (ir3), with a WIP MR for etnaviv conversion. It has a number of interesting features do deal with (at least slightly) weird instruction sets:
- the base construct is a "bitset", which can be an entire instruction, or used as a...
There has been a lot of activity in V3DV, the Vulkan driver for Raspberry Pi 4, over the last year: we have significantly reworked our synchronization code, obtained Vulkan 1.1 conformance, implemented Vulkan 1.2 support, continued to work on compiler optimizations and more.
In this talk I would like to go through the main development milestones and
changes we implemented in the driver as...
This talk will focus on development efforts and progress of enabling hardware acceleration using the modesetting Xorg driver on Raspberry Pi 1-3 devices without using Glamor.
We will discuss the reasons for disabling Glamor on these Raspberry Pi devices, along with some previous attempts to accomplish this. This talk will also cover the methods and technologies used in the current...
Rusticl is an OpenCL implementation inside Mesa written in Rust.
I'd like to talk about the general approach I had taken and what the biggest hurdles were, like what common concepts in C map nicely and which do not. And what can we change in Mesa, to make it easier for other similar projects.
This presentation will just be about:
- The basics of how DisplayPort MST works w/r/t bandwidth management and topology probing
- The current state of DisplayPort MST support in the kernel
- High-level overview of the helpers we provide and how drivers can use them
- Future (as of writing this at least) plans for UAPI
- Troubleshooting tips
Let's talk about developing AMD display drivers in the DRM subsystem as an external contributor. Part of this work is a trail of breadcrumbs to build documentation. What are those breadcrumbs? How do they help to review, fix, improve and enable features of AMD drivers? How would both sides benefit if those pieces of information were already documented? We are gathering information from...
Have you ever wondered why HDR seems to be so complicated? Isn't it simply brighter displays and more colors? Doesn't Android already support HDR displays? Why isn't there support for it upstream and on Linux desktops?
This talk will try to make some sense of what HDR is, its different types, HDR use-cases, and how supporting them presents different challenges. It will give an overview of...
Two common misconceptions about DRM/KMS are pervasive when compared against the fbdev subsystem.
The first one is that it is tailored to complex graphic devices and that it does not scale down well to support very simple display controllers. The second one is that it is complicated and not easy to delve into for writing graphic drivers. The argument is that fbdev on the other hand is...
virtgpu drm native contexts - (near) native gpu performance in a VM utilizing virglrenderer drm native contexts.
Compared to api level virtualization (aka virgl), native gfx performance (within a few percent or less), and significant CPU overhead reduction (and therefore power savings), can be had with the new virglrenderer drm native context feature. All it takes is a very small amount of...
Flip pages asynchronously has been available for a long time in DRM through the old API. This operation allows userspace to update the display content as soon as possible, regardless of the vblank. However, it still not possible to do so using DRM's Atomic commit API yet.
This talk will present the progress made so far to enable this, the challenges and the remaining work to get this merged.
Due to rapid graphical industrial evolution, display interface providers are coming up with display bridges to address the mismatch between application-specific display interfaces vs on-chip display controllers (like from SoC, MCU). This simplifies the on-chip solution provider to concentrate on a single display interface so that the application can choose a direct interface or any other...
This talk will be about the recent work to remove implicit synchronization from RADV. I will talk about how we used implicit sync previously including the hacks we had to make it not terrible, then I will discuss why I'm trying to kill it and finally I will talk about how we are moving over to explicit sync.
This will not cover user mode fences or getting more windowing systems to use...
Current Linux display server architecture is based on the assumption that memory access by direct rendering devices is implicitly synchronized by the kernel. There is a growing consensus in the community that this has inherent limitations for both performance and functionality. This talk will discuss current efforts towards moving to an explicit synchronization model across Wayland [1], X11 /...
FEX-Emu is an emulator for running x86 and x86-64 applications on AArch64.
Running Mesa inside of this emulated environment is an interesting challenge that cross architure, ABI, and kernel API boundaries.
A short primer on how FEX-Emu works then we will walk through the challenges of running video drivers on architectures that they were not originally designed for. What it means to run...
LunarG’s GFXReconstruct is a suite of tools for capturing streams of graphics API calls from running Vulkan applications, processing those streams in various ways, and replaying streams on live devices.
GFXReconstruct 1.0 supports capturing and replaying Vulkan API calls on Linux, Android, and Windows. The use cases that drive development of the tool include GPU bringup, driver feature...
Over the last decade or so, the GPU has gone from something of a
nice-to-have feature to an absolute must, across a lot of industries. You
can hardly boot a modern system without supporting Vulkan or OpenGL (ES).
Technologies such as LLVMpipe has allowed us to emulate such hardware, at
a significant performance and memory bandwidth loss. It's proven very
useful for purposes such as...
Here I discuss the state of the X.org foundation!