Skip to content

v0.30.27 — GLES 3D rendering: MappedAtCreation flush + depth fixes

Choose a tag to compare

@kolkov kolkov released this 30 Jul 08:37
d58070d

Fixed

  • GLES: MappedAtCreation buffer data silently discarded on Unmap
    UnmapBuffer only flushed shadow data to GL when BufferUsageMapWrite was set.
    Per WebGPU spec, MappedAtCreation does NOT require MapWrite usage. Buffers
    with Uniform|CopyDst + MappedAtCreation (the standard g3d pattern) had their
    data thrown away — zero MVP matrices, zero vertices, zero indices. Root cause of
    invisible 3D geometry on GLES. (#284)

  • GLES: depth/stencil attachment point chosen by format
    GL_DEPTH_ATTACHMENT for depth-only formats, GL_DEPTH_STENCIL_ATTACHMENT for
    combined. Wrong attachment point caused FBO incomplete (0x506). Rust wgpu-hal
    parity (command.rs:577-580). (#284)

  • GLES: depth clear masked by stale pipeline stateClearDepthCommand now
    calls glDepthMask(true) + glClearDepth(value) before glClear. Prevents
    stale DepthMask(false) from prior pipeline silently masking depth clear. (#284)

  • GLES: viewport depth range ignoredSetViewportCommand now calls
    glDepthRange(minDepth, maxDepth). Was ignoring depth range fields entirely.
    Rust wgpu-hal parity (queue.rs:1295-1296). (#284)

Added

  • gl.Context.ClearDepth() and gl.Context.DepthRange() wrapper methods for
    both Windows (syscall, double) and Linux (goffi, float32 for GLES).

Changed

  • deps: gpucontext v0.22.0 → v0.23.0