Skip to content

v0.0.0-alpha.2: Image crate integration 🖼

Pre-release
Pre-release
Compare
Choose a tag to compare
@jeronimosg jeronimosg released this 20 Oct 21:13
· 41 commits to dev since this release
v0.0.0-alpha.2
ad35454

This new release includes the capability to convert image::ImageBuffer from the image crate to gpgpu::GpuImage objects and vice versa.

✨ New features

🚩 integration-image feature flag

  • Compile-time type conversion safety from/to image::ImageBuffer to/from gpgpu::GpuImage objects
    • Supported pixel types:
      • RGBA8 Uint
      • RGBA8 Uint Norm
      • RGBA8 Sint
      • RGBA8 Sint Norm
    • Bidirectional conversions between image::ImageBuffer and gpgpu::GpuImage
      • Sync and async read
      • Sync and async writes

â›° Enviroment backend selection

Using the env variable WGPU_BACKEND, the gpgpu-rs backend can be selected. Available options are:

  • Vulkan: "vulkan" or "vk"
  • DX12: "dx12" or "d3d12"
  • DX11: "dx11" or "d3d11"
  • Metal: "metal" or "mtl"
  • OpenGL ES: "opengl", "gles" or "gl"
  • WebGPU: "webgpu"
    Any comma separeted combiantion of any of the previous options is valid. ex. WGPU_BACKEND='vk,gl'

📕 Vagrant box

For the development of gpgpu-rs a headless Vagrant box was created. It runs under Ubuntu 21.04. Only the OpenGL ES backend can be used.

For a complete list of the changes since the last release: v0.0.0-alpha.1...v0.0.0-alpha.2

🕹 Usage

Since this version still not published in Crates.io, add it to your Cargo.toml as follows:

[dependencies]
gpgpu = { git = "https://github.com/UpsettingBoy/gpgpu-rs", tag = "v0.0.0-alpha.2" }

🆘 Help wanted

  • For an efficient implementation of the conversion between image and gpgpu-rs types, some unsafe code was required. A review of this fragment is very much appreciated 😄 (in src/features/integrate_image.rs 👀).
  • I'm running out of ideas. The initial goal of this project was to allow me develop a GPU-based image processing library (imageproc_gpu). Since I think gpgpu-rs is enough for that (but still very lacking), I'll continue with that project, adding whatever I need for GPGPU computing back at gpgpu-rs. Any other idea is appreciated.