Skip to content

emberwave v0.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 08:18
· 30 commits to main since this release
87938a6

Pictures straight into Metal textures for iPhone, iPad and Mac apps, without a trip through CPU memory, and an iPhone and iPad app that times emberwave on the device's own GPU.

Added

  • An iPhone and iPad benchmark app, crates/emberwave-ffi/examples/ios (#66). It times decoding into Metal textures, decoding to planes in memory and encoding on the device's GPU through the C API, with the pictures and budgets of the browser benchmark. It also draws the last picture from its texture. CI runs it in an iOS Simulator, where it also reads a texture back through Metal.
  • Pictures on the GPU for Metal clients (decision D40, #27).
    • emberwave_texture_create makes a texture of the picture's size, RGBA or BGRA, on the decoder's device.
    • emberwave_decoder_decode_texture draws the RGB picture into it and waits.
    • emberwave_texture_metal and emberwave_context_metal_device give the id<MTLTexture> and id<MTLDevice> behind them.
    • On an Apple M3 Max a 4K frame takes 1.5 ms that way, against 2.7 ms to RGB in CPU memory.
    • In Rust, Decoder::encode_rgb_to_texture, decode_assembled_to_texture and create_texture draw into a wgpu texture, and GpuContext::id tells contexts apart.

Changed

  • The browser player draws its canvas through Decoder::encode_rgb_to_texture, the same pass as the C API's textures.