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