Commit Graph

113 Commits

Author SHA1 Message Date
Reuben Dunnington b9e843f4bb
fix some crashes in metal implementation when pathCount and etlCount are 0 2023-08-24 11:33:21 -07:00
Martin Fouilleul 42738195b5 Don't assume oc_scratch() is cleared at the frame boundary. Use oc_scratch_begin()/oc_scratch_end() instead 2023-08-23 16:24:13 +02:00
Martin Fouilleul 98f131cb30 Fix leak in metal surface: command buffer must not be committed if there is no surface to present it to, or it will result in a huge leak in metal resources. Also wrap oc_mtl_surface_acquire_command_buffer() in an @autoreleasepool to fix a smaller leak 2023-08-23 15:09:06 +02:00
Martin Fouilleul edaffcb649 implement oc_window_is_minimized on macos 2023-08-23 12:16:01 +02:00
Reuben Dunnington 7b48c20c26 remove stray declaration 2023-08-22 21:32:13 +00:00
Reuben Dunnington 9ca7e82c82 flatten oc_request_quit() binding 2023-08-22 21:32:13 +00:00
Reuben Dunnington 0973e26150 expose oc_request_quit() to wasm runtime 2023-08-22 21:32:13 +00:00
Reuben Dunnington 9d1d8e5306
add win32 impl for oc_clock_time() 2023-08-22 13:42:01 -07:00
Ilia Demianenko 2c07c9b665 Bring back the main modifier, get rid of _impl 2023-08-22 20:15:21 +00:00
Ilia Demianenko a6f81a1320 Use textbox shortcuts from the host platform 2023-08-22 20:15:21 +00:00
Reuben Dunnington 7755827485 ensure focus remains on main window when creating child windows 2023-08-22 20:10:57 +00:00
Reuben Dunnington c27e1c6b62
don't attempt to draw when the window is minimized 2023-08-22 07:43:22 -07:00
Reuben Dunnington 464a25c55d
fixes for a couple compile errors 2023-08-21 11:50:42 -07:00
Martin Fouilleul 94b9cb2bbf Auto-formatting with clang-format 2023-08-19 15:52:11 +02:00
Ilia Demianenko 40887a9a2d Small textbox fixes
Lose focus on mouse click outside
Update selection while dragging outside the box
Stop trying to flip the selection on drag, keep shift+click
2023-08-18 18:15:39 +02:00
Reuben Dunnington 9a125361d6 forward sys keys to default window proc to get alt+f4 handling 2023-08-18 17:22:08 +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
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
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
Reuben Dunnington b9bd2723a9
replace pthread with mp_thread 2023-07-30 21:35:08 -07: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 756b085c5f [osx] update milepost, more consistent window rect api 2023-07-26 15:58:39 +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
martinfouilleul 225b506dd4 [win32, surface] automatically resize surfaces to parent window's client area 2023-07-25 14:21:44 +02: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
Ilia Demianenko 7450930ae8 minor 2023-07-15 00:20:45 -07:00
Ilia Demianenko bffcaa4abf Feedback 2023-07-15 00:15:07 -07:00
Ilia Demianenko 0eefeb3747 UI demo 2023-07-13 21:39:39 -07:00
Martin Fouilleul b7e3e83f3e Block for events in main thread, and avoid burning the planet 2023-06-26 20:00:29 +02:00
Martin Fouilleul 0a83f26f7b avoid some unnecessary str8 copies now that arena-allocating string functions null terminate strings 2023-06-26 16:07:44 +02:00
Martin Fouilleul d0ad92f0b8 Load images in pong example 2023-06-25 20:36:02 +02:00
Martin Fouilleul 1f75f40536 give read _and_ write access to data dir capability, so that we can both read and create files inside it. (warning for when we implement delete/rename etc: Write access to a directory shouldn't permit deleting/renaming it, just to delete/rename stuff inside it) 2023-06-23 17:26:19 +02:00
Martin Fouilleul da2b0867a6 explicitly deselect surfaces before using them in the runloop thread 2023-06-23 15:38:13 +02:00
martinfouilleul 472d3031b2 [win32, multisurface] putting 'present' call for guest and surface overlay next to each other. 2023-06-22 17:28:32 +02:00
martinfouilleul 238963df0b [wip, win32] got debug overlay ~working, with a couple hacks: use top-level transparent windows as child windows (see milepost), and create a dummy surface just to deselect normal and debug surface before using them in render thread. TODO: make an API for deselecting those surfaces. Investigate multisurface options more... 2023-06-21 19:27:15 +02:00
martinfouilleul a09b10714c [win32] debugging multi surface 2023-06-21 15:49:03 +02:00
Martin Fouilleul 93ee157da0 silence clang warning on const qualifiers 2023-06-20 10:26:28 +02:00
martinfouilleul 19c82cfe14 Fix mem_arena_alloc bug in milepost, now debug overlay doesn crash, but doesn't display either (instead it flashes pretty hard, so I disabled it for now. Epilepsy warning if you re-enable it!) 2023-06-19 17:13:56 +02:00
martinfouilleul be84dbc6d1 [win32, wip] Pong sample running on win32 (but debug overlay crashes the app). 2023-06-19 16:51:43 +02:00
martinfouilleul 0312c7c56a add an error popup and quit when the web assembly module can't load 2023-06-19 14:17:40 +02:00
martinfouilleul 3ba2488541 [win32] runtime compiles, and boots (without loading wasm module) 2023-06-17 20:10:11 +02:00
martinfouilleul f5f7c5d8ff [wip, win32] wip implementing missing win32 platform functions 2023-06-16 20:07:26 +02:00
martinfouilleul ea4a19b074 [win32, build] first iteration on build script for win32 2023-06-16 19:57:19 +02:00
Martin Fouilleul 37ab5ca5e4 Sanbox file IO to app data directory with IO_OP_OPEN_AT and FILE_OPEN_RESTRICT 2023-06-11 18:21:04 +02:00
Martin Fouilleul a4a3423907 re-integrating file IO with common platform API 2023-06-09 17:28:33 +02:00
Martin Fouilleul 02014a6ddf update milepost and use new file path functions 2023-05-24 16:31:01 +02:00
Martin Fouilleul bfc81fd062 [io] check that file path doesn't escape app's local data folder when opening files 2023-05-11 19:42:12 +02:00
Martin Fouilleul e82225116b [io] Store last error in file handle, lockdown on fatal error 2023-05-11 19:42:12 +02:00
Martin Fouilleul 25f66b3954 [io, wip] read/write/seek/pos/size operations (todo: error on handle) 2023-05-11 19:42:12 +02:00
Martin Fouilleul 4ae51d7a23 [file io, wip] open/close file API 2023-05-11 19:42:12 +02:00
Martin Fouilleul 3874e798c3 Compile canvas command buffer into wasm and bind host surface/render API 2023-04-26 14:57:12 +02:00
Martin Fouilleul 58effcb413 fixed using wrong length when copying debug entries function name 2023-04-21 10:02:17 +02:00
Martin Fouilleul 28a4fe0579 First draft of in-app debug console 2023-04-20 15:47:18 +02:00
Martin Fouilleul eb09d73fa8 [milepost] changes to event system that allows using events with payloads (eg file paths) across threads 2023-04-19 16:19:13 +02:00
Martin Fouilleul 81ead1ba91 [in-app console]
- splitting input state from app structures in milepost, so that it can be used from another thread than main event thread.
- Adding a collapsable debug overlay to orca window (wip)
2023-04-19 11:28:53 +02:00
Martin Fouilleul 7884ddd339 puling logging functionality from milepost into orca 2023-04-18 18:06:47 +02:00
Martin Fouilleul a1c69fc5f9 [wip] logging system 2023-04-18 14:33:47 +02:00
Martin Fouilleul caa454f1ca Adding printing functions and asserts 2023-04-18 10:46:02 +02:00
Martin Fouilleul d43afa2ac0 memory arena and mem copy/compare functions for orca 2023-04-17 18:13:07 +02:00
Martin Fouilleul 4f90efbb22 start integrating milepost components into orca 2023-04-17 10:56:38 +02:00
Martin Fouilleul db7fe504bb HMN viz jam 2023-04-14 11:48:36 +02:00
Martin Fouilleul 17c0f02962 orca runtime initial commit 2023-04-12 16:21:03 +02:00