<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun" -->

---
title: kms_swrast: A hardware-backed graphics driver | daily.dev
description: kms_swrast is a hardware-backed software graphics driver built on Mesa's Gallium driver framework. It uses Linux kernel DRM/KMS nodes solely for memory...
canonical: https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: kms_swrast: A hardware-backed graphics driver | daily.dev
og:description: kms_swrast is a hardware-backed software graphics driver built on Mesa's Gallium driver framework. It uses Linux kernel DRM/KMS nodes solely for memory...
og:url: https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun
og:image: https://api.daily.dev/og/posts/aFPEpAxUN.png
og:image:alt: kms_swrast: A hardware-backed graphics driver
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# kms_swrast: A hardware-backed graphics driver

**[Collabora Blog](https://daily.dev/sources/collabora)** · 4 min read · 0 upvotes · 0 comments

## Summary

kms_swrast is a hardware-backed software graphics driver built on Mesa's Gallium driver framework. It uses Linux kernel DRM/KMS nodes solely for memory allocation rather than actual GPU rendering. The driver delegates 3D rendering to software backends like softpipe or the faster llvmpipe (which uses LLVM for JIT compilation). By leveraging Gallium, kms_swrast inherits existing infrastructure, OpenGL/OpenGL ES compliance, and future feature additions without requiring significant custom code.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2018/08/01/kms-swrast-hardware-backed-graphics-driver>

## Questions this post answers

### Why does kms_swrast use a kernel DRM driver if it doesn't use rendering hardware?

kms_swrast uses the DRM driver for a single purpose: allocating a slice of memory to render pixels into and send to the display. Gallium expects access to a DRM driver, and providing one — even without using its rendering hardware — is the simplest way to satisfy that requirement without making invasive changes to the Gallium framework.

_Developers working on Linux graphics drivers track Mesa internals like this on daily.dev._

### What is the difference between softpipe and llvmpipe in Mesa?

Softpipe is the older, simpler software rendering backend, while llvmpipe is newer and uses LLVM as an external dependency to enable JIT compilation, making it significantly faster. Both implement the 3D primitives needed for OpenGL and OpenGL ES compliance and can serve as backends for drivers like kms_swrast.

_Graphics engineers choosing between Mesa backends find relevant comparisons on daily.dev._

## Similar posts on daily.dev

- [Mesa 26.0 Released With Much Better Radeon Ray-Tracing, Many Vulkan Driver Improvements](https://daily.dev/posts/mesa-26-0-released-with-much-better-radeon-ray-tracing-many-vulkan-driver-improvements-ut4khwisc) · Phoronix · 0 upvotes · 0 comments
- [Mesa 25.3 Unleashed: Revolutionizing Open-Source Graphics for Linux Power Users](https://daily.dev/posts/mesa-25-3-unleashed-revolutionizing-open-source-graphics-for-linux-power-users-9noeiyani) · Khronos · 0 upvotes · 0 comments
- [Cracking Windows Open: Porting RADV to WIN32](https://daily.dev/posts/cracking-windows-open-porting-radv-to-win32-f2n59xdec) · Hacker News · 0 upvotes · 0 comments
- [Investigating Linux graphics](https://daily.dev/posts/investigating-linux-graphics-pt8vvc5hu) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#mesa](https://daily.dev/tags/mesa)

[View this post on daily.dev](https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"kms_swrast: A hardware-backed graphics driver","url":"https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun"},"datePublished":"2026-08-11T08:56:21.277Z","dateModified":"2026-08-11T09:39:53.662Z","description":"kms_swrast is a hardware-backed software graphics driver built on Mesa's Gallium driver framework. It uses Linux kernel DRM/KMS nodes solely for memory...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f0e5ae583996cab5a9d096fc08ef0beb?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f0e5ae583996cab5a9d096fc08ef0beb?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"mesa","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"kms_swrast: A hardware-backed graphics driver"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/kms-swrast-a-hardware-backed-graphics-driver-afpepaxun#faq","mainEntity":[{"@type":"Question","name":"Why does kms_swrast use a kernel DRM driver if it doesn't use rendering hardware?","acceptedAnswer":{"@type":"Answer","text":"kms_swrast uses the DRM driver for a single purpose: allocating a slice of memory to render pixels into and send to the display. Gallium expects access to a DRM driver, and providing one — even without using its rendering hardware — is the simplest way to satisfy that requirement without making invasive changes to the Gallium framework. Developers working on Linux graphics drivers track Mesa internals like this on daily.dev."}},{"@type":"Question","name":"What is the difference between softpipe and llvmpipe in Mesa?","acceptedAnswer":{"@type":"Answer","text":"Softpipe is the older, simpler software rendering backend, while llvmpipe is newer and uses LLVM as an external dependency to enable JIT compilation, making it significantly faster. Both implement the 3D primitives needed for OpenGL and OpenGL ES compliance and can serve as backends for drivers like kms_swrast. Graphics engineers choosing between Mesa backends find relevant comparisons on daily.dev."}}]}
```

