Skip to content

AvdanOS New Push: Rendering Backend - #204

Draft
Sammy99jsp wants to merge 8 commits into
Avdan-OS:devfrom
Sammy99jsp:sammy99jsp/neo
Draft

AvdanOS New Push: Rendering Backend#204
Sammy99jsp wants to merge 8 commits into
Avdan-OS:devfrom
Sammy99jsp:sammy99jsp/neo

Conversation

@Sammy99jsp

@Sammy99jsp Sammy99jsp commented Jul 22, 2026

Copy link
Copy Markdown
Member

Hello, everyone! Since Avdan has released a new video, we're trying to do a new push for development.
As part of this, we need to integrate with updated versions of our deps, as well as new Wayland protocols.
Anyway, since we have to rewrite everything, we might as well write things properly this time.

This PR includes rewriting the backend from scratch to use more performant tools like Sync Files to synchronise things between {Vulkan, OpenGL, CPU} and DRM {frame is ready to scanout; scanout finished, frame ready to write over}.

To-Do:

  • General:
    • Implement double triple-buffered rendering through a backend-agnostic API.
    • Remove the hard-coded XRGB8888 format and pick the best for the display (HDR ftw!)
  • Vulkan
  • OpenGL
  • CPU
  • Skia:
    • Vulkan
    • OpenGL
    • CPU

This works on my machine ™️ with nvidia_drm, but it'd be nice to test with other graphics cards/integrated too.

@Sammy99jsp
Sammy99jsp marked this pull request as draft July 22, 2026 15:52
@SunightMC

Copy link
Copy Markdown
Member

i can eventually properly test on all GPUs, intel igpu, intel arc, amd, whatever you need (like next week)

@MrSerge01

Copy link
Copy Markdown
Contributor

holy moly

@Sammy99jsp Sammy99jsp changed the title AvdanOS New Push A: Vulkan Backend AvdanOS New Push: Rendering Backend Aug 1, 2026
@Sammy99jsp

Copy link
Copy Markdown
Member Author

Rewritten the description of this PR to add a few more to-dos.

Trying to think of a good API for the format negotiation. Maybe:

impl Negotiate<Format> for Vulkan {
    fn applicable(&self, formats: &[Format]) -> Vec<Format> {
        todo!("Actual impementation here!")
    }
}

Same thing for the Skia stuff. Perhaps an extension trait:

pub trait SkiaBackend: Backend {
    fn make_context(&mut self) -> skia_safe::gpu::DirectContext<'_>{ todo!() }  // or whatever;
}

@Sammy99jsp

Copy link
Copy Markdown
Member Author

I have resorted to a nasty hack (modified from Smithay) whilst we wait for Smithay/drm-rs#224 to close.

Apart from that, relatively simple to implement the CPU backend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants