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...
Vulkan is great, but it's not a great API for casually graphics development, like education or experimentation.
With OpenGL slowly passing the horizon, we need some modern alternatives. This talk will discuss what we need, and maybe outline how we can get there.
A quick update on OpenChrome Project progress since 2019 and its future roadmap.
Mesa has one of the best collaborative, multi-vendor, in-depth testing system found in the
open source world. It has prevented countless regressions and increased the quality of the
project to the point that it ships to millions of gamers through distributions or the Steam Deck.
Let's take some time to reflect on what makes the project successful, its pain points for users
and...
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...
The traditional WineConf opening keynote, where we review recent accomplishments and the plans for the upcoming stable release.
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...
Proton is a downstream Wine distribution that bundles complementary software and replaces some built-ins with independent alternatives.
The project also drives a lot of Wine development both up- and downstream.
In this talk, I'll go through the current state of Proton's Wine and try to reflect on how are we doing on the upstreaming front and what remains downstream and why.
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.
Wine is unique among copylefted projects for many reasons. One unique trait
of Wine is that so rarely is LGPL — the copyleft license of Wine — violated.
However, with the advent of more adoption of Linux-based system, and the need
for vendors to run old Windows application on they systems, we now are seeing
violations for the first time.
This session will present the properties of the...
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...
This talk will discuss a variety of tips for hacking on Wine and present hints to ease your patches through the review process.
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...
Wine development has recently moved away from mailing lists and custom patch tracker to Merge Requests on GitLab, to which I have contributed a little.
I want to trace the path we have taken to get here and discuss the current state and the future with the people who have contributed to the effort as well as the audience.
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...
A brief update on the progress of wine-staging since last WineConf.
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...
We will work through the remaining ad hoc issues
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...
As a follow-up to the "HDR is Harder" talk I will lead a workshop. The goal will be to workshop a DRM/KMS API and try to arrive at a solution that most people are happy with and everyone can live with.
In question are pre-, and post-blending (drm_plane) 1D LUTs, 3D (cubic) LUTs, matrices, and predefined transfer functions.
Use cases will include things such as tone mapping, color space...
Within the vkd3d project, vkd3d-shader
is the library that is responsible for converting shaders from one fromat to another. Since version 1.3 it gained (initial) support for Microsoft's HLSL (High Level Shader Language) and it is now used as a the workhorse behind Wine's D3DCompile()
and D3DCompile2()
functions.
So let's see how vkd3d-shader
works, how you can use it and how you...
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 /...
A look at the new features and work that has gone into the Direct3D implementation in Wine (and some work related to the broader GPU ecosystem), including but not limited to: the Direct3D Vulkan backend, huge performance improvements, MoltenVK work and Mac support, WoW64 support, the HLSL compiler, and Direct3D 12 work.
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...
Wine on macOS has taken an interesting journey over the last several years, from the 2019 removal of 32-bit support in macOS 10.15 Catalina to the 2020 introduction of ARM64-based "Apple Silicon" Macs.
I'd like to discuss how Wine has navigated these changes in the past, and
the directions being taken for the future.
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...
I will present a brief description of MoltenVK, and current development plans for the future.
Here I discuss the state of the X.org foundation!
Join the creator of ProtonDB for a discussion about the origins of the site, its approach in design and development, and what role it may have in the future of Linux gaming.
This lightning talk will summarize the discussions that happened during the Bare-Metal CI workshop.
I will give a brief summary of the discussions we had in the HDR workshop this morning.
Between CLon12's NIR improvements and the new Rusticl frontend, Mesa is ready for conformant OpenCL. Many drivers support compute shaders. Extending to OpenCL should be easy.
So where's your OpenCL driver?
OpenCL from the perspective of a backend compiler developer.
In this lightning talk, we'll have an idea of how much unit test coverage the DRM subsystem has. In the last couple of months, we've seen the conversion of selftests to KUnit tests, addition of new tests using KUnit, and also the development of unit tests for AMD's display driver. So it might be time to compare and see what we had before and what we have now.
We'll cover any missed topics, discuss next Wineconf, and say farewell.