<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg" -->

---
title: Android: Enabling mainline graphics | daily.dev
description: Android uses the Hardware Composer (HWC) API for graphics hardware communication, but the mainline Linux kernel historically lacked support for it....
canonical: https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Android: Enabling mainline graphics | daily.dev
og:description: Android uses the Hardware Composer (HWC) API for graphics hardware communication, but the mainline Linux kernel historically lacked support for it....
og:url: https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg
og:image: https://api.daily.dev/og/posts/Dsf2muxzG.png
og:image:alt: Android: Enabling mainline graphics
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.

# Android: Enabling mainline graphics

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

## Summary

Android uses the Hardware Composer (HWC) API for graphics hardware communication, but the mainline Linux kernel historically lacked support for it. drm_hwcomposer acts as a shim between Android's SurfaceFlinger and the mainline graphics stack via mesa and libdrm. After fence support was upstreamed in Linux kernel v4.10, HWC2 support was added to drm_hwcomposer, enabling Android to boot on the db410c board using the freedreno driver. This work is part of a collaboration between Google's ChromeOS team and Collabora, with contributions being upstreamed to the ChromiumOS repo.

## 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/2017/03/29/android-enabling-mainline-graphics>

## Questions this post answers

### How does Android's HWC API work with the mainline Linux kernel graphics stack?

Android's HWC (Hardware Composer) API is not natively supported by the mainline Linux kernel. drm_hwcomposer acts as a shim, interfacing with the mainline graphics stack through mesa and libdrm. After fence support was upstreamed in Linux kernel v4.10, drm_hwcomposer gained HWC2 support, allowing Android to run on mainline kernel GPUs such as the db410c board using the freedreno driver.

_Developers bridging Android and mainline Linux graphics track kernel compatibility developments on daily.dev._

## Similar posts on daily.dev

- [Snapdragon X2's Adreno X2-85 GPU Sees Driver Improvements For Linux 7.1](https://daily.dev/posts/snapdragon-x2-s-adreno-x2-85-gpu-sees-driver-improvements-for-linux-7-1-buh1fr7xw) · Phoronix · 0 upvotes · 0 comments
- [Same-day upstream Linux support for Snapdragon 8 Elite Gen 5 mobile platform](https://daily.dev/posts/same-day-upstream-linux-support-for-snapdragon-8-elite-gen-5-mobile-platform-n15n6x3tw) · Hacker News · 2 upvotes · 1 comments
- [Under the Hood of Hybrid Composition\+\+ \(HCPP\) in Flutter](https://daily.dev/posts/under-the-hood-of-hybrid-composition-hcpp-in-flutter-tyah4xi1m) · Medium · 0 upvotes · 0 comments
- [Qualcomm Upstreaming Initial GPU Support For Snapdragon X2 Elite In Linux 6.19](https://daily.dev/posts/qualcomm-upstreaming-initial-gpu-support-for-snapdragon-x2-elite-in-linux-6-19-kprw6kr38) · Phoronix · 0 upvotes · 0 comments
- [Linux 7.3 To Support The Qualcomm Adreno 704 & Adreno 722 GPUs](https://daily.dev/posts/linux-7-3-to-support-the-qualcomm-adreno-704-adreno-722-gpus-x92gp0q18) · Phoronix · 0 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#android](https://daily.dev/tags/android)

[View this post on daily.dev](https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg)

```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":"Android: Enabling mainline graphics","url":"https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg"},"datePublished":"2026-08-11T08:54:04.922Z","dateModified":"2026-08-11T09:35:47.673Z","description":"Android uses the Hardware Composer (HWC) API for graphics hardware communication, but the mainline Linux kernel historically lacked support for it....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8d7d5c29e70ca709c29154e9e84775f5?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8d7d5c29e70ca709c29154e9e84775f5?_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/android-enabling-mainline-graphics-dsf2muxzg","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,android","timeRequired":"PT3M"}
{"@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":"Android: Enabling mainline graphics"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/android-enabling-mainline-graphics-dsf2muxzg#faq","mainEntity":[{"@type":"Question","name":"How does Android's HWC API work with the mainline Linux kernel graphics stack?","acceptedAnswer":{"@type":"Answer","text":"Android's HWC (Hardware Composer) API is not natively supported by the mainline Linux kernel. drm_hwcomposer acts as a shim, interfacing with the mainline graphics stack through mesa and libdrm. After fence support was upstreamed in Linux kernel v4.10, drm_hwcomposer gained HWC2 support, allowing Android to run on mainline kernel GPUs such as the db410c board using the freedreno driver. Developers bridging Android and mainline Linux graphics track kernel compatibility developments on daily.dev."}}]}
```

