Crate gfx_backend_gl[][src]

OpenGL backend internals.

The main target is OpenGL ES3 on Linux and Android.

Binding model

Binding model is the biggest and most painful difference with gfx-hal API.

First, the bindings get linearized into the pipeline layout (see PipelineLayoutSet). Then a pipeline gets created, and we track all the texture-sampler associations. We only support at most one sampler used with each texture so far. The linear index of this sampler is stored per texture slot in SamplerBindMap array.

The texture-sampler pairs get potentially invalidated in 2 places:

  • when a new pipeline is bound, we update the linear indices of associated samplers
  • when a new descriptor set is bound, we update both the textures and the samplers

We expect that the changes to sampler states between any 2 pipelines of the same layout will be minimal, if any.

Structs

Device

GL device.

GlContext
Info

OpenGL implementation information

Instance
PhysicalDevice
PlatformName

A unique platform identifier that does not change between releases

QueueFamily
Starc

Single-threaded Arc. Wrapper for Arc that allows you to Send it even if T: !Sync. Yet internal data cannot be accessed outside of the thread where it was created.

Surface
Swapchain
Version

A version number for a specific component of an OpenGL implementation

Wstarc

Single-threaded Weak. Wrapper for Weak that allows you to Send it even if T: !Sync. Yet internal data cannot be accessed outside of the thread where it was created.

Enums

Backend
Error