Commit Graph

  • 62b8b3323e [win32, wip] Remove input state from win32_app code martinfouilleul 2023-05-12 11:42:35 +0200
  • 2bf6a4f007 Fixed void pointer arithmetic in hash.c to avoid pedantic error on msvc martinfouilleul 2023-05-12 11:13:55 +0200
  • 33dd2214a8 merge io into image Martin Fouilleul 2023-05-11 18:31:20 +0200
  • bfc81fd062 [io] check that file path doesn't escape app's local data folder when opening files Martin Fouilleul 2023-05-11 18:09:26 +0200
  • e82225116b [io] Store last error in file handle, lockdown on fatal error Martin Fouilleul 2023-05-10 18:41:30 +0200
  • 25f66b3954 [io, wip] read/write/seek/pos/size operations (todo: error on handle) Martin Fouilleul 2023-05-10 16:25:51 +0200
  • 4ae51d7a23 [file io, wip] open/close file API Martin Fouilleul 2023-05-09 18:44:23 +0200
  • 0fab5635e2 update milepost with fix to mg_image_size() Martin Fouilleul 2023-05-10 11:25:23 +0200
  • 9b29e681fe Merge commit 'e426319' into orca (integrate fix to mg_image_size(), which doesn't need a current canvas anymore) Martin Fouilleul 2023-05-10 11:20:30 +0200
  • e426319723 Fix mg_image_size() (doesn't need a current canvas anymore) Martin Fouilleul 2023-05-10 11:18:36 +0200
  • 3f1447f729 Always put arena pointer in mem_arena_marker, to avoid possible DEBUG value discrepancy between lib and client code Martin Fouilleul 2023-05-09 18:29:32 +0200
  • 569b05526b update milepost: fix image data not storing surface handle in mg_image_create() Martin Fouilleul 2023-05-08 13:05:42 +0200
  • 1ab1d70df2 Fix image data not storing surface handle in mg_image_create() Martin Fouilleul 2023-05-08 13:01:45 +0200
  • 891d84da61 upadate milepost to use arch-agnostic hash functions Martin Fouilleul 2023-04-29 19:26:38 +0200
  • 39e96e0739 Added xxhash64 hash function and use that instead of x64-specific aes hash, until we get an arm version Martin Fouilleul 2023-04-29 19:25:40 +0200
  • ea787ed686 update readme and angle install notes Martin Fouilleul 2023-04-26 15:59:03 +0200
  • f69a6b31ae update angle install notes Martin Fouilleul 2023-04-26 15:58:42 +0200
  • 6c8c74e775 Migrating milepost submodule to HMN gitea Martin Fouilleul 2023-04-26 15:19:33 +0200
  • 3874e798c3 Compile canvas command buffer into wasm and bind host surface/render API Martin Fouilleul 2023-04-26 14:57:12 +0200
  • b27dc615d1 Finish separating graphics_common and graphics_surface + add platform_math, so that we can compile graphics_common to wasm in orca Martin Fouilleul 2023-04-26 14:56:02 +0200
  • ca1caf8537 splitting graphics_surface and graphics_common in order to isolate surface dispatch stuff from orca apps Martin Fouilleul 2023-04-25 22:15:56 +0200
  • 346979a21a [canvas] change surface/canvas APIs to treat canvas a 'just another kind of surface', and split canvas implementation (managed by surface) from canvas _command buffer_ and implicit context (represented by mg_canvas) Martin Fouilleul 2023-04-25 19:13:15 +0200
  • 32d7d91893 [wip] changed ui_begin_frame() to take explicit canvas size Martin Fouilleul 2023-04-25 15:10:05 +0200
  • 3769b70753 [wip] changing backend enum to api enum, and adding canvas api in here Martin Fouilleul 2023-04-25 14:54:52 +0200
  • 58effcb413 fixed using wrong length when copying debug entries function name Martin Fouilleul 2023-04-21 10:02:17 +0200
  • 28a4fe0579 First draft of in-app debug console Martin Fouilleul 2023-04-20 15:47:18 +0200
  • 7c273f494b [ui, logging] - Changed workings of ui_panel() and scrolling to make it easier for usage code to control scrolling. - Renamed logging functions Martin Fouilleul 2023-04-20 15:40:00 +0200
  • eb09d73fa8 [milepost] changes to event system that allows using events with payloads (eg file paths) across threads Martin Fouilleul 2023-04-19 16:19:13 +0200
  • bb6b68ad73 [event system] allocate events and additional payload (e.g. file paths) directly in ring buffer, and copy them to user-supplied arena in mp_next_event() Martin Fouilleul 2023-04-19 16:16:36 +0200
  • 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) Martin Fouilleul 2023-04-19 11:28:53 +0200
  • ab150f94f2 separating input state from app, so that it can be used in different threads that main thread. E.g. ui context uses its own input state that can be fed events in a second thread Martin Fouilleul 2023-04-19 11:28:20 +0200
  • 47722e99ca pull utf8 from milepost into orca Martin Fouilleul 2023-04-18 18:43:06 +0200
  • f1d6e0f15c remove unnecessary platform headers from utf8 files Martin Fouilleul 2023-04-18 18:42:48 +0200
  • b3c9e0822b moved asserts to platform layer Martin Fouilleul 2023-04-18 18:36:21 +0200
  • ff4dddc0b7 moved assert to platform layer Martin Fouilleul 2023-04-18 18:36:06 +0200
  • 7884ddd339 puling logging functionality from milepost into orca Martin Fouilleul 2023-04-18 18:06:47 +0200
  • 794f47b141 abstracting logging for orca Martin Fouilleul 2023-04-18 18:05:54 +0200
  • a1c69fc5f9 [wip] logging system Martin Fouilleul 2023-04-18 14:33:47 +0200
  • 86a16d3775 modifications to log system to support orca env where stdio is not defined Martin Fouilleul 2023-04-18 14:33:27 +0200
  • caa454f1ca Adding printing functions and asserts Martin Fouilleul 2023-04-18 10:45:16 +0200
  • 0d6fb197fb adding vargs and asserts for orca Martin Fouilleul 2023-04-18 10:43:52 +0200
  • d43afa2ac0 memory arena and mem copy/compare functions for orca Martin Fouilleul 2023-04-17 18:13:07 +0200
  • e9e9ab68c2 base memory allocator and chunked arenas for orca Martin Fouilleul 2023-04-17 18:12:21 +0200
  • 4f90efbb22 start integrating milepost components into orca Martin Fouilleul 2023-04-17 10:56:38 +0200
  • f36e144bc0 start integrating milepost components to orca Martin Fouilleul 2023-04-17 10:55:19 +0200
  • db7fe504bb HMN viz jam Martin Fouilleul 2023-04-14 11:48:36 +0200
  • 17c0f02962 orca runtime initial commit Martin Fouilleul 2023-04-12 16:21:03 +0200
  • c347e10577 Put all dependency libraries and shaders in bin directory Martin Fouilleul 2023-04-12 16:12:26 +0200
  • f35e91a38c [mtl renderer] fixed clipping Martin Fouilleul 2023-04-11 14:51:58 +0200
  • b7f5b84123 [mtl canvas] remove old metal canvas stuff Martin Fouilleul 2023-04-11 11:19:29 +0200
  • 03b5802529 [canvas] replace simple shape helpers with normal paths operations instead of having dedicated primitives for rounded rects/ellipses and so on Martin Fouilleul 2023-04-11 11:16:23 +0200
  • c6e89c1869 [wip] adding smooth live-resizing example Martin Fouilleul 2023-04-11 10:50:14 +0200
  • 551d5e084e [mtl renderer] re-introduced texturing Martin Fouilleul 2023-04-09 19:24:32 +0200
  • ee3e55dadd [mtl renderer] fix msaa sample positions Martin Fouilleul 2023-04-08 12:11:38 +0200
  • effd8f1dd0 [mtl canvas] use same ccw test for testing against diagonal and testing against hull Martin Fouilleul 2023-04-08 10:04:17 +0200
  • 2b7aadf180 [mtl canvas] multi-sampling Martin Fouilleul 2023-04-07 18:18:50 +0200
  • 65b5a4b52a [mtl renderer] Fixed curve slicing which used matrix operation and re-parameterization, which could create gaps in path. Now use blossoms, which ensure endpoints of subcurves match Martin Fouilleul 2023-04-07 17:17:55 +0200
  • d1fab449bc [mtl canvas] Fixed loop implicit matrix Martin Fouilleul 2023-04-07 10:15:37 +0200
  • c4e866d9d4 [mtl canvas] Fix shader contents scaling Martin Fouilleul 2023-04-05 10:31:50 +0200
  • 4c4f27066b [mtl renderer] re-introduced end caps Martin Fouilleul 2023-04-05 10:25:48 +0200
  • e999af6bd3 [mtl canvas] make diagonal checks inclusive in mtl_side_of_segment() Martin Fouilleul 2023-04-05 10:19:25 +0200
  • 53946a5710 [mtl canvas] fix end joint not generated for paths with only 2 elements Martin Fouilleul 2023-04-05 09:52:12 +0200
  • 2484cdf7b3 [mtl canvas, wip] re-introducing joints Martin Fouilleul 2023-04-04 20:35:48 +0200
  • 8d7fdf3b1a [mtl canvas, wip] Fixing inclusive/exclusive bound checks during curve side tests / shortcut / rasterization Martin Fouilleul 2023-04-04 19:02:53 +0200
  • 9322db8201 [mtl canvas, wip] cubic bézier implicitization Martin Fouilleul 2023-04-01 19:46:35 +0200
  • 767841f9c6 [mtl canvas, wip] Fixed wrong backdrop when segment ended right on tile's bottom boundary Martin Fouilleul 2023-03-30 16:41:41 +0200
  • 93998852bb [mtl canvas, wip] Re-introducing quadratics implicitization Martin Fouilleul 2023-03-30 15:58:46 +0200
  • eee158ff85 [mtl canvas] tmp fix of clear color (revisit one we re-introduce texturing) Martin Fouilleul 2023-03-29 16:30:16 +0200
  • 8af4e4eddc [mtl canvas, wip] Collate queues in a per-tile op list and prune occluded shapes Martin Fouilleul 2023-03-29 16:21:28 +0200
  • a6c53649bd [mtl canvas, wip] implemented backprop Martin Fouilleul 2023-03-29 14:27:05 +0200
  • c4415aaeea [mtl canvas, wip] binning segments to tile queues Martin Fouilleul 2023-03-28 17:58:23 +0200
  • c71bc5be98 [mtl canvas] segment setup pass Martin Fouilleul 2023-03-28 15:10:05 +0200
  • f6a992e5f4 [mtl canvas] very first draft of new canvas backend based on edge-counting instead of triangle overlap Martin Fouilleul 2023-03-28 13:09:48 +0200
  • c20758f6a2 [mtl canvas] cull tiles queues outside viewport Martin Fouilleul 2023-03-22 17:28:11 +0100
  • faf024a63a [mtl canvas] reorganizing the loop in render kernel to allow different commands Martin Fouilleul 2023-03-22 16:40:43 +0100
  • e9ecd9d521 [mtl canvas] Fix artifacts on tiger that was due to epsilon comparison for cubics equation in draw kernel. Removed that (now do <= 0), but then we need to weed out false negatives for solid triangles. So we compute if the triangle is solid in the triangle kernel and store it in the mg_triangle_data struct for now. Martin Fouilleul 2023-03-22 15:02:04 +0100
  • b0be21795e [mtl canvas] prevent tiles entirely covered by textured shapes to be treated as solid (as the texture could be non-uniformly transparent) Martin Fouilleul 2023-03-22 12:02:13 +0100
  • 26f669f3c1 [mtl canvas] adding a color command for fully covered, solid color tiles. This is not much of an improvement for now because the tile array just got bigger, but maybe we can use the same scheme and compact it into an int Martin Fouilleul 2023-03-22 10:46:56 +0100
  • 90b00979ed [mtl canvas] detecting full covered/uncovered tiles Martin Fouilleul 2023-03-22 09:23:22 +0100
  • 0d8bc824a2 [mtl canvas] bucket triangles into per-shape tile queues, then gather into tile arrays. This somewhat improves perf for perf_text test and avoids an awful degradation due to sorting in tiger test (tiger now runs at ~20fps, which is still much slower than it could be, but the triangle coverage method we're using just incurs too much cross product computations...) Martin Fouilleul 2023-03-21 10:22:37 +0100
  • a4ef58f2d8 [mtl canvas] Tiling per rectangles into per-shape tile queues (linked lists of triangle indices) to avoid sorting Martin Fouilleul 2023-03-20 16:46:12 +0100
  • 11113f597c [mtl canvas, exp] try tiling per tile and avoiding sorting pass (worse on simple shapes and text, but degrades slower with complex scenes (eg tiger). Not great though) Martin Fouilleul 2023-03-20 10:08:17 +0100
  • 92f4909d63 [mtl canvas] testing the metal canvas rendering the ghostscript tiger, and acknowledging it's painfully slow Martin Fouilleul 2023-03-18 14:35:51 +0100
  • 1d36088302 [mtl canvas] render to an intermediate texture and acquire the drawable and blit to it only at the end of all compute passes Martin Fouilleul 2023-03-16 10:25:56 +0100
  • f14f397c99 [mtl surface] don't re-acquire drawable if there's already a valid one acquired Martin Fouilleul 2023-03-15 18:51:50 +0100
  • bd8e31c535 [mtl canvas] triple buffer vertex/index/shape buffers Martin Fouilleul 2023-03-15 17:48:39 +0100
  • 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 Martin Fouilleul 2023-03-15 13:02:18 +0100
  • 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 Martin Fouilleul 2023-03-15 11:09:42 +0100
  • 98bac9744f [mtl canvas] rearranged bounding box computations in tiling shader Martin Fouilleul 2023-03-15 10:19:04 +0100
  • f2cb96826c [mtl canvas] fix bias computation for clockwise triangles Martin Fouilleul 2023-03-15 10:04:51 +0100
  • 5c1a220f1f [mtl canvas] don't reorder point to make clockwise triangles. Instead, store triangle orientation in triangle struct and multiply orientation in raster test Martin Fouilleul 2023-03-14 15:08:39 +0100
  • 221fcbeb6b [mtl canvas] store uv transform and color in triangle data (don't pass vertex or shape buffer to draw kernel) Martin Fouilleul 2023-03-14 12:20:39 +0100
  • c9a5b3d52d [mtl canvas] rearranged triangle data for better packing Martin Fouilleul 2023-03-13 20:20:09 +0100
  • 1b3583cc6d [mtl canvas] remove box array, cache box in triangle struct Martin Fouilleul 2023-03-13 20:12:06 +0100
  • 6536f4ac64 [mtl canvas] fused boxing and tiling, cache cubics in triangle data Martin Fouilleul 2023-03-14 09:40:11 +0100
  • ee4a667258 [mtl canvas] trying fused boxing/tiling passes Martin Fouilleul 2023-03-13 19:45:45 +0100
  • fd5a4d4cd8 [wip] trying to simplify metal shader Martin Fouilleul 2023-03-13 18:38:30 +0100
  • cee294d8ad [mtl canvas] fixed setBuffer that was being called on the wrong encoder Martin Fouilleul 2023-03-14 09:20:51 +0100
  • 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) Martin Fouilleul 2023-03-13 16:53:12 +0100
  • 6da2494c81 [canvas example] fixed movement Martin Fouilleul 2023-03-13 15:53:35 +0100