Graphics Hacking by Rosenzweig and Kristóf

-
Rosenzweig – The Apple GPU and the Impossible Bug
In late 2020, Apple debuted the M1 with Apple’s GPU architecture, AGX, rumoured to be derived from Imagination’s PowerVR series. Since then, we’ve been reverse-engineering AGX and building open source graphics drivers. Last January, I rendered a triangle with my own code, but there has since been a heinous bug lurking:
The driver fails to render large amounts of geometry.
Spinning a cube is fine, low polygon geometry is okay, but detailed models won’t render. Instead, the GPU renders only part of the model and then faults.
[...]
Traditional immediate mode renderers render directly into the framebuffer. They first run the vertex shader for each vertex of a triangle, then run the fragment shader for each pixel in the triangle. Per-vertex “varying” data is passed almost directly between the shaders, so immediate mode renderers are efficient for complex scenes.
There is a drawback: rendering directly into the framebuffer requires tremendous amounts of memory access to constantly write the results of the fragment shader and to read out back results when blending. Immediate mode renderers are suited to discrete, power-hungry desktop GPUs with dedicated video RAM.
-
How mesh shaders are implemented in the driver | Timur’s blog
In part 1 I gave a brief introduction on what mesh and task shaders are from the perspective of application developers. Now it’s time to dive deeper and talk about how mesh shaders are implemented in a Vulkan driver on AMD HW. Note that everything I discuss here is already available as public information in open source driver code. The goal of this blog post is to elaborate on how mesh shaders are implemented on the NGG hardware in AMD RDNA2 GPUs, and to show how these details affect shader performance. Hopefully, this helps the reader better understand how the concepts in the API are translated to the HW and what pitfalls to avoid to get good perf.
-
Timur Kristóf: How mesh shaders are implemented the driver
In part 1 I gave a brief introduction on what mesh and task shaders are from the perspective of application developers. Now it’s time to dive deeper and talk about how mesh shaders are implemented in a Vulkan driver on AMD HW. Note that everything I discuss here is already available as public information in open source driver code. The goal of this blog post is to elaborate on how mesh shaders are implemented on the NGG hardware in AMD RDNA2 GPUs, and to show how these details affect shader performance. Hopefully, this helps the reader better understand how the concepts in the API are translated to the HW and what pitfalls to avoid to get good perf.
-
- Login or register to post comments
Printer-friendly version
- 2445 reads
PDF version
More in Tux Machines
- Highlights
- Front Page
- Latest Headlines
- Archive
- Recent comments
- All-Time Popular Stories
- Hot Topics
- New Members
Type | Title | Author | Replies |
Last Post![]() |
---|---|---|---|---|
Story | Audiocasts/Shows/Videos: Linux Mint 21, GNU World Order, Wayland Kiosk, PhpStorm | Roy Schestowitz | 07/08/2022 - 11:14pm | |
Story | GNU-like Mobile Linux Update and Linux Weekly Roundup | Roy Schestowitz | 07/08/2022 - 10:42pm | |
Story | today's leftovers | Roy Schestowitz | 07/08/2022 - 9:03pm | |
Story | today's howtos | Roy Schestowitz | 07/08/2022 - 9:01pm | |
Story | Programming Leftovers | Roy Schestowitz | 07/08/2022 - 8:58pm | |
Story | Games: Porting Doom, ScummVM, and The Legend of Zelda: Breath of the Wild | Roy Schestowitz | 07/08/2022 - 8:32pm | |
Story | Debian Hiding Issues and Suppressing Volunteers' Dissent | Roy Schestowitz | 07/08/2022 - 8:26pm | |
Story | Jean-François Fortin Tam: Unsettled by Unison’s Fadeaway from Fedora | Roy Schestowitz | 07/08/2022 - 8:23pm | |
Story | Future of reiserfs in Tumbleweed (and beyond) | Rianne Schestowitz | 1 | 07/08/2022 - 8:19pm |
Story | Android Leftovers | Rianne Schestowitz | 07/08/2022 - 8:18pm |
Recent comments
5 hours 41 min ago
8 hours 3 min ago
8 hours 31 min ago
11 hours 48 min ago
13 hours 5 min ago
23 hours 10 min ago
1 day 7 hours ago
1 day 8 hours ago
2 days 5 hours ago
2 days 13 hours ago