Commit Graph

291 Commits

Author SHA1 Message Date
Martin Fouilleul f35e91a38c [mtl renderer] fixed clipping 2023-04-11 14:51:58 +02:00
Martin Fouilleul b7f5b84123 [mtl canvas] remove old metal canvas stuff 2023-04-11 11:19:29 +02:00
Martin Fouilleul 03b5802529 [canvas] replace simple shape helpers with normal paths operations instead of having dedicated primitives for rounded rects/ellipses and so on 2023-04-11 11:16:23 +02:00
Martin Fouilleul c6e89c1869 [wip] adding smooth live-resizing example 2023-04-11 10:50:14 +02:00
Martin Fouilleul 551d5e084e [mtl renderer] re-introduced texturing 2023-04-09 19:24:32 +02:00
Martin Fouilleul ee3e55dadd [mtl renderer] fix msaa sample positions 2023-04-08 12:11:38 +02:00
Martin Fouilleul effd8f1dd0 [mtl canvas] use same ccw test for testing against diagonal and testing against hull 2023-04-08 10:04:17 +02:00
Martin Fouilleul 2b7aadf180 [mtl canvas] multi-sampling 2023-04-07 18:18:50 +02:00
Martin Fouilleul 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 2023-04-07 17:17:55 +02:00
Martin Fouilleul d1fab449bc [mtl canvas] Fixed loop implicit matrix 2023-04-07 10:15:37 +02:00
Martin Fouilleul c4e866d9d4 [mtl canvas] Fix shader contents scaling 2023-04-05 10:31:50 +02:00
Martin Fouilleul 4c4f27066b [mtl renderer] re-introduced end caps 2023-04-05 10:25:48 +02:00
Martin Fouilleul e999af6bd3 [mtl canvas] make diagonal checks inclusive in mtl_side_of_segment() 2023-04-05 10:19:25 +02:00
Martin Fouilleul 53946a5710 [mtl canvas] fix end joint not generated for paths with only 2 elements 2023-04-05 09:52:12 +02:00
Martin Fouilleul 2484cdf7b3 [mtl canvas, wip] re-introducing joints 2023-04-04 20:35:48 +02:00
Martin Fouilleul 8d7fdf3b1a [mtl canvas, wip] Fixing inclusive/exclusive bound checks during curve side tests / shortcut / rasterization 2023-04-04 19:02:53 +02:00
Martin Fouilleul 9322db8201 [mtl canvas, wip] cubic bézier implicitization 2023-04-01 19:46:35 +02:00
Martin Fouilleul 767841f9c6 [mtl canvas, wip] Fixed wrong backdrop when segment ended right on tile's bottom boundary 2023-03-30 16:41:41 +02:00
Martin Fouilleul 93998852bb [mtl canvas, wip] Re-introducing quadratics implicitization 2023-03-30 15:58:46 +02:00
Martin Fouilleul eee158ff85 [mtl canvas] tmp fix of clear color (revisit one we re-introduce texturing) 2023-03-29 16:30:16 +02:00
Martin Fouilleul 8af4e4eddc [mtl canvas, wip] Collate queues in a per-tile op list and prune occluded shapes 2023-03-29 16:21:28 +02:00
Martin Fouilleul a6c53649bd [mtl canvas, wip] implemented backprop 2023-03-29 14:27:05 +02:00
Martin Fouilleul c4415aaeea [mtl canvas, wip] binning segments to tile queues 2023-03-28 17:58:23 +02:00
Martin Fouilleul c71bc5be98 [mtl canvas] segment setup pass 2023-03-28 15:10:05 +02:00
Martin Fouilleul f6a992e5f4 [mtl canvas] very first draft of new canvas backend based on edge-counting instead of triangle overlap 2023-03-28 13:09:48 +02:00
Martin Fouilleul c20758f6a2 [mtl canvas] cull tiles queues outside viewport 2023-03-22 17:28:11 +01:00
Martin Fouilleul faf024a63a [mtl canvas] reorganizing the loop in render kernel to allow different commands 2023-03-22 16:40:43 +01:00
Martin Fouilleul 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. 2023-03-22 15:02:04 +01:00
Martin Fouilleul b0be21795e [mtl canvas] prevent tiles entirely covered by textured shapes to be treated as solid (as the texture could be non-uniformly transparent) 2023-03-22 12:02:13 +01:00
Martin Fouilleul 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 2023-03-22 10:46:56 +01:00
Martin Fouilleul 90b00979ed [mtl canvas] detecting full covered/uncovered tiles 2023-03-22 09:23:22 +01:00
Martin Fouilleul 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...) 2023-03-21 10:22:37 +01:00
Martin Fouilleul a4ef58f2d8 [mtl canvas] Tiling per rectangles into per-shape tile queues (linked lists of triangle indices) to avoid sorting 2023-03-20 16:46:12 +01:00
Martin Fouilleul 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) 2023-03-20 10:08:17 +01:00
Martin Fouilleul 92f4909d63 [mtl canvas] testing the metal canvas rendering the ghostscript tiger, and acknowledging it's painfully slow 2023-03-18 14:35:51 +01:00
Martin Fouilleul 1d36088302 [mtl canvas] render to an intermediate texture and acquire the drawable and blit to it only at the end of all compute passes 2023-03-16 10:25:56 +01:00
Martin Fouilleul f14f397c99 [mtl surface] don't re-acquire drawable if there's already a valid one acquired 2023-03-15 18:51:50 +01:00
Martin Fouilleul bd8e31c535 [mtl canvas] triple buffer vertex/index/shape buffers 2023-03-15 17:48:39 +01:00
Martin Fouilleul 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 2023-03-15 13:02:18 +01:00
Martin Fouilleul 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 2023-03-15 11:09:42 +01:00
Martin Fouilleul 98bac9744f [mtl canvas] rearranged bounding box computations in tiling shader 2023-03-15 10:19:04 +01:00
Martin Fouilleul f2cb96826c [mtl canvas] fix bias computation for clockwise triangles 2023-03-15 10:04:51 +01:00
Martin Fouilleul 5c1a220f1f [mtl canvas] don't reorder point to make clockwise triangles. Instead, store triangle orientation in triangle struct and multiply orientation in raster test 2023-03-14 15:08:39 +01:00
Martin Fouilleul 221fcbeb6b [mtl canvas] store uv transform and color in triangle data (don't pass vertex or shape buffer to draw kernel) 2023-03-14 12:20:39 +01:00
Martin Fouilleul c9a5b3d52d [mtl canvas] rearranged triangle data for better packing 2023-03-14 09:42:17 +01:00
Martin Fouilleul 1b3583cc6d [mtl canvas] remove box array, cache box in triangle struct 2023-03-14 09:42:12 +01:00
Martin Fouilleul 6536f4ac64 [mtl canvas] fused boxing and tiling, cache cubics in triangle data 2023-03-14 09:40:11 +01:00
Martin Fouilleul ee4a667258 [mtl canvas] trying fused boxing/tiling passes 2023-03-14 09:25:20 +01:00
Martin Fouilleul fd5a4d4cd8 [wip] trying to simplify metal shader 2023-03-14 09:25:09 +01:00
Martin Fouilleul cee294d8ad [mtl canvas] fixed setBuffer that was being called on the wrong encoder 2023-03-14 09:20:51 +01:00
Martin Fouilleul 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) 2023-03-13 16:53:12 +01:00
Martin Fouilleul 13f025ab21 [mtl canvas] convert triangle rasterization to fixed point 2023-03-13 15:18:18 +01:00
Martin Fouilleul 7c58145524 [mtl surface] Allow setting swap interval to 0. Note however that vsync needs to be turned off at the OS level for that to work smoothly. Otherwise, we get jittery frame rate with stalls when we run off of drawables (I suppose? should investigate some more).
This can be done with Quart Debugger in Additional Tools for XCode.
2023-03-13 12:21:33 +01:00
Martin Fouilleul 716bdc53d4 [ui] draw drop-down button with correct roundness 2023-03-13 10:53:21 +01:00
Martin Fouilleul 5455c2a52b [ui] Allow styling overlay boxes (e.g. menu and drop-down list panels) locally.
- Added an UI_FLAG_OVERLAY flag. When we make a box with that flag set, it is added the an overlayList in the ui context.
- After styling and static size pass, we reparent boxes in the overlayList to an overlay node just below the root node.
- Layout and drawing works uniformly on the whole tree. Overlay boxes get drawn last and steal mouse hover from boxes underneath them.
2023-03-13 10:26:39 +01:00
Martin Fouilleul 9e41d2b6fc [ui] first version of select popup menu 2023-03-12 19:06:09 +01:00
Martin Fouilleul 09951afa53 [ui] added ui_checkbox() helper 2023-03-11 19:06:05 +01:00
Martin Fouilleul b907578eb4 Fix clipping one pixel short 2023-03-11 16:55:30 +01:00
Martin Fouilleul 009fe8e3e8 [ui, styling]Fix order of adding after rules to running list in rule-matching pass 2023-03-11 16:43:58 +01:00
Martin Fouilleul bf92a6f307 Merge branch 'master' of ssh://git.forkingpaths.dev/martinfouilleul/milepost 2023-03-11 16:27:52 +01:00
Martin Fouilleul da7e0f402b [ui, layout] Add UI_FLAG_ALLOW_OVERFLOW_X/Y 2023-03-11 16:27:21 +01:00
martinfouilleul 137a75540b [win32] implemented string clipboard functions 2023-03-09 19:44:55 +01:00
martinfouilleul 359e08b0a8 [ui] set text box cursor to the same color as text 2023-03-09 18:09:04 +01:00
martinfouilleul cae8666561 [ui, win32] Fixed char input and modifier keys 2023-03-09 18:03:27 +01:00
martinfouilleul 9accf4c666 [ui, win32]
- change coord system of gl canvas to match ui
- change mouse coordinate system to match ui
- fix mouse delta
2023-03-09 17:38:41 +01:00
Martin Fouilleul c7d5cf113e [ui] reintroducing tooltip 2023-03-09 16:08:42 +01:00
Martin Fouilleul c362751c23 [ui] menus widgets first draft 2023-03-09 16:02:46 +01:00
Martin Fouilleul feca7d1026 [ui] moved ui_panel() into ui.c 2023-03-09 14:27:46 +01:00
Martin Fouilleul d2f4f5083b [ui, layout] solving layout constraints 2023-03-09 13:13:13 +01:00
Martin Fouilleul 56874c99d6 [ui, layout] layout constraint solving, first draft 2023-03-09 12:36:38 +01:00
Martin Fouilleul a569454df5 [ui, wip] scrolling / scrolling panels 2023-03-08 19:53:28 +01:00
Martin Fouilleul 873d4ab6db [ui, canvas]
- Allow querying the size of the canvas's underlying surface
- Set size of ui root to canvas' size
2023-03-08 15:03:35 +01:00
Martin Fouilleul 1212d714d5 [platform/canvas]
- Changed canvas coordinate system to match UI coord system (origin at top left, y axis down)
- Changed mouse coordinate system to match UI and canvas
- No need to pass width/height to ui_begin_frame() anymore
2023-03-08 13:19:18 +01:00
Martin Fouilleul 7b2ef080e8 [util, formatting] shorten list loop names to for_list_xxx 2023-03-08 12:03:33 +01:00
Martin Fouilleul 3682605f97 [util, formatting] changed list api to snakecase for consistency with the rest of the codebase 2023-03-08 12:00:10 +01:00
Martin Fouilleul bfc19665ce [util]
- shorten str8_lit macro to STR8
- use strlen() in STR8 and remove str8_from_cstring(). Usage with string literal seem to always be optimized by compile-time constant, so there's little need for a confusing macro that only works with literals and breaks with pointers.
- replaced str8_unbox() with str8_lp/str8_ip
2023-03-08 11:40:40 +01:00
Martin Fouilleul f07f56948d [ui] shorten ui styling api names 2023-03-08 11:13:32 +01:00
Martin Fouilleul 8b06cb31ba [ui, styling]
- Put all styling calls _before_ the styled box.
- Renamed full pattern matching API to ui_style_match_next_before/after
- Helper to style next box only (ui_style_next())
2023-03-08 11:09:28 +01:00
Martin Fouilleul c551135933 [ui] remove the need to pass a default style to ui_frame() 2023-03-07 19:44:22 +01:00
Martin Fouilleul 2466241b1e [ui, styling] finished first pass on core layout/styling system 2023-03-07 19:27:01 +01:00
Martin Fouilleul 8032c7340b [ui, styling] revisiting layout/sizing 2023-03-07 19:06:04 +01:00
Martin Fouilleul d3a8a651e5 [ui, styling] make layout and floating properties part of styling system 2023-03-07 10:33:22 +01:00
Martin Fouilleul 7b10a99a8c [ui, styling] First draft of rule-based styling to replace old stack-based system 2023-03-06 19:33:01 +01:00
Martin Fouilleul b52a35c753 [ui, textbox] Fixed selection background rectangle 2023-03-05 17:03:00 +01:00
Martin Fouilleul 1af132352a [ui, textbox] Scroll text inside text box to always show edit cursor. 2023-03-05 16:35:55 +01:00
Martin Fouilleul 592f4cdecd end of line renormalization 2023-03-05 16:05:43 +01:00
Martin Fouilleul 4359bdaa3c [ui, textbox] position cursor at mouse position / extend selection on shift + mouse press or drag 2023-03-05 15:59:57 +01:00
Martin Fouilleul e95efe85e8 [wip, input system] Fixed bug on macOS, where keyUp events are not received when the command modifier key is down and makes a meaningful combination with the pressed key (note this is normal macOS event handling behaviour, but we still want all events to arrive to track key states).
Fixed by overloading the sendEvent method of our derived NSApplication class. There we check if modifier is down and send the event.
Note glfw solves that by adding a block handler for the keyUp event with addLocalMonitorForEventsMatchingMask.
2023-03-04 19:24:30 +01:00
Martin Fouilleul c04e8639ab [wip, ui] re-integrating UI subsystem and completing text box 2023-03-03 20:09:44 +01:00
Martin Fouilleul d21e737733 [wip] re-introducing UI subsystem 2023-03-03 17:13:03 +01:00
martinfouilleul 653ddec978 [win32 surface sharing] win32 surface sharing using window reparenting 2023-03-03 12:41:09 +01:00
Martin Fouilleul 731e5b1ae8 [surface] pull mp_layer into the generic mg_surface_data struct, out of each backend-specific implementation 2023-03-03 11:50:12 +01:00
martinfouilleul ac00cc9def [wip, win32 surface sharing] simplifyin the surface sharing API 2023-03-02 19:21:39 +01:00
martinfouilleul ee87976429 [win32 surface sharing] hacky proof of concept 2023-03-02 18:24:15 +01:00
martinfouilleul 3ada8ece9a [wip, win32 surface sharing] in surface sharing example, terminate child process when parent exits 2023-03-02 12:23:10 +01:00
martinfouilleul e58ae3ef52 [surface sharing] first draft for win32 using window reparenting 2023-03-02 09:54:12 +01:00
martinfouilleul 1dfc5dd684 [graphics, win32] applying changes to surface backend API 2023-03-01 17:41:39 +01:00
Martin Fouilleul 43d413dbbc [surface] graphics surface sharing API + osx implementation 2023-03-01 16:15:36 +01:00
Martin Fouilleul 28f5af32fa [graphics] Allocate canvases and fonts from graphics subsystem's arena 2023-03-01 11:37:33 +01:00
Martin Fouilleul 6bf989564d [graphics] use a single handle arena for all graphics subsystem handles 2023-02-28 20:33:55 +01:00
Martin Fouilleul 5a19c03ad6 [canvas] removing unused old atlasing api 2023-02-28 18:47:45 +01:00
Martin Fouilleul 3615775168 [canvas] decompose image atlas API into simple rect atlas API + image atlas helpers. This avoids creating a bunch of new types/handles, and exposes the underlying image/sourceRegion so that user code can freely use these for more complex scenarios (eg drawing only a sub-region of an atlased image, or using an atlas image for arbitrary path filling) 2023-02-28 16:54:39 +01:00
Martin Fouilleul d4bceba7e9 [canvas] basic image atlas API 2023-02-28 13:16:36 +01:00
martinfouilleul 9cb4aedbc5 [canvas, gl] use pre-multiplied alpha in draw shader and when compositing batches 2023-02-27 19:50:18 +01:00
martinfouilleul 8f834fa1a5 [wip, canvas, gl] implementing basic image API 2023-02-27 19:25:41 +01:00
Martin Fouilleul 30aa6a4a48 [canvas] Put primitive's transform in the attributes struct. When rendering, set current transform at the beginning of mg_next_shape(). (This avoid using an additional prevTransform matrix to correctly setup uvTransform when mg_finalize_shape() at the beginning of mg_next_shape()) 2023-02-27 15:01:44 +01:00
Martin Fouilleul d195fb1f61 [canvas, mtl backend] Compute each layer with pre-multiplied alpha, starting from transparent color. Composite them to surface with premultiplied alpha too. 2023-02-27 14:24:59 +01:00
Martin Fouilleul 9ed630fc55 [canvas]
- Clear final surface to clear color, and enable blending layers onto it
- Fixed Batching bug where we were writing to vertex/shape buffers while the previous batch is using them
- Fixed bug where uvTransform uses transform of next shape instead of that of shape being finalized
2023-02-27 11:56:04 +01:00
Martin Fouilleul e66932e624 [canvas] Set command attributes to canvas->attributes by default in mg_push_command() 2023-02-25 15:35:24 +01:00
Martin Fouilleul 193afb61fd [canvas] move canvas structs decl from graphics_internal.h to graphics.c, keep only surface/canvas backend interface stuff in graphics_internal.h 2023-02-25 15:23:15 +01:00
Martin Fouilleul 074b17b743 [canvas] Set transform matrix as part of primitive and don't replay push/pop during render 2023-02-25 14:20:07 +01:00
Martin Fouilleul b24de5d969 [canvas] Allow setting image source region 2023-02-25 12:59:49 +01:00
Martin Fouilleul 50569a1427 Allow setting texture on arbitrary path fills 2023-02-24 23:06:39 +01:00
Martin Fouilleul 4333ed02b0 [canvas] remove image draw commands, replace with rect/rounded rects + image source 2023-02-24 22:59:33 +01:00
Martin Fouilleul 1b62ec568c [canvas, mtl backend] Handle image rotation 2023-02-24 20:40:16 +01:00
Martin Fouilleul bb106b717f Build user-space bounding box of shape in mg_push_vertex() _before_ transforming vertices 2023-02-24 19:20:05 +01:00
Martin Fouilleul 11c25bf001 Make transform implicit in mg_push_vertex() 2023-02-24 19:11:03 +01:00
Martin Fouilleul 5be019d166 [canvas, metal] compute uv coords in shader using uvTransformed computed in canvas backend, using shape bounding box, image dimension, source and dest regions 2023-02-24 18:50:46 +01:00
Martin Fouilleul fd4c4e7be3 [canvas] simple image API 2023-02-24 12:01:00 +01:00
Martin Fouilleul d1b71110bb - Fixed metal canvas backend's drawBatch argument order
- Removed texturing in metal shader while we work on image API
- Started working on simple image API
2023-02-23 18:30:47 +01:00
Martin Fouilleul 2b60db292a [wip] image api 2023-02-23 17:07:41 +01:00
martinfouilleul 1250dfd7c1 hardcode GL/GLES versions per-platform for now 2023-02-22 18:30:10 +01:00
martinfouilleul 665c63c3d0 [win32 build/link]
- Build milepost as a dynamic library
- Add import/export directives to public API symbols
- Change example build scripts accordingly
2023-02-21 18:43:30 +01:00
Martin Fouilleul 94373d12ae [surface] extracted common layer functionality from osx surfaces. Use layer in platform-agnostic egl surface. 2023-02-21 13:40:30 +01:00
martinfouilleul 9ea9ea7636 [surface] abstracted child window layer from win32 surfaces 2023-02-21 12:35:22 +01:00
martinfouilleul 5ac512c15e [wgl] Keep dummy window/context around for gl context creation, and don't reload wgl functions every time 2023-02-20 20:20:52 +01:00
martinfouilleul 64d7b31e5c destroy gles surfaces resources 2023-02-20 19:38:24 +01:00
martinfouilleul 2dccfa5547 [win32 surfaces] Backing win32 surfaces with child window and implementing frame/hidding control 2023-02-20 18:34:29 +01:00
Martin Fouilleul 4306d0a01c back osx surfaces by CALayer 2023-02-20 16:49:44 +01:00
Martin Fouilleul 2232b647ed reintroduced GLES backend to osx 2023-02-20 11:05:01 +01:00
martinfouilleul 333d3e9f9c [gles, wip] reintroducing egl surface (for win32 at first) 2023-02-17 18:56:16 +01:00
martinfouilleul 20e425494f Use a custom GL loader to allow different versions of GL/GLES APIs to co-exist. The loader fills an api struct with GL functions pointers.
We have a per-thread pointer to select which api struct is used, and GL functions are pound-defined to call the versions in that struct.
GL/GLES surfaces can use one of the loader function to load their api, and the prepare proc of the surface sets its api as the current one
before gl calls are issued.
2023-02-16 19:35:01 +01:00
martinfouilleul 80ea8db687 [surface/canvas cleanup]
- Make build-time and runtime backend selection a bit easier
- Reorganized backend-specific files with slightly more coherent naming scheme
2023-02-10 16:56:10 +01:00
martinfouilleul f54f639db5 properly destroying windows and fonts 2023-02-10 12:05:52 +01:00
martinfouilleul 08d3521b61 [canvas/surface cleanup]
- properly destroy gl canvas backend
- properly destroy gl surface
2023-02-09 18:40:42 +01:00
martinfouilleul af7cbae1fa [canvas cleanup] cleanup canvas resources on creation failure 2023-02-09 18:18:12 +01:00
martinfouilleul 35e396e4c4 [canvas cleanup]
- Remove attributes/color arguments in functions where we don't need them anymore (since they're defined when calling mg_next_shape())
- Renamed "_with_zindex" functions with "_path" -> these function only fill a path (eg rect), but don't increment the current shape
2023-02-09 17:02:58 +01:00
martinfouilleul 09a18419e4 [canvas] make shapeIndex implicit in calls to mg_push_vertex 2023-02-09 16:42:02 +01:00
martinfouilleul 4e816a838b [Clean canvas/shaders]
- Simplified shader names, prefix embedded strings by "glsl_"
- Extracted shader compilation in common function
- Add shader version string and common structs in canvas code rather than in every shader file
- Renamed zIndex with shapeIndex everywhere
2023-02-09 16:14:15 +01:00
martinfouilleul 4a8c77f023 - Move and Zoom perf_text example with the mouse
- Reverted to using 4 bits of subpixel precision and computing cross products with 32 bits integers, for perf reasons
- Fixed some confusion in tile array size vs number of elements (could still clean-up naming a bit though)
- Fixed bug where triangles on the left or below canvas boundaries where bucketted to the first colum/row of tiles
- Fixed bug in mouse button message handling (was always sending press on left button)
2023-02-09 13:09:41 +01:00
martinfouilleul 833767d6e2 move text with the mouse in perf_text example 2023-02-09 09:50:53 +01:00
martinfouilleul 21c604104f fix mp_app_get_resource_path() 2023-02-08 20:40:48 +01:00
martinfouilleul c0601961f1 Reposition window when changing dpi 2023-02-08 20:40:48 +01:00
martinfouilleul 3f58b2ac3d glsl canvas shader: do cross products in 64 bits fixed point to avoid overflow 2023-02-08 20:36:39 +01:00
martinfouilleul 7cf4c3d925 opengl surface/renderer: set surface scaling according to dpi of first monitor. Use that dpi to scale backing texture of canvas renderer. Note: changing monitor isn't handled yet! 2023-02-08 18:22:54 +01:00
martinfouilleul 7fbc4ba270 canvas renderer: Use clip rects to cull tiles/pixels in tiling and drawing passes 2023-02-08 12:59:31 +01:00
martinfouilleul e6e674ee04 Allow setting surface swap interval in opengl surface 2023-02-08 11:49:00 +01:00
martinfouilleul c982b524c0 Merge branch 'gl_canvas' of ssh://git.forkingpaths.dev/martinfouilleul/milepost into gl_canvas 2023-02-08 10:47:20 +01:00
martinfouilleul 38c27f21d6 canvas: allow flushing externally built commands with mg_flush_commands() 2023-02-08 10:46:12 +01:00
Martin Fouilleul afaa95fe07 applied canvas changes to metal backend 2023-02-08 10:42:21 +01:00