Skip to content

Releases

EasyGPU 0.2.0 — Real wgpu-py Backend

Choose a tag to compare

@EagleEatApple EagleEatApple released this 10 Oct 01:43

Real backend release — WgpuPyGPU behind the stable GPU Protocol, with
offscreen render targets that render headlessly on lavapipe and WARP.

Added

  • WgpuPyGPU (easygpu.wgpu_backend): delegates the existing GPU Protocol
    to wgpu-py. Adapter/device/queue creation (EASYGPU_SOFTWARE=1 forces a
    software adapter), buffers with synchronous readback, shader modules,
    render/compute pipelines with auto layouts, textures/views/samplers, bind
    groups, full render-pass and compute-pass encoding, submit,
    write_buffer/write_texture, copy_texture_to_buffer.
    WgpuPyGPU.from_wgpu_device() adopts an existing wgpu device;
    WgpuPyGPU.underlying_device exposes it.
  • easygpu.gpu.WGPU_BACKEND_UNSUPPORTED: a frozenset[str] naming every
    Protocol method WgpuPyGPU does not yet implement (14 in 0.2.0).
  • easygpu.testing: assertion helpers over FakeGPU.calls —
    assert_call_order, assert_no_call, diff_against, call_names.
  • easygpu.offscreen: OffscreenTarget, offscreen_target(), and
    readback_rgba8() — real pipelines render into textures and pull pixels
    back (headless CI green on Linux/lavapipe and Windows/WARP).
  • easygpu.wgpu_translate: pure descriptor/enum translation (18 enum tables).
  • Optional wgpu extra (pip install easygpu[wgpu]); plain import easygpu
    stays zero-dependency.
  • 3 offscreen examples: triangle_offscreen, textured_cube_offscreen,
    compute_boids_offscreen — dual-engine tested (FakeGPU recording + live
    wgpu pixels).

Changed

  • __version__ → 0.2.0; import warning now nudges installing the wgpu extra.
  • RenderPassColorAttachment.view accepts int handles, TextureView, or an
    OffscreenTarget.
  • Pipeline color targets must declare a format (as WebGPU requires).

Fixed

  • Basic vertex + textured fragment shaders (both fn main) now build as
    separate modules to satisfy WGSL redefinition rules on the real backend.

Install

pip install "easygpu[wgpu]"

What does NOT work in 0.2.0

  • No swapchain / window output (offscreen targets work — use OffscreenTarget)
  • No dynamic-offset bind groups
  • No numpy integration (raw bytes / struct.pack)
  • generate_mipmap on the real backend (staged for 0.3.0)

See the CHANGELOG
for the full list.

EasyGPU 0.1.1 — README fix

Choose a tag to compare

@EagleEatApple EagleEatApple released this 09 Oct 08:27

Fixed

  • README: run examples as modules (uv run python -m examples.xxx) instead
    of uv run python examples/xxx.py, which failed with
    ModuleNotFoundError: No module named 'examples' because the script
    directory (not the repository root) goes on sys.path.

EasyGPU 0.1.0 — Command Encoding + FakeGPU

Choose a tag to compare

@EagleEatApple EagleEatApple released this 22 Sep 06:49

Known issue: the README in this release documents
uv run python examples/xxx.py, which fails with
ModuleNotFoundError: No module named 'examples'. Fixed in
0.1.1 —
use uv run python -m examples.xxx instead.

First functional release — command encoding + FakeGPU complete; real backend on the roadmap.

Added

  • Protocol extended from 20 to 73 methods
  • New wrapper objects: Texture/TextureView/Sampler, BindGroup, ComputePipeline, QuerySet, ...
  • 13 examples (11 webgpu-samples ports + triangle + alpha_to_coverage)
  • Pure-Python easygpu.matrix
  • Zero runtime dependencies

Changed

  • Package version bumped 0.0.0 → 0.1.0
  • _DefaultGPU no longer inherits GPU
  • destroy_render_bundle removed from the protocol

Fixed

  • Stray \x20\x20 bytes in examples/boids_shaders.py

EasyGPU 0.0.0 — API preview

Pre-release

Choose a tag to compare

@EagleEatApple EagleEatApple released this 20 Sep 06:22

API design validation only. No real GPU backend yet; FakeGPU and the GPU Protocol are the deliverables.