<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc" -->

---
title: Mainline Explicit Fencing | daily.dev
description: An overview of the Android Sync Framework, the first out-of-tree explicit fencing implementation for the Linux Kernel. Covers the core primitives: Sync...
canonical: https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Mainline Explicit Fencing | daily.dev
og:description: An overview of the Android Sync Framework, the first out-of-tree explicit fencing implementation for the Linux Kernel. Covers the core primitives: Sync...
og:url: https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc
og:image: https://api.daily.dev/og/posts/V3YtcpGmc.png
og:image:alt: Mainline Explicit Fencing
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.

# Mainline Explicit Fencing

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

## Summary

An overview of the Android Sync Framework, the first out-of-tree explicit fencing implementation for the Linux Kernel. Covers the core primitives: Sync Timelines (monotonically increasing counters per driver context), Sync Points (fences tied to specific timeline values), and Sync Fences (file-descriptor-backed structs for passing sync information between kernel and userspace). Also explains fence merging — combining multiple Sync Fences into one that signals only when all contained Sync Points signal — and the three ioctl calls exposed to userspace for waiting, merging, and inspecting fences.

## 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/2016/10/18/mainline-explicit-fencing-part-2>

## Questions this post answers

### How does the Android Sync Framework implement explicit fencing in the Linux kernel?

The Android Sync Framework uses three primitives: a Sync Timeline (a per-driver monotonically increasing counter), Sync Points (fences tied to a specific timeline value that transition from Active to Signaled when a job completes), and Sync Fences (Linux file structs associated with a file descriptor for passing sync info between kernel and userspace). Multiple Sync Fences can be merged into one that signals only when all contained Sync Points signal.

_Kernel and graphics driver developers tracking explicit fencing developments share findings on daily.dev._

### What ioctl calls does the Android Sync Framework expose to userspace?

The Android Sync Framework exposes three ioctl calls: one to wait on a sync_fence to signal, one to merge two sync_fences into a new third sync_fence, and one to retrieve information about a sync_fence and all its sync_points. Sync fence file descriptors are passed to and from the kernel in calls to request buffer rendering or display.

_Engineers working with GPU or display driver APIs find relevant kernel synchronization discussions on daily.dev._

## Similar posts on daily.dev

- [Qualcomm Proposes Synx For The Linux Kernel With "Significant" Power \+ Performance Benefits](https://daily.dev/posts/qualcomm-proposes-synx-for-the-linux-kernel-with-significant-power-performance-benefits-zeafm5e2v) · Phoronix · 0 upvotes · 0 comments
- [Linux gaming is getting faster because Windows APIs are becoming Linux kernel features](https://daily.dev/posts/linux-gaming-is-getting-faster-because-windows-apis-are-becoming-linux-kernel-features-hwutw21m3) · XDA Developers · 1 upvotes · 0 comments
- [Investigating Linux graphics](https://daily.dev/posts/investigating-linux-graphics-pt8vvc5hu) · Lobsters · 0 upvotes · 0 comments
- [The Async Multiprocessing Has Sound Foundations in Linux, But Further Testing Is Needed](https://daily.dev/posts/the-async-multiprocessing-has-sound-foundations-in-linux-but-further-testing-is-needed-lpf8czcgo) · InfoQ · 0 upvotes · 0 comments

---

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

[View this post on daily.dev](https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc)

```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":"Mainline Explicit Fencing","url":"https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc"},"datePublished":"2026-08-11T08:57:00.551Z","dateModified":"2026-08-11T09:36:09.142Z","description":"An overview of the Android Sync Framework, the first out-of-tree explicit fencing implementation for the Linux Kernel. Covers the core primitives: Sync...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/bd1f1c70eee20d4835fc1cd8414c0ffe?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/bd1f1c70eee20d4835fc1cd8414c0ffe?_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/mainline-explicit-fencing-v3ytcpgmc","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux","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":"Mainline Explicit Fencing"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/mainline-explicit-fencing-v3ytcpgmc#faq","mainEntity":[{"@type":"Question","name":"How does the Android Sync Framework implement explicit fencing in the Linux kernel?","acceptedAnswer":{"@type":"Answer","text":"The Android Sync Framework uses three primitives: a Sync Timeline (a per-driver monotonically increasing counter), Sync Points (fences tied to a specific timeline value that transition from Active to Signaled when a job completes), and Sync Fences (Linux file structs associated with a file descriptor for passing sync info between kernel and userspace). Multiple Sync Fences can be merged into one that signals only when all contained Sync Points signal. Kernel and graphics driver developers tracking explicit fencing developments share findings on daily.dev."}},{"@type":"Question","name":"What ioctl calls does the Android Sync Framework expose to userspace?","acceptedAnswer":{"@type":"Answer","text":"The Android Sync Framework exposes three ioctl calls: one to wait on a sync_fence to signal, one to merge two sync_fences into a new third sync_fence, and one to retrieve information about a sync_fence and all its sync_points. Sync fence file descriptors are passed to and from the kernel in calls to request buffer rendering or display. Engineers working with GPU or display driver APIs find relevant kernel synchronization discussions on daily.dev."}}]}
```

