Commit Graph

23 Commits

Author SHA1 Message Date
Martin Fouilleul 1d36088302 [mtl canvas] render to an intermediate texture and acquire the drawable and blit to it only at the end of all compute passes 2023-03-16 10:25:56 +01:00
Martin Fouilleul bd8e31c535 [mtl canvas] triple buffer vertex/index/shape buffers 2023-03-15 17:48:39 +01:00
Martin Fouilleul 0c74e997ae [mtl surface] fix crash on exit when metal GPU frame capture is enabled. Apparently, if we release resources (on exit) before all GPU work is completed, libMetalCapture crashes on bad access. To work around that, in mg_mtl_surface_destroy(), we enqueue a last (empty) command buffer and call waitUntilCompleted on it, to ensure all previous command buffers are also completed 2023-03-15 13:02:18 +01:00
Martin Fouilleul 5ce53001e2 [canvas, mtl] clear resets command count and stores clear color. Ccanvas' backend begin proc now takes a clearColor parameter and clears final surface to that color before drawing any batch 2023-03-15 11:09:42 +01:00
Martin Fouilleul 221fcbeb6b [mtl canvas] store uv transform and color in triangle data (don't pass vertex or shape buffer to draw kernel) 2023-03-14 12:20:39 +01:00
Martin Fouilleul 1b3583cc6d [mtl canvas] remove box array, cache box in triangle struct 2023-03-14 09:42:12 +01:00
Martin Fouilleul 6536f4ac64 [mtl canvas] fused boxing and tiling, cache cubics in triangle data 2023-03-14 09:40:11 +01:00
Martin Fouilleul ee4a667258 [mtl canvas] trying fused boxing/tiling passes 2023-03-14 09:25:20 +01:00
Martin Fouilleul fd5a4d4cd8 [wip] trying to simplify metal shader 2023-03-14 09:25:09 +01:00
Martin Fouilleul cee294d8ad [mtl canvas] fixed setBuffer that was being called on the wrong encoder 2023-03-14 09:20:51 +01:00
Martin Fouilleul e9d64166a3 [mtl canvas] fixed bug where tiles left and below screen where all bucketed to the first row/column (same as gl version, see 4a8c77f02) 2023-03-13 16:53:12 +01:00
Martin Fouilleul 592f4cdecd end of line renormalization 2023-03-05 16:05:43 +01:00
Martin Fouilleul c04e8639ab [wip, ui] re-integrating UI subsystem and completing text box 2023-03-03 20:09:44 +01:00
Martin Fouilleul 3615775168 [canvas] decompose image atlas API into simple rect atlas API + image atlas helpers. This avoids creating a bunch of new types/handles, and exposes the underlying image/sourceRegion so that user code can freely use these for more complex scenarios (eg drawing only a sub-region of an atlased image, or using an atlas image for arbitrary path filling) 2023-02-28 16:54:39 +01:00
Martin Fouilleul d4bceba7e9 [canvas] basic image atlas API 2023-02-28 13:16:36 +01:00
Martin Fouilleul d195fb1f61 [canvas, mtl backend] Compute each layer with pre-multiplied alpha, starting from transparent color. Composite them to surface with premultiplied alpha too. 2023-02-27 14:24:59 +01:00
Martin Fouilleul 9ed630fc55 [canvas]
- Clear final surface to clear color, and enable blending layers onto it
- Fixed Batching bug where we were writing to vertex/shape buffers while the previous batch is using them
- Fixed bug where uvTransform uses transform of next shape instead of that of shape being finalized
2023-02-27 11:56:04 +01:00
Martin Fouilleul 5be019d166 [canvas, metal] compute uv coords in shader using uvTransformed computed in canvas backend, using shape bounding box, image dimension, source and dest regions 2023-02-24 18:50:46 +01:00
Martin Fouilleul fd4c4e7be3 [canvas] simple image API 2023-02-24 12:01:00 +01:00
Martin Fouilleul d1b71110bb - Fixed metal canvas backend's drawBatch argument order
- Removed texturing in metal shader while we work on image API
- Started working on simple image API
2023-02-23 18:30:47 +01:00
Martin Fouilleul 2b60db292a [wip] image api 2023-02-23 17:07:41 +01:00
Martin Fouilleul 2232b647ed reintroduced GLES backend to osx 2023-02-20 11:05:01 +01:00
martinfouilleul 80ea8db687 [surface/canvas cleanup]
- Make build-time and runtime backend selection a bit easier
- Reorganized backend-specific files with slightly more coherent naming scheme
2023-02-10 16:56:10 +01:00