Skip to content

Commit a874416

Browse files
committed
deploy: 4dbbdd0
1 parent 6d03666 commit a874416

File tree

13 files changed

+18
-19
lines changed

13 files changed

+18
-19
lines changed

2021/03/progress-report-january-february-2021/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

2021/08/progress-report-august-2021/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

2021/10/progress-report-september-2021/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

2022/11/november-2022-report/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

2022/11/tales-of-the-m1-gpu/index.html

Lines changed: 2 additions & 3 deletions
Large diffs are not rendered by default.

2022/12/gpu-drivers-now-in-asahi-linux/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ <h1 class=entry-title>Apple GPU drivers now in Asahi Linux</h1><ul class=blog-na
4848
</li></ul></div><p>Hello everyone! We&rsquo;re excited to announce our first public Apple Silicon GPU driver release!</p><p>We&rsquo;ve been working hard over the past two years to bring this new driver to everyone, and we&rsquo;re really proud to finally be here. This is still an alpha driver, but it&rsquo;s already good enough to run a smooth desktop experience and some games.</p><p>Read on to find out more about the state of things today, how to install it (it&rsquo;s an opt-in package), and how to report bugs!</p><p><img src=/img/blog/2022/12/quake3.png alt="Quake 3 Arena running on an Apple M1"></p><h1 id=status>Status</h1><p>This release features work-in-progress OpenGL 2.1 and OpenGL ES 2.0 support for all current Apple M-series systems. That&rsquo;s enough for hardware acceleration with desktop environments, like GNOME and KDE. It&rsquo;s also enough for older 3D games, like Quake3 and Neverball. While there&rsquo;s always room for improvement, the driver is fast enough to run all of the above at 60 frames per second at 4K.</p><p>Please note: these drivers have not yet passed the OpenGL (ES) conformance tests. There will be bugs!</p><p>What&rsquo;s next? Supporting more applications. While OpenGL (ES) 2 suffices for some applications, newer ones (especially games) demand more OpenGL features. OpenGL (ES) 3 brings with it a slew of new features, like multiple render targets, multisampling, and transform feedback. Work on these features is well under way, but they will each take a great deal of additional development effort, and all are needed before OpenGL (ES) 3.0 is available.</p><p>What about Vulkan? We&rsquo;re working on it! Although we&rsquo;re only shipping OpenGL right now, we&rsquo;re designing with Vulkan in mind. Most of the work we&rsquo;re putting toward OpenGL will be reused for Vulkan. We estimated that we could ship working OpenGL 2 drivers much sooner than a working Vulkan 1.0 driver, and we wanted to get hardware accelerated desktops into your hands as soon as possible. For the most part, those desktops use OpenGL, so supporting OpenGL first made more sense to us than diving into the Vulkan deep end, only to use Zink to translate OpenGL 2 to Vulkan to run desktops. Plus, there is a large spectrum of OpenGL support, with OpenGL 2.1 containing a fraction of the features of OpenGL 4.6. The same is true for Vulkan: the baseline Vulkan 1.0 profile is roughly equivalent to OpenGL ES 3.1, but applications these days want Vulkan 1.3 with tons of extensions and &ldquo;optional&rdquo; features. Zink&rsquo;s &ldquo;layering&rdquo; of OpenGL on top of Vulkan isn&rsquo;t magic: it can only expose the OpenGL features that the underlying Vulkan driver has. A baseline Vulkan 1.0 driver isn&rsquo;t even enough to get OpenGL 2.1 on Zink! Zink itself advertises support for OpenGL 4.6, but of course that&rsquo;s only when paired with Vulkan drivers that support the equivalent of OpenGL 4.6&mldr; and that gets us back to a tremendous amount of time and effort.</p><p>When will OpenGL 3 support be ready? OpenGL 4? Vulkan 1.0? Vulkan 1.3? In community open source projects, it&rsquo;s said that every time somebody asks when a feature will be done, it delays that feature by a month. Well, a lot of people have been asking&mldr;</p><p>At any rate, for a sneak peek&mldr; here is SuperTuxKart&rsquo;s deferred renderer running at full speed, making liberal use of OpenGL ES 3 features like multiple render targets~</p><p><img src=/img/blog/2022/12/supertuxkart-dr.png alt="SuperTuxKart&amp;rsquo;s deferred renderer running on an Apple M1"></p><h1 id=anatomy-of-a-gpu-driver>Anatomy of a GPU driver</h1><p>Modern GPUs consist of many distinct &ldquo;layered&rdquo; parts. There is&mldr;</p><ul>
4949
<li>a memory management unit and an interface to submit memory-mapped work to the hardware</li><li>fixed-function 3D hardware to rasterize triangles, perform depth/stencil testing, and more</li><li>programmable &ldquo;shader cores&rdquo; (like little CPUs with bespoke instruction sets) with work dispatched by the fixed-function hardware</li></ul><p>This &ldquo;layered&rdquo; hardware demands a &ldquo;layered&rdquo; graphics driver stack. We need&mldr;</p><ul>
5050
<li>a kernel driver to map memory and submit memory-mapped work</li><li>a userspace driver to translate OpenGL and Vulkan calls into hardware-specific data structures in graphics memory</li><li>a compiler translating shading programming languages like GLSL to the hardware&rsquo;s instruction set</li></ul><p>That&rsquo;s a lot of work, calling for a team effort! Fortunately, that layering gives us natural boundaries to divide work among our small team.</p><ul>
51-
<li><a href=https://social.treehouse.systems/@alyssa>Alyssa Rosenzweig</a> is writing the OpenGL driver and compiler.</li><li><a href=https://vt.social/@lina>Asahi Lina</a> is writing the kernel driver and helping with OpenGL.</li><li><a href=https://mastodon.social/@dougall>Dougall Johnson</a> is reverse-engineering the instruction set with Alyssa.</li></ul><p>Meanwhile, <a href=https://tech.lgbt/@ella>Ella Stanforth</a> is working on a Vulkan driver, reusing the kernel driver, the compiler, and some code shared with the OpenGL driver.</p><p>Of course, we couldn&rsquo;t build an OpenGL driver in under two years just ourselves. Thanks to the power of free and open source software, we stand on the shoulders of FOSS giants. The compiler implements a &ldquo;NIR&rdquo; backend, where NIR is a powerful intermediate representation, including GLSL to NIR translation. The kernel driver users the &ldquo;Direct Rendering Manager&rdquo; (DRM) subsystem of the Linux kernel to minimize boilerplate. Finally, the OpenGL driver implements the &ldquo;Gallium3D&rdquo; API inside of <a href=https://mesa3d.org/>Mesa</a>, the home for open source OpenGL and Vulkan drivers. Through Mesa and Gallium3D, we benefit from thirty years of OpenGL driver development, with common code translating OpenGL into the much simpler Gallium3D. Thanks to the incredible engineering of NIR, Mesa, and Gallium3D, our ragtag team of reverse-engineers can focus on what&rsquo;s left: the Apple hardware.</p><h1 id=installation-instructions>Installation instructions</h1><p>To get the new drivers, you need to run the <code>linux-asahi-edge</code> kernel and also install the <code>mesa-asahi-edge</code> Mesa package.</p><pre tabindex=0><code>$ sudo pacman -Syu
51+
<li><a href=https://alyssarosenzweig.ca>Alyssa Rosenzweig</a> is writing the OpenGL driver and compiler.</li><li><a href=https://vt.social/@lina>Asahi Lina</a> is writing the kernel driver and helping with OpenGL.</li><li><a href=https://mastodon.social/@dougall>Dougall Johnson</a> is reverse-engineering the instruction set with Alyssa.</li></ul><p>Meanwhile, <a href=https://tech.lgbt/@ella>Ella Stanforth</a> is working on a Vulkan driver, reusing the kernel driver, the compiler, and some code shared with the OpenGL driver.</p><p>Of course, we couldn&rsquo;t build an OpenGL driver in under two years just ourselves. Thanks to the power of free and open source software, we stand on the shoulders of FOSS giants. The compiler implements a &ldquo;NIR&rdquo; backend, where NIR is a powerful intermediate representation, including GLSL to NIR translation. The kernel driver users the &ldquo;Direct Rendering Manager&rdquo; (DRM) subsystem of the Linux kernel to minimize boilerplate. Finally, the OpenGL driver implements the &ldquo;Gallium3D&rdquo; API inside of <a href=https://mesa3d.org/>Mesa</a>, the home for open source OpenGL and Vulkan drivers. Through Mesa and Gallium3D, we benefit from thirty years of OpenGL driver development, with common code translating OpenGL into the much simpler Gallium3D. Thanks to the incredible engineering of NIR, Mesa, and Gallium3D, our ragtag team of reverse-engineers can focus on what&rsquo;s left: the Apple hardware.</p><h1 id=installation-instructions>Installation instructions</h1><p>To get the new drivers, you need to run the <code>linux-asahi-edge</code> kernel and also install the <code>mesa-asahi-edge</code> Mesa package.</p><pre tabindex=0><code>$ sudo pacman -Syu
5252
$ sudo pacman -S linux-asahi-edge mesa-asahi-edge
5353
$ sudo update-grub
5454
</code></pre><p>Since only one version of Mesa can be installed at a time, pacman will prompt you to replace <code>mesa</code> with <code>mesa-asahi-edge</code>. This is normal!</p><p>We also recommend running Wayland instead of Xorg at this point, so if you&rsquo;re using the KDE Plasma environment, make sure to install the Wayland session:</p><pre tabindex=0><code>$ sudo pacman -S plasma-wayland-session

2023/03/road-to-vulkan/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ <h1 class=entry-title>Paving the Road to Vulkan on Asahi Linux</h1><ul class=blo
4545
<a href=https://asahilinux.org/2022/12/gpu-drivers-now-in-asahi-linux/><i class="fas fa-arrow-left"></i>Previous</a>
4646
</li><li class=nav-spacer></li><li>
4747
<a class=next href=https://asahilinux.org/2023/06/opengl-3-1-on-asahi-linux/>Next<i class="fas fa-arrow-right"></i></a>
48-
</li></ul></div><p>Hello everyone, Asahi Lina here!✨</p><p>As you probably know, I&rsquo;ve been working together with the rest of the Asahi Linux team on open source GPU drivers for Apple Silicon platforms. It&rsquo;s been a wild ride! Just at the end of last year we <a href=https://asahilinux.org/2022/12/gpu-drivers-now-in-asahi-linux/>released</a> the first version of our drivers, after many months of reverse engineering and development. But that was only the beginning&mldr;</p><p>Today we&rsquo;re releasing a big update to our GPU drivers for Asahi Linux, so I wanted to talk to you about what we&rsquo;ve been working on since then, and what&rsquo;s next!</p><p>If this is your first time reading about our GPU adventures, you might want to check out my <a href=/2022/11/tales-of-the-m1-gpu/>Tales of the M1 GPU</a> article first, which covers what I worked on last year! Also don&rsquo;t miss Alyssa&rsquo;s amazing series of articles on <a href=https://rosenzweig.io/>her website</a>, which goes all the way back to January 2021! ^^</p><p>And if this is too long, feel free to <a href=#conclusions>jump to the end</a> to learn what this all means for Asahi Linux!</p><figure class=captioned>
48+
</li></ul></div><p>Hello everyone, Asahi Lina here!✨</p><p>As you probably know, I&rsquo;ve been working together with the rest of the Asahi Linux team on open source GPU drivers for Apple Silicon platforms. It&rsquo;s been a wild ride! Just at the end of last year we <a href=https://asahilinux.org/2022/12/gpu-drivers-now-in-asahi-linux/>released</a> the first version of our drivers, after many months of reverse engineering and development. But that was only the beginning&mldr;</p><p>Today we&rsquo;re releasing a big update to our GPU drivers for Asahi Linux, so I wanted to talk to you about what we&rsquo;ve been working on since then, and what&rsquo;s next!</p><p>If this is your first time reading about our GPU adventures, you might want to check out my <a href=/2022/11/tales-of-the-m1-gpu/>Tales of the M1 GPU</a> article first, which covers what I worked on last year! Also don&rsquo;t miss Alyssa&rsquo;s amazing series of articles on <a href=https://alyssarosenzweig.ca/>her website</a>, which goes all the way back to January 2021! ^^</p><p>And if this is too long, feel free to <a href=#conclusions>jump to the end</a> to learn what this all means for Asahi Linux!</p><figure class=captioned>
4949
<img src=/img/blog/2023/03/xonotic.png alt="Xonotic running at 800+ FPS on an Apple M2">
5050
<figcaption>
5151
<p>Xonotic running at 800+ FPS on an Apple M2</p></p></figcaption></figure><h2 id=whats-a-uapi>What&rsquo;s a UAPI?</h2><img src=/img/blog/2023/03/gpulayers.svg width=100%>

