Skip to content

Support imaging_skia GPU with wgpu 29 Metal#68

Open
waywardmonkeys wants to merge 1 commit into
forest-rs:mainfrom
waywardmonkeys:skia-wgpu-29-metal-queue
Open

Support imaging_skia GPU with wgpu 29 Metal#68
waywardmonkeys wants to merge 1 commit into
forest-rs:mainfrom
waywardmonkeys:skia-wgpu-29-metal-queue

Conversation

@waywardmonkeys
Copy link
Copy Markdown
Contributor

Summary

  • update imaging_skia's GPU path to use the workspace wgpu 29 integration
  • create and retain a Skia-owned Metal command queue for Ganesh instead of borrowing one from wgpu
  • add conservative synchronization around shared Metal texture initialization and Skia surface flushes

Background

wgpu 29 removed the API imaging_skia used to get the raw Metal command queue from a wgpu::Queue. Skia's Ganesh Metal backend still needs an MTLCommandQueue when creating its DirectContext, so this branch creates one from the shared Metal device and keeps it alive with the Skia backend.

The raw queue access is expected to return in wgpu 30, so this is intended as a narrow compatibility bridge for wgpu 29 rather than a permanent API direction.

Testing

  • cargo check -p imaging_skia --features gpu

wgpu 29 removed the API that let imaging_skia get the raw Metal command queue from a wgpu::Queue. Skia's Ganesh Metal backend still needs an MTLCommandQueue when creating its DirectContext, so create and retain a Skia-owned Metal command queue from the shared Metal device instead of trying to borrow wgpu's queue.

This keeps the GPU backend working on wgpu 29 without changing the public imaging_skia API. wgpu is expected to regain the relevant raw queue access in wgpu 30, so this can be revisited when that API is available again.

Because Skia now submits work through a separate Metal queue, synchronize the shared texture path more conservatively: flush Metal surfaces with SyncCpu::Yes and wait for the wgpu texture initialization pass before handing textures to Skia.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant