Commit Graph

527 Commits

Author SHA1 Message Date
Ben Visness 570a33a0e1 Dodge AppData problems on Windows (#32) 2023-08-18 16:44:28 +02:00
Martin Fouilleul 75621d85a5 Big renaming and consistency pass, including:
- "Namespacing" the Orca APIs by adding the oc_ prefix everywhere
- Naming consistency tweaks, eg create_from_memory vs. create_from_data
- Adhering to a more consistent convention when pairing functions defining entities lifetime, eg. create/destroy, push/clear, alloc/recycle, init/cleanup
- Preferring oc_str8 to const char*, except when we expect lots of C string literals (e.g. when tagging UI widgets) or when it would be annoying to systematically wrap data we want to read/write into a string
- Reorganize macros for asserts/logging, and properly exposing them to the apps with non conflicting names
- Generally rearrange some bits and pruning unused stuff to make things more navigable
2023-08-18 16:30:55 +02:00
Reuben Dunnington c8dc466449
pong: restore NOTE/TODO comment formatting 2023-08-15 11:57:00 -07:00
Reuben Dunnington 55347f315c
clang-format tweaks
* enforce unix-style line endings
* don't format comment leading spaces
* don't sort includes
2023-08-15 07:11:34 -07:00
Reuben Dunnington c99217920f
collapse some weird if formatting 2023-08-14 14:09:22 -07:00
Reuben Dunnington 69860792df
tweak pong main.c to keep matrix formatting 2023-08-14 11:53:12 -07:00
Reuben Dunnington aa09da6f20
add .clang-format 2023-08-14 11:52:41 -07:00
Martin Fouilleul 9ae9562ca7 remove .gitmodule 2023-08-13 15:38:48 +02:00
Martin Fouilleul cf88ba6290 This commit restructures the codebase to melt the milepost platform layer into the main orca codebase.
Here's a list of commits squashed in this update:

- move angle files to ext/ and pull includes/libs from there when needed
- remove milepost/ext/angle_headers
- Collapsed milepost/ext into ext
- Collapse milepost/scripts into scripts/
- collapse milepost/resources into resources/. WARN: this temporarily breaks milepost's native examples
- collapse milepost/test into test/
- renamed test/ to tests/
- build milepost directly into build/bin
- remove unused GLES and KHR folders from sdk/
- reorganizing milepost directory tree into app, graphics, platfrom, ui, util
- collapse milepost/src to src/
- Move all native examples to sketches/ and remove milepost repo
- Moving sketches resources into their own shared folder separate from the runtime's resource folder
- Moving all binding code to src/wasmbind
- Moving all binding code to src/wasmbind
- pong: fix typo in error log
- fixing log parameter order
- add error logs to mg_image_create_*
- Fix build scripts on windows
- fixed include mistake after rebase
- collapsing milepost.{h|c|m} to orca.{h|c|m} and moving from sdk/ to src/
- rename orca_app.h/main.c to runtime.h/c
- collapsed sdk/ to src/
- put old sdk files into their respective dirs
- renamed canvas_api.json to surface_api.json
- moved all stb headers in ext/stb/
- remove unused OpenSansLatinSubset.ttf font
- moving cstdlib to src/wasmlibc and removing some duplicates with src/platform
- move libc stdarg and string functions from platform/ to wasmlibc/
- rename wasmlibc to libc-shim to reflect non-completeness
- Expose abort/assert variadic functions and macros to orca apps, and forward libc-shim abort/assert to these
- move Orca API runtime implementations to runtime_xxx
- fix missing math constants when including math.h with msvc in graphics_common.c
- Change name of runtime to orca_runtime. When bundling on Windows, change name of runtime executable to the name of the app.
2023-08-13 15:28:57 +02:00
martinfouilleul 72bb238d08 [canvas] fix canvas max tile queue count. Off-by-one was causing some paths to be culled in segment setup shader's bounds check 2023-08-13 14:51:27 +02:00
martinfouilleul 39010f5365 untrack generated samples\fluid\src\glsl_shaders.h 2023-08-11 11:19:25 +02:00
Ilia Demianenko 9da38506ff Fix slider dragging 2023-08-11 08:44:19 +00:00
Ilia Demianenko aee51e62e3 Fix windows build scripts 2023-08-09 15:15:22 -07:00
Martin Fouilleul 4d11ed1be7 [doc] update readme to the new build tools and remove refs to milepost submodule 2023-08-09 12:18:52 +02:00
Martin Fouilleul e0662f3387 Merge remote-tracking branch 'milepost-origin/prepare_orca_submodule_merge' into main
This brings the old milepost submodule tree, along with its history, into the Orca repository, so we don't have to deal with git submodule issues anymore.
2023-08-09 11:42:07 +02:00
Martin Fouilleul c2fe529243 Preparing milepost submodule merge. Remove milepost submodule. 2023-08-09 11:39:45 +02:00
Martin Fouilleul 6d33ee45dd Preparing milepost submodule merge. Moving all files into milepost folder 2023-08-09 11:36:16 +02:00
Martin Fouilleul eb9db393ba Merge branch 'gl_texture_fetch_barrier_bit' into main 2023-08-09 10:56:18 +02:00
MartinFouilleul b6462ca5f8 Merge pull request '[win32] Use wheel scroll lines system setting to determine how much to scroll' (#7) from ilidemi/milepost:win32-scroll-lines into main
Reviewed-on: MartinFouilleul/milepost#7
2023-08-09 08:22:45 +00:00
Ilia Demianenko 60083c1f2e [win32] Use wheel scroll lines system setting to determine how much to scroll 2023-08-08 20:46:48 -07:00
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