2023/06/opengl-3-1-on-asahi-linux/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ <h1 class=entry-title>OpenGL 3.1 on Asahi Linux</h1><ul class=blog-nav>
6464
improve.</p><p>With that disclaimer out of the way, there&rsquo;s a LOT of new functionality packed
6565
into OpenGL 3.0, 3.1, and OpenGL ES 3.0 to make this release. Highlights
6666
include:</p><ul>
67-
<li>Multiple render targets</li><li>Multisampling</li><li><a href="https://cgit.freedesktop.org/mesa/mesa/commit/?id=d72e1418ce4f66c42f20779f50f40091d3d310b0">Transform feedback</a></li><li><a href=https://social.treehouse.systems/@alyssa/109542058314148170>Texture buffer objects</a></li><li>..and more.</li></ul><p>For now, let&rsquo;s talk about&mldr;</p><h2 id=multisampling>Multisampling</h2><p>Vulkan and OpenGL support <em>multisampling</em>, short for <em>multisampled
67+
<li>Multiple render targets</li><li>Multisampling</li><li><a href="https://cgit.freedesktop.org/mesa/mesa/commit/?id=d72e1418ce4f66c42f20779f50f40091d3d310b0">Transform feedback</a></li><li><a href=https://alyssarosenzweig.ca/blog/texture-buffer-objects-on-asahi.html>Texture buffer objects</a></li><li>..and more.</li></ul><p>For now, let&rsquo;s talk about&mldr;</p><h2 id=multisampling>Multisampling</h2><p>Vulkan and OpenGL support <em>multisampling</em>, short for <em>multisampled
6868
anti-aliasing</em>. In graphics, <em>aliasing</em> causes jagged diagonal edges due to
6969
rendering at insufficient resolution. One solution to aliasing is rendering at
7070
higher resolutions and scaling down. Edges will be blurred, not jagged, which

0 commit comments

Comments
 (0)