Commit graph

49 commits

Author SHA1 Message Date
Louis Pearson
9676665ccf
mach: fix setMouseCursor compile error (#538) 2022-09-14 18:15:41 -07:00
locriacyber
b8c48d6321
all: remove ineffective _ = variable assignments (#530)
Lastest Zig complains about this, so they must removed to build.
2022-09-14 09:42:29 -07:00
Stephen Gutekanst
8113ca370d all: remove support for stage1
With almost all tests/examples working on all platforms now with the new compiler,
https://github.com/hexops/mach/issues/180, it's time to remove stage1 support.

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-09-10 00:09:30 -07:00
Stephen Gutekanst
9a759c55c5 mach: do not attempt to import gamemode on non-Linux platforms
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-09-08 07:26:46 -07:00
Ali Chraghi
194971586d mach: use std.log.(scope) instead of std.debug.print 2022-09-07 21:25:35 -07:00
Ali Chraghi
d8af6740c5 mach: exit if no backend found for adapter 2022-09-07 21:25:35 -07:00
Ali Chraghi
55e6959f28 mach: supress gamemode dlopen failed error 2022-09-06 20:48:30 -07:00
Stephen Gutekanst
ec0be9294d mach: fix panic on application exit (invalid free)
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-29 01:20:18 -07:00
Stephen Gutekanst
192de6946e mach: improve compatibility with self-hosted compiler
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-20 12:02:01 -07:00
Stephen Gutekanst
72b081c97a mach: improve compatibility with self-hosted compiler
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-20 11:41:01 -07:00
Stephen Gutekanst
eb0eceb707 mach: correct vsync mode setting
This correctly sets presentation modes for vsync, both at startup and at runtime via
a `setOptions` request.

Note: There may still be platforms where setting vsync is not enough, and a frame rate
limiter is needed to achieve proper synchronization. This is tracked in hexops/mach#444
and not fixed by this change.

Fixes hexops/mach#307

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-18 10:33:34 -07:00
Stephen Gutekanst
68d5f6fcb1 {mach,gpu}: add autorelease pool
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-16 17:05:15 -07:00
Stephen Gutekanst
78675470ae {mach,gpu}: rename GPU_BACKEND -> MACH_GPU_BACKEND
Per https://github.com/hexops/mach/issues/376#issuecomment-1170374460

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 14:54:09 -07:00
Ali Chraghi
9a79da0f69 mach: use optional specifier 2022-08-12 10:39:49 -07:00
Stephen Gutekanst
fa1ddc4f0d mach: correctly fire resize event on startup once again
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
Stephen Gutekanst
2b354f9226 mach: add missing errdefer if GLFW window creation fails
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
Stephen Gutekanst
85ddeeed5c mach: update to latest mach/gpu API
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
LeRoyce Pearson
f4611e1414
mach: add headless option (#450)
Co-authored-by: Stephen Gutekanst <stephen.gutekanst@gmail.com>
2022-08-06 19:38:04 -07:00
PiergiorgioZagaria
6eaacde444 gamemode: Add linux_gamemode_is_active field to Platform 2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
d84a32363c gamemode: add check for GAMEMODE env var equal false 2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
76bf493a86 gamemode: Small fix for initLinuxGamemode() 2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
80270a5cfc gamemode: Move gamemode init and deinit into their own functions 2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
509ebd13ab mach: Initial commit for gamemode 2022-07-28 04:12:25 -07:00
Zachary Huang
8f6273c0d0 libmach: fix small issues and naming conventions 2022-07-20 18:59:29 -07:00
Zachary Huang
5d86314fbb libmach: update API again, factors out init/update/deinit from native.zig main function 2022-07-20 18:59:29 -07:00
Zachary Huang
77aecbe806 libmach: update API, exposes init, update, and deinit functions 2022-07-19 09:32:52 -07:00
iddev5
dd0a6064fb mach: Cast window positions (i64) to i32 on window resize 2022-07-09 15:07:55 -07:00
Stephen Gutekanst
72ea652dca mach: require a 'pub const App' to be exposed
This requires apps expose a `pub const App` from their `main.zig`, effectively adopting
the high-level/low-level application API outlined in hexops/mach#349

If `pub const App` does not exist, a clear compiler error is produced:

```
./src/platform/common.zig:5:9: error: expected e.g. `pub const App = mach.App(modules, init)' (App definition missing in your main Zig file)
        @compileError("expected e.g. `pub const App = mach.App(modules, init)' (App definition missing in your main Zig file)");
        ^
./src/platform/native.zig:13:28: note: called from here
    common.checkApplication(app_pkg);
                           ^
./src/platform/native.zig:12:10: note: called from here
comptime {
         ^
./src/platform/native.zig:15:20: error: container '.app' has no member called 'App'
const App = app_pkg.App;
                   ^
```

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-04 21:32:38 -07:00
Stephen Gutekanst
e79c9e075a mach: rename mach.Engine -> mach.Core
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-04 20:14:27 -07:00
Ayush
858c14bbae
{mach,examples}: Fix memory leaks (#384) 2022-07-03 08:47:47 -07:00
dweiller
0893c14893 mach: native: deinit gpa for leak detection in debug builds 2022-07-01 16:48:35 -07:00
Jamie Brandon
5bb740f89e
mach: flesh out mach.Event (#377)
* Flesh out mach.Event
2022-07-01 16:47:06 -07:00
iddev5
f80161bc72 mach: Use math.inf instead of math.floatMax for indefinite wait of events 2022-06-25 08:26:13 -07:00
dweiller
1b32552e73 mach: re-export log_level and scope_levels from App 2022-06-24 12:58:07 -07:00
David Vanderson
43bff35d2c
mach: mouse cursor support (#352)
adds mouse cursor support for standard cursors

Co-authored-by: Stephen Gutekanst <stephen.gutekanst@gmail.com>
2022-06-15 21:53:55 -07:00
iddev5
3dc131d4fa mach: Implement fullscreen window support for native platforms (glfw)
This feature remembers the last position of window before turning to
fullscreen.
2022-06-11 16:00:02 -07:00
Stephen Gutekanst
c5432a9353 mach: zig fmt
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-06-10 16:56:40 -07:00
David Vanderson
0f7c34a5ad review updates 2022-06-10 12:57:31 -07:00
David Vanderson
9354c178eb native: switch to setWaitEvent() 2022-06-10 12:57:31 -07:00
iddev5
40c0659cc9 mach: App.update will now return !void instead of !bool
In order to close the application, there is already
Engine.setShouldClose() which would roughly do the same thing.
2022-06-08 07:31:53 -07:00
iddev5
efe90fc64f mach: Rename scroll -> mouse_scroll and use f32 for offsets 2022-06-05 13:34:24 -07:00
David Vanderson
a2a6c2a288
mach: add mouse motion and mouse button events (#325)
* add mouse motion and mouse button events
* add scroll events
* switch from button/action to mouse_press and mouse_release events
2022-06-04 06:29:23 -07:00
iddev5
176554fe4d mach: Make size limits part of runtime options (mach.Options)
Removed method Engine.setSizeLimits and added two new fields to
mach.Options called ``size_min`` and ``size_max`` which does the same
thing.
2022-06-01 23:45:56 -07:00
iddev5
ed0e6f5c61 mach: Added runtime application options
Reused mach.Options for run time options. It is set with
Engine.setOptions function. ``pub const options`` on top level App has
no effect and will be ignored completely.

Added a blank struct StartupOptions which would be used for startup time
options in future. Currently they aren't used for anything.
2022-06-01 23:45:56 -07:00
iddev5
50fe649ab1 mach: merge and remove the extra layer of indirection caused by Core and
GpuDriver

Core and GpuDriver both are merged into one type called Platform. Also
previously the fields and methods which were called as
``engine.core.field`` will now be ``engine.field`` i.e an extra layer is
removed.
2022-06-01 23:45:56 -07:00
David Vanderson
3961073084
{mach,examples}: followups to getWindowSize / getFramebufferSize (#322)
* followup to window size saving, getWindowSize and getFramebufferSize no longer return errors
* updated the examples
2022-05-31 11:39:53 -07:00
David Vanderson
c0e0b7c686 mach: save window and framebuffer size from glfw callbacks
Previously if user code called core.getWindowSize() (or
getFramebufferSize) during their update they could get sizes that did
not match engine.gpu_driver.target_desc because the window had changed
size.

Now core.getWindowSize() returns the last size we got from a glfw
callback instead of directly querying the window.  So all sizes should
agree during a single frame.

This relies on glfw callbacks only happening when we call
glfw.pollEvents().  This isn't strictly true - a callback could happen
during any glfw call.  Might have to revisit this later.
2022-05-30 12:17:04 -07:00
iddev5
ff126c0054 mach/platform: check for App functions in all platforms 2022-05-30 10:22:42 -07:00
iddev5
21c49ff9be mach: Move all platform specific files to platform/ directory 2022-05-30 10:22:42 -07:00
Renamed from src/native.zig (Browse further)