#gamedev #abstraction-layer #newport #game-engine #engine #game #thread-safe

nightly newport_gpu

Thread safe render abstraction layer for Newport engine

2 unstable releases

0.2.0 Jul 18, 2021
0.0.1 Mar 31, 2021

#11 in #newport

Download history 15/week @ 2024-03-11 12/week @ 2024-03-18 21/week @ 2024-03-25 72/week @ 2024-04-01 11/week @ 2024-04-08 8/week @ 2024-04-15 10/week @ 2024-04-22 6/week @ 2024-04-29 16/week @ 2024-05-06 12/week @ 2024-05-13 15/week @ 2024-05-20 14/week @ 2024-05-27 9/week @ 2024-06-03 15/week @ 2024-06-10 9/week @ 2024-06-17 17/week @ 2024-06-24

51 downloads per month
Used in 6 crates (5 directly)

Apache-2.0

19MB
7K SLoC

Contains (Windows DLL, 19MB) bin/dxcompiler.dll

This crate is the HAL for the GPU. Currently Vulkan is the only back end available. The design and architecture was originally concepted after reading http://alextardif.com/RenderingAbstractionLayers.html

Warning

This package is still in a very early state. The API is currently super volatile. I would not recommend using this package if you don't plan on handling the unknown future changes.

Goals

  • Abstraction layer should be as lightweight as possible. As many API layer specfic concepts should be hidden from the user

  • Abstraction layer should be as simple as possible. There will be code complexity that is unavoidable but they should be rare. If the user ends up spending too much time debugging just to get to the meat of their calls then we have failed

  • Abstraction layer should be easy to maintain and add on. The hope is that the above points aid this goal

Needs

  • Ability to create multiple devices to allow multiple GPU work if desired
  • Create, upload, and destroy resources (buffers, textures, shaders, pipelines, etc)
  • Gather, submit, and wait on command work from various passes, in a multicore-compatible way
  • Automatic device memory management

Dependencies

~8MB
~180K SLoC