Crate gfx_hal

Source
Expand description

Low-level graphics abstraction for Rust. Mostly operates on data, not types. Designed for use by libraries and higher-level abstractions only.

This crate provides a hardware abstraction layer for graphics adapters, for both compute and graphics operations. The API design is heavily inspired by the Vulkan API, and borrows some of the terminology.

§Usage

Most of the functionality is implemented in separate crates, one for each backend. This crate only exposes a few generic traits and structures. You can import all the necessary traits through the prelude module.

The first step to using gfx-hal is to initialize one of the available backends, by creating an Instance. Then proceed by enumerating the available graphics adapters and querying their available features and queues.

You can use the open method on a PhysicalDevice to get a logical device handle, from which you can manage all the other device-specific resources.

Modules§

  • Physical graphics devices.
  • Memory buffers.
  • Command buffers.
  • Logical graphics device.
  • Displays.
  • Structures related to the import external memory functionality.
  • Universal format specification. Applicable to textures, views, and vertex buffers.
  • Image related structures.
  • Types to describe the properties of memory allocated for graphics resources.
  • Render pass handling.
  • Command pools
  • Prelude module re-exports all the traits necessary to use gfx-hal.
  • Raw Pipeline State Objects
  • Commands that can be used to record statistics or other useful values as the command buffer is running.
  • Command queues.
  • Windowing system interoperability.

Macros§

  • Macro for specifying list of specialization constants for EntryPoint.

Structs§

Enums§

  • Collections of shader features shaders support if they support less than vulkan does.
  • An enum describing the type of an index value in a slice’s index buffer

Traits§

  • Wraps together all the types needed for a graphics backend.
  • An instantiated backend.

Type Aliases§