Commit Graph

636 Commits

Author SHA1 Message Date
Martin Fouilleul 442d86386e Merge branch 'batch_multi_image' into main
This allows the renderer to use multiple source textures per batch, and thus create less batches (and less draw calls). It also doesn't create a separate batch for non-image fills/strokes. This greatly improves perf especially when interleaving images and solid color commands. When using lots of images though, it is still recommended to use an atlas, which ensures everything fits in a single batch.
2023-07-28 10:48:52 +02:00
martinfouilleul b05caf984c [gl canvas] allow multiple textures per batch 2023-07-27 20:07:07 +02:00
Martin Fouilleul c983c39f44 [canvas] removed old begin/end/renderBatch function pointers 2023-07-27 18:11:34 +02:00
Martin Fouilleul 203adfd470 [mtl canvas] allow using multiple textures per batch 2023-07-27 16:46:10 +02:00
Martin Fouilleul 0c8e698b6e [mtl canvas] don't trigger a new batch when setting the current image to nil (avoids creating a lot of batches when we just alternate between the same image and no image, eg painting multiple instances of the same image with a stroked border) 2023-07-27 16:10:30 +02:00
martinfouilleul 3dd85fdf74 [milepost] update milepost (gl canvas buffers size improvements) 2023-07-27 15:40:56 +02:00
martinfouilleul 392bd3a756 Merge branch 'new_gl_canvas' 2023-07-27 15:38:55 +02:00
martinfouilleul b300cc4d7d [gl canvas] balance dispatch of raster shader along 2 dimensions to avoid hitting the max workgroup count per dimension 2023-07-27 15:24:20 +02:00
martinfouilleul 3c103eeb65 [canvas, gl] compute intermediate glsl structs' sizes according to std430 2023-07-27 14:38:12 +02:00
martinfouilleul ae862b39ba [win32, gl canvas] grow intermediate gl buffers as needed 2023-07-27 12:40:52 +02:00
martinfouilleul a35f0b82b2 [win32, gl canvas] bound check intermediate buffers in canvas shaders 2023-07-27 12:11:30 +02:00
martinfouilleul 680deb35b0 [win32, gl canvas] grow path and element input buffers as needed 2023-07-27 11:37:39 +02:00
martinfouilleul 23f0d75e20 Merge branch 'autoresize_surfaces' 2023-07-26 17:43:58 +02:00
martinfouilleul 81b700121f update milepost 2023-07-26 17:42:48 +02:00
martinfouilleul 0caeccd3fb Merge branch 'autoresize_surfaces' 2023-07-26 17:41:50 +02:00
martinfouilleul a1068c979a [win32] fix mp_window_center() 2023-07-26 17:38:24 +02:00
martinfouilleul 0785b6b637 [win32]
- Take drop shadown into account when calling SetWindowPos (milepost window frame _excludes_ the drop shadow)
- Fix mp_window_center()
2023-07-26 17:35:58 +02:00
martinfouilleul de28d37d57 [win32] update window rect API and reported window sizes to match macos 2023-07-26 16:55:04 +02:00
martinfouilleul 2c0d3268e7 [win32] update window rect API 2023-07-26 16:50:45 +02:00
Martin Fouilleul 756b085c5f [osx] update milepost, more consistent window rect api 2023-07-26 15:58:39 +02:00
Martin Fouilleul 1fd9d17e82 [osx] settle on consistent API for getting/setting window rect 2023-07-26 15:54:01 +02:00
Martin Fouilleul 06b5d30dc6 [osx] correctly pass move/resize contents and frame rect relative to top-left instead of bottom left 2023-07-25 18:05:55 +02:00
Martin Fouilleul 213663a09c [milepost update] use autoresizeMask to resize surfaces to the parent window's client area 2023-07-25 17:02:38 +02:00
Martin Fouilleul e7cce5e36f [osx, surface] use autoresizeMask to resize surfaces to the parent window's client area 2023-07-25 17:02:11 +02:00
martinfouilleul a4ae1cf214 [win32, surface] Fix auto-selecting surface when first creating one ; checking why smooth resize still doesn't work even though we receive events and draw in a separate thread 2023-07-25 15:55:09 +02:00
martinfouilleul 225b506dd4 [win32, surface] automatically resize surfaces to parent window's client area 2023-07-25 14:21:44 +02:00
martinfouilleul 3816e85592 [win32, surface] always resize surface to parent window's client area 2023-07-25 14:18:02 +02:00
martinfouilleul 985aed852a [app] change mp_move_event to mp_mouse_event and mp_frame_event to mp_move_event. Transmit both window frame and contents rect in move/resize events 2023-07-25 13:40:25 +02:00
MartinFouilleul b4893961fd Merge pull request 'Ignore win32 Pong app' (#19) from ignore-pong into main
Reviewed-on: #19
2023-07-16 15:24:39 +00:00
MartinFouilleul 5b40414f52 Merge branch 'main' into ignore-pong 2023-07-16 15:22:39 +00:00
martinfouilleul 86f6eb028c update milepost to fix win32 gl renderer 2023-07-16 17:21:43 +02:00
MartinFouilleul a95de7902f Merge pull request 'Milepost UI demo' (#18) from ilidemi/orca:ui into main
Reviewed-on: #18
2023-07-16 15:19:08 +00:00
martinfouilleul 2a4e90cf9a [win32, canvas] Fix padding of mg_gl_screen_tile 2023-07-16 17:12:34 +02:00
Ben Visness 236fa7f8bd Ignore win32 Pong app 2023-07-15 18:48:47 -05:00
Ilia Demianenko d9ab264f81 Bring back exports 2023-07-15 15:56:02 -07:00
Ilia Demianenko 6c91caddc0 Fix event passing 2023-07-15 15:55:50 -07:00
Martin Fouilleul 8c885223d3 [osx, canvas] revert to 16 pixel wide tiles. 32 gives some benefit for a few large paths, but degrades too much for higher segment counts 2023-07-15 17:32:18 +02:00
martinfouilleul bff9a3618f [win32, canvas] use glBindBufferBase() and explicit uniform offset to avoid glBindBufferRange() implementation-specific alignment issues 2023-07-15 15:29:45 +02:00
Martin Fouilleul 6a3cb83932 Merge branch 'ilidemi-orca_ui' into main 2023-07-15 11:42:48 +02:00
Ilia Demianenko e7982b7786 Just use MP_KEYMOD_MAIN_MODIFIER instead of OS_COPY_PASTE_MOD 2023-07-15 00:54:57 -07:00
Ilia Demianenko 5fa9c3c34c Fixes 2023-07-15 00:49:41 -07:00
Ilia Demianenko e6c271c3f5 minor 2023-07-15 00:35:02 -07:00
ilidemi 2214974804 Merge branch 'main' into orca_ui 2023-07-15 07:21:41 +00:00
Ilia Demianenko 7450930ae8 minor 2023-07-15 00:20:45 -07:00
Ilia Demianenko 445325d45f Merge branch 'orca_ui' of git.handmade.network:ilidemi/milepost into orca_ui 2023-07-15 00:17:53 -07:00
Ilia Demianenko 40906bb852 Feedback 2023-07-15 00:15:12 -07:00
Ilia Demianenko bffcaa4abf Feedback 2023-07-15 00:15:07 -07:00
martinfouilleul 782b7f54ae [win32, canvas] only dispatch raster shader for tiles touched by paths 2023-07-14 18:58:18 +02:00
martinfouilleul 1c244c2a00 [win32, canvas] only sample coverage at 8x and source textures at 2x, and accumulate in a single color value per pixel 2023-07-14 17:37:33 +02:00
Martin Fouilleul ec0f22a9d8 [osx, canvas] keep op buffer size to 4<<20 for now 2023-07-14 16:28:45 +02:00