Commit Graph

507 Commits

Author SHA1 Message Date
Martin Fouilleul e4d9955e83 [gles] expose GLES surface and GLES API to orca apps.
- Allow orca app to request either Canvas or GLES surfaces
- Add bounds check specifications to the json bindings spec format and to the bindings generator scripts.
- Generate GLES API json bindings spec from gl.xml
- Remove APIs that can't be bound with current wasm memory model (ie buffer mapping)
- Manually link remaining APIs, except glGetString
- Add fluid simulation sample
- Add abort messages for wasm loading and runtime fatal errors
- Adapt orca build tool to generate GLES json spec from gl.xml
- Adapt glesTriangle and fluid samples build scripts to new orca build tool
2023-08-08 22:54:29 +02:00
Martin Fouilleul d01dc832fb [gles] Support for exposing GLES surfaces to orca apps
- update gles surface example
- add mp_dispatch_on_main_thread_sync() to osx threads
- add /experimental:c11atomics to glesTriangle build.bat
- mp_dispatch_on_main_thread_sync: win32 impl
- move mp_dispatch_on_main_thread_sync() on app layer
- configure dlmalloc to not assume contiguity. This allows us to reserve blocks on our end without trashing malloc-owned zones. This way we can add a block to store GL static strings when needed.
- implement deselect interface
- Log an error when an OpenGL function is called while no OpenGL API is selected, or if that function is not part of the selected API
- avoid dispatching calls to image or canvas API if surface is not selected. However, we could later allow it and temporarily select the surface _on behalf of the user_.
- Adding support for format string and optional parameters in assert macros
2023-08-08 22:15:53 +02:00
bvisness 3fae3252a1 Convert build scripts to Python (#31)
All the tooling has been built into a new command-line tool, `orca`. To use it, just run `orca -h`.

To build the samples, you must first install the orca tooling by running `orca dev install`. This simulates what it will be like to actually use the orca tooling as an end user, without the source checked out. Mostly. (I don't yet have it downloading pre-built copies of the Orca runtime libraries and `orca.exe`.)
Co-authored-by: Ben Visness <ben@bvisness.me>
Co-authored-by: Ben Visness <bvisness@gmail.com>
Co-authored-by: Martin Fouilleul <martinfouilleul@gmail.com>
Reviewed-on: #31
Co-authored-by: bvisness <ben@handmade.network>
Co-committed-by: bvisness <ben@handmade.network>
2023-08-08 09:38:43 +00:00
MartinFouilleul c103c001f7 Merge pull request 'Python build script updates' (#6) from build-python into main
Reviewed-on: MartinFouilleul/milepost#6
2023-08-08 09:32:41 +00:00
Ben Visness e20a743605 Delete build scripts in favor of parent orca scripts 2023-08-07 23:00:27 -05:00
Reuben Dunnington a658e714c3
remove pthreads references from mkapp.py 2023-07-31 15:10:43 -07:00
MartinFouilleul e642c38a4d Merge pull request 'mp_thread' (#26) from mp_thread into main
Reviewed-on: #26
2023-07-31 18:36:54 +00:00
Reuben Dunnington 164540ea8c
update milepost submodule 2023-07-31 11:10:03 -07:00
MartinFouilleul 6221370aa0 Merge pull request 'mp_thread' (#3) from mp_thread into main
Reviewed-on: MartinFouilleul/milepost#3
2023-07-31 18:06:54 +00:00
Reuben Dunnington 32ac59cd7e
fix compile error on macos 2023-07-31 09:46:18 -07:00
Reuben Dunnington b9bd2723a9
replace pthread with mp_thread 2023-07-30 21:35:08 -07:00
Reuben Dunnington 6ec113b708
examples: replace pthread with mp_thread 2023-07-30 21:21:25 -07:00
Reuben Dunnington 003af621a0
expose platform_thread.h to users of milepost 2023-07-30 21:08:29 -07:00
Reuben Dunnington ff5e6e6039
add win32 platform_thread.h implementation 2023-07-30 20:59:00 -07:00
Reuben Dunnington 58210d1884
reworking thread exit code API to make it easier on win32 2023-07-30 20:58:10 -07:00
Reuben Dunnington baab4036c4
platform thread naming pass 2023-07-30 19:28:15 -07:00
martinfouilleul a4763d2da8 [gl canvas] add texture memory barrier between raster pass and blit pass 2023-07-29 12:36:55 +02:00
MartinFouilleul 93acffa277 Merge pull request 'Fully replace bindgen.py with bindgen2.py' (#25) from bindgen2_all_apis into main
Reviewed-on: #25
2023-07-29 10:22:20 +00:00
Martin Fouilleul b77eba597b updating build.sh to reflect changes in bindings generation 2023-07-29 12:21:08 +02:00
Reuben Dunnington 71236240ab
fully replace bindgen.py with bindgen2.py
* Removes core_api and gles_api .txt bindings and replaces them with .json versions
* Rename bindgen2.py to bindgen.py, effectively deleting the old script
* Update build.bat to reflect new changes
2023-07-28 22:20:26 -07:00
Martin Fouilleul 835097f8b5 update milepost: allow renderer to use multiple image sources per batch 2023-07-28 10:58:26 +02:00
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