Skip to content

Unify GL bindings behind glow #33539

@sagudev

Description

@sagudev

Currently servo is using multiple GL bindings: glow, sparkle and gleam (with last two being part of servo organization). Per discussion in https://servo.zulipchat.com/#narrow/stream/263398-general/topic/GL.20Bindings we should migrate to glow which is the only one that is actually actively maintained and used by wgpu and wider rust community. With that being done we can archive sparkle and gleam and lower number of deps (faster compilation and smaller binary size).

Usage trees:

sparkle v0.1.26 ✅
├── surfman servo/surfman#318
├── canvas #33918
├── canvas_traits #34292
├── libservo #33910
├── script #33911
└── webxr servo/webxr#248

gleam v0.15.0 (all usage is actually due to webrender)
├── compositing
├── libservo
├── servoshell
└── webrender

Then there is also some usages of gl_generator that would be nice to be removed too (thus removing build scripts and duplication), but gl_generator can be used for GL/GLES or EGL bindings. The last case cannot be replaced with glow, as it involves context creation (but we might be able to migrate to glutin for that, this is yet to be investigated).

gl_generator v0.14.0
[build-dependencies]
├── gleam
├── sparkle #33918
├── mozangle (only on windows; GLES, EGL)
├── servoshell (EGL) #34716
└── surfman (GL, GLES, EGL) servo/surfman#321

Action points:

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-gfx/uncategorizedE-very-complexVery difficult. Do not attempt without significant relevant experience and motivation.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions