Commit Graph

4750 Commits

Author SHA1 Message Date
Hajime Hoshi
7e17b25c56 internal/atlas: reintroduce a byte pool
The old byte pool depnded on lifetimes of command queues, and this
was tricky.

The new byte pool uses runtime.SetFinalizer so this should be much
easier to use.

Updates #1681
2023-10-09 03:28:29 +09:00
Hajime Hoshi
2405b7e825 internal/restorable: remove unnecessary copying
After 6e5361c328, WritePixels can
expect that the given pixel byte slice is always new, and now can
be assumed immutable. Do not copy the slice for restoring.

Actually, these copying were introduced at 38ce46328a
in order to reuse the same slice regions.
2023-10-09 01:17:43 +09:00
Hajime Hoshi
6e5361c328 internal/restorable: use clearImage to avoid allocations
Bytes from a pool in a command queue is now pretty hard to use correctly
as the lifetime of a queue is not clear.

Remove the byte pools once. Let's reconsider pool usages later.

This change also removes imagesWithBuffers as this is no longer needed.
imagesWithBuffers was necessary to ensure all the bytes from the pool
of the command queue was used before the queue flushes the commands,
as the command queue cleared the pool after flushing. The lifetimes
were pretty ticky.
2023-10-09 00:42:58 +09:00
Hajime Hoshi
cc8cf688f4 internal/restorable: use clearImage to avoid allocations 2023-10-08 23:59:31 +09:00
Hajime Hoshi
e768e8ad40 internal/graphicscommand: refactoring: add commandqueue.go 2023-10-08 19:54:28 +09:00
Hajime Hoshi
9ed3c89594 internal/graphicscommand: remove an image from imageWithBuffers whenever possible 2023-10-08 19:43:58 +09:00
Hajime Hoshi
810b62f83e internal/graphicscommand: introduce commandQueuePool and commandQueueManager
This removes the restriction of the number of command queues.

Updates #1704
2023-10-08 19:23:57 +09:00
Hajime Hoshi
d2dd62b6db internal/graphicscommand: remove unnecessary references to drawTrianglesCommand 2023-10-08 17:18:16 +09:00
Hajime Hoshi
fd1083808c internal/graphicscommand: switch the queue before flushing
This is a preparation to do something (e.g. handling inputs) during
being blocked by Flush.

Updates #1704
2023-10-08 16:10:07 +09:00
Hajime Hoshi
53525342b1 internal/graphicscommand: bug fix: Flush didn't return error when sync=false 2023-10-08 04:30:14 +09:00
Hajime Hoshi
cede5027d3 internal/glfw: merge internal/cglfw into internal/glfw
Closes #2703
2023-10-07 23:59:55 +09:00
Hajime Hoshi
ad0b61c022 internal/cglfw: fix errors to be close to internal/glfw
Updates #2703
2023-10-07 22:48:44 +09:00
Hajime Hoshi
6dc375f7a6 internal/cglfw: let Terminate return an error
This change also removes flushErrors, which is only for GLFW
debuggings.
2023-10-07 22:35:40 +09:00
Hajime Hoshi
7bcefa1035 internal/cglfw: remove acceptError 2023-10-07 22:14:34 +09:00
Hajime Hoshi
98dc59c89f internal/cglfw: let functions return errors
Updates #2703
2023-10-07 20:28:03 +09:00
Hajime Hoshi
ee1c179c83 internal/cglfw: let functions return errors in native_linbsd.go
Updates #2703
2023-10-07 20:28:03 +09:00
Hajime Hoshi
6a5d46dc43 internal/cglfw: use stderr for logs 2023-10-07 20:28:03 +09:00
Hajime Hoshi
82bceba847 internal/cglfw: let functions return errors in native_darwin.go and glfw_unix.go
Updates #2703
2023-10-07 18:37:06 +09:00
Hajime Hoshi
cb023af4b6 internal/cglfw: use stderr instead of log 2023-10-07 18:36:20 +09:00
Hajime Hoshi
aef7b0dd38 internal/glfw: rename files
Updates #2703
2023-10-07 17:23:33 +09:00
Hajime Hoshi
a971e32ec1 internal/cglfw: rename files
Updates #2703
2023-10-07 17:13:28 +09:00
Hajime Hoshi
82f2319020 internal/hook: rename hooks -> hook 2023-10-06 13:58:00 +09:00
Hajime Hoshi
e7ad5c52fe internal/glfw: merge internal/goglfw into internal/glfw
This also changes APIs in internal/glfw to return errors.

Updates #2703
2023-10-05 03:09:51 +09:00
Hajime Hoshi
ef1e495aba internal/winver: fix a panic message 2023-10-05 01:25:09 +09:00
Hajime Hoshi
aa55953c11 internal/ui: replace (*userInterface).err with (*globalState).err 2023-10-05 00:45:04 +09:00
Hajime Hoshi
0af42e6620 internal/vettools: bug fix: vettool itself failed with vettool check 2023-10-04 12:56:14 +09:00
Hajime Hoshi
73524d8df5 .github/workflows: move vettools to internal to avoid a nested module 2023-10-04 12:16:32 +09:00
Hajime Hoshi
0e722669ef internal/glfw: add const definitions
This is one of the steps to merge internal/glfw and internal/goglfw.

Updates #2703
2023-10-04 03:04:47 +09:00
Hajime Hoshi
84030a3f77 internal/ui: refactoring: remove unused functions 2023-10-04 02:54:55 +09:00
Hajime Hoshi
491b578866 ebiten: add KeyF13 to KeyF24
Closes #2801
2023-10-04 00:45:49 +09:00
Hajime Hoshi
33c51eeee4 internal/goglfw: remove files for macOS
Updates #2776
2023-10-03 22:44:38 +09:00
Hajime Hoshi
b2a6e79a5a internal/graphicsdriver/opengl/gl: rename procaddr_others.go to procaddr_linbsd.go 2023-10-02 01:02:51 +09:00
Hajime Hoshi
386bda3c84 internal/graphicsdriver/opengl/gl: add do-not-edit comment 2023-10-02 00:21:53 +09:00
Hajime Hoshi
50508e1a8d internal/thread: add comments 2023-10-02 00:06:41 +09:00
Hajime Hoshi
95b4eeafce all: remove unnecessary build tag restrictions 2023-10-01 23:27:57 +09:00
Hajime Hoshi
8c7eb70635 internal/ui: bug fix: wrong monitor was detected on fullscreen
Updates #2225
Updates #2794
2023-09-30 13:41:12 +09:00
Hajime Hoshi
22118ba962 internal/ui: add a comment
Updates #2796
2023-09-30 02:55:04 +09:00
Hajime Hoshi
dce18d7c23 internal/ui: bug fix: SetWindowIcon(nil) didn't reset the window icon
Closes #2796
2023-09-30 02:46:40 +09:00
Hajime Hoshi
13dfb28a98 internal/ui: copy a slice at SetIconImages
This changes makes ebiten.SetIconImages a little safer.
2023-09-30 01:46:01 +09:00
Hajime Hoshi
7204ca86e3 internal/ui: refactoring: remove an unused member 2023-09-30 01:39:34 +09:00
Hajime Hoshi
aab22f4c1e internal/ui: bug fix: use correct regions at (*monitors).monitorFromPosition
Updates #2781
2023-09-30 00:30:06 +09:00
Hajime Hoshi
2fbef2106d internal/ui: refactoring
Updates #2781
2023-09-30 00:11:15 +09:00
Hajime Hoshi
03d6811a65 internal/ui: bug fix: initialMonitorByOS could return nil on macOS
initialMonitorByOS could return nil when a cursor was at an extreme
position like the bottom of the display. Apparently, a cursor position
could take an inclusive range of the monitor size.

This change fixes this issue by fixing the comparison.

Even if initialMonitorByOS returns nil, a fallback primary monitor
should be used, so this is not a critical issue.

Updates #2794
2023-09-29 16:54:47 +09:00
Hajime Hoshi
14a2c703df internal/ui: fix wrong panic messages 2023-09-29 15:36:43 +09:00
Hajime Hoshi
91abfe2c10 internal/ui: bug fix: compilie error on Windows
Updates #2794
2023-09-29 12:54:41 +09:00
Hajime Hoshi
0bcee31a6f internal/ui: bug fix: wrong monitor initialization on macOS
This change fixes these issues:

* `currentMouseLocation()` returned a position in the macOS native
coordinate. This means the Y axis is upward, while the Y axis is
downward in the GLFW coordinate. This change adjusts the Y position.
* `(*monitors).monitorFromGLFWMonitor` always returned nil at least
on macOS. This change replaces this with a new method
`(*monitors).primaryMonitor`.

Updates #807
Closes #2794
2023-09-29 12:36:28 +09:00
Hajime Hoshi
4ca3fa5e57
internal/graphicsdriver: replace Region with image.Rectangle (#2791)
Closes #2790
2023-09-28 14:29:55 +09:00
Hajime Hoshi
94bf6a4cc1 internal/shaderir: performance optimization by reducing slices 2023-09-28 01:56:51 +09:00
Hajime Hoshi
7cb64ccffe internal/ui: refactoring 2023-09-28 01:01:58 +09:00
Hajime Hoshi
a65a45586f internal/ui: bug fix: need nil check at dipFromGLFWMonitorPixel
Updates #1878
2023-09-25 18:42:23 +09:00
Hajime Hoshi
58d3655597 internal/ui: remove unnecessary receivers from methods 2023-09-24 19:45:55 +09:00
Hajime Hoshi
b32575b7b2 internal/ui: refactoring: add (*Monitor).deviceScaleFactor 2023-09-24 19:41:37 +09:00
Hajime Hoshi
0e23045b90 internal/ui: refactoring: add (*monitors).monitorFromPosition 2023-09-24 19:41:28 +09:00
Hajime Hoshi
fab08bac92 internal/ui: use RLock/RUnlock whenever possible 2023-09-24 19:27:22 +09:00
Hajime Hoshi
4fb27adb9d internal/ui: remove an old comment
Now Ebitengine allows to specify the initial monitor, having an
initial monitor is no longer a hack.

Updates #1575
Updates #1835
2023-09-24 19:24:23 +09:00
Hajime Hoshi
b5d0dc3686 internal/ui: change the initial window position adjustment
The window position should be posible if possible.
2023-09-24 19:07:21 +09:00
Hajime Hoshi
a23efac01c internal/ui: refactoring: reduce member variables 2023-09-24 19:05:56 +09:00
Hajime Hoshi
c16bd1e249 internal/ui: refactoring: unify duplicated logics to initialize the window size and position 2023-09-24 18:55:45 +09:00
Hajime Hoshi
b95228a8a6 all: rename arguments in Kage
Closes #2767
2023-09-24 16:46:36 +09:00
Hajime Hoshi
915ed48f7a internal/graphicsdriver/metal/mtl: bug fix: fail to resolve Metal.framework path with Xcode 15
Updates #2732
Closes #2784
2023-09-24 16:15:54 +09:00
Hajime Hoshi
c7d1d28582 internal/ui: move impls for device scale to internal/ui for desktops
This enables to remove restrictions for some functions to be called
from the main thread.

Updates #2423
2023-09-24 15:44:41 +09:00
Hajime Hoshi
458a415131 internal/ui: move impls for device scale to internal/ui for mobiles 2023-09-24 15:29:14 +09:00
Hajime Hoshi
b243dc0649 internal/devicescale: bug fix: this package cannot be compiled with GOOS=js 2023-09-24 03:35:54 +09:00
Hajime Hoshi
506a1de259 internal/ui: refactoring: move device-scale implementation to internal/ui for browsers
The returned value from internal/devicescale.At never changes for
browsers, so the detection of devicePixelRatio updates didn't work
in the first place. Also, there is not a good way to detect the
change [1].

This change moves the logic from internal/devicescale to internal/ui.
We aim to merge these packages as a device scale factor belongs to
a monitor and internal/ui manages monitors.

[1] https://crbug.com/123694
2023-09-24 03:19:31 +09:00
Hajime Hoshi
5d5e3c7c0b internal/ui: refactoring: replace *glfw.Monitor with *Monitor 2023-09-24 02:39:53 +09:00
Hajime Hoshi
f72b8a4ced internal/ui: refactoring: remove redundant Monitor members 2023-09-24 01:58:07 +09:00
Hajime Hoshi
121d6005cd internal/ui: remove (*Monitor).Bounds
Updates #2780
2023-09-24 01:46:14 +09:00
Hajime Hoshi
01e2c92e56 internal/ui: remove unnecessary code
This was an old code when Ebitengine created a dummy invisible
window before creating the main window.
2023-09-24 01:42:39 +09:00
Hajime Hoshi
69e3a2b974 internal/ui: refactoring: (*monitors).update must be called from the main thread
In the current implementation, (*monitors).update is not called
from other threads, but the current code is fragile.
2023-09-24 01:37:11 +09:00
Hajime Hoshi
7664647ad1 internal/ui: bug fix: needed to wait before entering into fullscreen
Just after moving a window to another monitor, waiting a little while
was required before entering into fullscreen.

Closes #2778
2023-09-23 19:02:36 +09:00
Hajime Hoshi
4ef98b3ea9 internal/ui: bug fix: wrong calculation of the initial window position
Updates #2778
2023-09-23 18:51:58 +09:00
Hajime Hoshi
b3058b68a0 ebiten: change the unit of (*Monitor).Bounds
Monitors can have different device scale factors, and in this case,
it doesn't make sense to use device-independent pixels as unit for
monitor positions and sizes.

Updates #2778
2023-09-23 17:58:23 +09:00
Hajime Hoshi
d736a8cff7 internal/ui: bug fix: GetVideoMode must not be called from othere threads
Now setInitMonitor can be called from any other threads than the main
thread. Do not call this.

This change fixes the issue by using *Monitor instead of *glfw.Monitor.
2023-09-23 17:30:18 +09:00
Hajime Hoshi
e0cd031aea internal/ui: bug fix: replace initWindowMonitor usages with initMonitor
There were two similar member variables internalWindowMonitor and
initMonitor, and when SetMonitor is called, probably there were
some inconsitency between them.

This change fixes the issue by not using initWindowMonitor.

Closes #2779
2023-09-23 17:17:38 +09:00
Hajime Hoshi
2702c6b228 internal/processtest: suppress issue2475 test for Windows
The result seems flaky unfortunately.
2023-09-23 00:18:41 +09:00
Hajime Hoshi
0e27a8a30b internal/shader: bug fix: spaces around a compiler directive should be allowed
Closes #2771
2023-09-22 01:45:11 +09:00
Hajime Hoshi
2f835a0ee2 internal/graphics: fix wrong comments 2023-09-21 01:59:20 +09:00
Hajime Hoshi
20ef839e03 all: rename arguments in Fragment
Updates #2767
2023-09-21 01:35:57 +09:00
Hajime Hoshi
2c8a2a584f internal/gamepaddb: update the database
This adopts the commit e72ff9cb76

Closes #2766
2023-09-18 21:20:10 +09:00
Hajime Hoshi
0dcfa5f54b Revert "internal/gamepaddb: update the database"
This reverts commit 4375fffcbe.

Reason: test failures
2023-09-18 19:23:45 +09:00
Hajime Hoshi
4375fffcbe internal/gamepaddb: update the database
This adopts the commit 8adb15e0a2
2023-09-18 19:07:01 +09:00
Hajime Hoshi
14f2ee198e ebiten: add SetWindowMousePassthrough and IsWindowMousePassthrough
Closes #2511
2023-09-18 18:31:22 +09:00
Hajime Hoshi
c8d38f7f25 internal/glfw, interna/cglfw, internal/goglfw: add MousePassthrough
Work in progress

Updates #2511
2023-09-18 18:31:22 +09:00
Hajime Hoshi
777c575638 internal/goglfw: typo
Fortunately, this function is actually not called.
2023-09-18 18:30:43 +09:00
Hajime Hoshi
6f41a05264 Revert "internal/graphicsdriver/directx: remove tearing"
This reverts commit 78d3e4273b.

Reason: tearing is potentially risky but needed for maximizing FPS.
Also, tearing is officially recommended by Microsoft (see [1])

Closes #2697

[1] https://github.com/microsoft/DirectX-Graphics-Samples/blob/master/Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingHelloWorld/DeviceResources.cpp#L520
2023-09-18 03:30:34 +09:00
Hajime Hoshi
8a0aba45f5 internal/ui: update touches after the layout is determined on mobiles
Closes #2763
2023-09-17 21:56:26 +09:00
Hajime Hoshi
07d2706e63 internal/processtest: bug fix: allow some numerical errors for cursor positions
Updates #2475
2023-09-17 19:58:30 +09:00
Hajime Hoshi
fd689467c5 internal/processtest: add a test for capturing cursor and fullscreen
Updates #2475
2023-09-17 19:41:56 +09:00
Hajime Hoshi
02fd8cfb07 internal/ui: bug fix: preserve a captured cursor positions for toggling fullscreening for browsers
Closes #2475
2023-09-17 18:38:00 +09:00
Hajime Hoshi
a5aa721bda internal/ui: update mouse and touch cursors after the layout is determined on browsers
Updates #2763
2023-09-17 16:30:47 +09:00
Hajime Hoshi
6ab509f221 internal/ui: reland: bug fix: preserve cursor positions for toggling fullscreening for desktops
Updates #2475
2023-09-17 15:54:39 +09:00
Hajime Hoshi
9d73e45677 Revert "internal/ui: bug fix: preserve cursor positions for toggling fullscreening for desktops"
This reverts commit 7ed4db90be.

Reason: compile error on Windows
2023-09-17 15:43:38 +09:00
Hajime Hoshi
7ed4db90be internal/ui: bug fix: preserve cursor positions for toggling fullscreening for desktops
Updates #2475
2023-09-17 15:26:08 +09:00
Hajime Hoshi
7becaa19e6 internal/ui: bug fix: native APIs must be called from the main thread
Updates #2763
2023-09-17 15:14:57 +09:00
Hajime Hoshi
0475baf9e2 internal/ui: update comments
Updates #2763
2023-09-17 14:59:43 +09:00
Hajime Hoshi
8c25b07336 internal/ui: call updateInputState after layoutGame
The cursor position is affected by the current layout. Then, input
states should be updated after layoutGame is called.

Updates #2763
2023-09-17 14:58:32 +09:00
Hajime Hoshi
a62b8a00e7 internal/ui: use float64 for cursor positions internally 2023-09-17 03:43:18 +09:00
Hajime Hoshi
226497a8a9 internal/cglfw: bug fix: Motif hints should be updated for functions and decorations at the same time
Updates #2289
Closes #2760
2023-09-17 00:40:17 +09:00
Hajime Hoshi
90ee615e00 internal/cglfw: disable a maximizing button when a max window size is specified
Closes #2289
2023-09-16 23:41:19 +09:00
Hajime Hoshi
7698ec0665 internal/cglfw: rename a file
Updates #2759
2023-09-16 23:17:17 +09:00
Hajime Hoshi
2737bd6d04 internal/cglfw: drop a native Wayland support
Closes #2759
2023-09-16 21:46:24 +09:00
Hajime Hoshi
45acc2c5d8 internal/ui: reland: bug fix: disable window size limitation on fullscreen
Closes #2260
2023-09-16 16:49:49 +09:00
Hajime Hoshi
40fc96d78c internal/ui: forbid a green button when a max window size limit is specified
Updates #2260
2023-09-16 16:40:03 +09:00
Hajime Hoshi
128215eedd Revert "internal/ui: bug fix: disable window size limitation on fullscreen"
This reverts commit 9a5ef1b553.

Reason: we should disable the green button instead

Updates #2260
2023-09-16 03:23:34 +09:00
Hajime Hoshi
657e4c2541 internal/ui: update a comment
Closes #2240
2023-09-16 03:12:37 +09:00
Hajime Hoshi
619436a47b internal/ui: refactoring: add monitor_glfw.go 2023-09-16 00:16:00 +09:00
Hajime Hoshi
dd2768d5f3 internal/ui: bug fix: introduce locks for monitors
Updates #1853
2023-09-15 03:59:13 +09:00
Hajime Hoshi
32bd565df9 internal/ui: bug fix: setWindowMonitor was processed even when the same monitor was specified
Updates #1835
2023-09-15 03:30:15 +09:00
Hajime Hoshi
b710ff17c8 internal/ui: bug fix: wait for a while after exiting fullscreen on macOS
Closes #2758
2023-09-15 03:19:37 +09:00
Hajime Hoshi
90accfba1e internal/ui: bug fix: do not call PollEvents on Windows and Linux
Updates #2296
2023-09-15 03:11:58 +09:00
Hajime Hoshi
568e98ef1c internal/ui: bug fix: call setOrigWindowPos on entering fullscreen
Closes #2757
2023-09-15 02:53:38 +09:00
Hajime Hoshi
f7a801d591 internal/ui: refactoring 2023-09-15 02:45:31 +09:00
Hajime Hoshi
9a5ef1b553 internal/ui: bug fix: disable window size limitation on fullscreen
Closes #2260
2023-09-15 02:19:20 +09:00
Hajime Hoshi
0e19cd10be internal/shader: add type checks for a bitwise operator + assignment
Closes #2754
2023-09-13 04:17:46 +09:00
Hajime Hoshi
1f67518319 internal/shader: clean up tests 2023-09-13 03:57:20 +09:00
Hajime Hoshi
320cec8869 internal/shaderir: refactoring 2023-09-13 03:25:42 +09:00
Hajime Hoshi
19413c2805 internal/shader: refactoring: move type deduction to shaderir package
Updates #2754
2023-09-13 00:18:47 +09:00
Hajime Hoshi
5e30e1ee1d internal/shader: refactoring 2023-09-12 03:27:30 +09:00
Hajime Hoshi
73e4423fe7 internal/shader: bug fix: bitwise operators with assignment didn't work
Closes #2752
Updates #2754
2023-09-12 03:15:28 +09:00
Hajime Hoshi
c13980158f internal/shader: add type checks for bitwise operators
Updates #2754
2023-09-12 02:40:42 +09:00
Hajime Hoshi
41c7852c7d internal/ui: sort selectors in alphabetical order 2023-09-11 02:15:42 +09:00
TotallyGamerJet
5dc293fe4f
internal/ui: use new OBJC API (#2750)
Updates #1162
2023-09-11 02:05:42 +09:00
Hajime Hoshi
55bfc02509 internal/processtest: use (*testing.T).TempDir 2023-09-06 11:37:27 +09:00
Hajime Hoshi
20ddfba983 internal/shader: bug fix: error in assinments to multiple variables
Closes #2747
2023-09-04 02:21:45 +09:00
Hajime Hoshi
1bbded8653 internal/shader: bug fix: wrong local variable index was used for assignments
Closes #2655
2023-09-04 01:23:03 +09:00
Hajime Hoshi
f82114e8eb internal/shader: add parseFor
Updates #1897
2023-09-03 17:15:39 +09:00
Hajime Hoshi
f30a58a393 internal/ui: bug fix: disable global functions after the game termination
Closes #2743
2023-09-02 15:38:41 +09:00
Hajime Hoshi
6e968558b1 internal/ui: bug fix: setRunning(true) must be called after the main thread is set
Some functions like ebiten.SetCursorMode use `running` to detect
whether the game starts or not. If the game starts, the main thread
must exist, but there was a timing when `running` was true but the
main thread didn't exist.

This change fixes this issue by changing the timing to call
`setRunning(true)` after the main thread initialization and before
`initOnMainThread`. `initOnMainThread` assumes that `running` is
true.

Closes #2742
2023-09-02 04:24:51 +09:00
Hajime Hoshi
d9757138a7 internal/restorable: use clearImage to clear a region
This is an improvement for https://github.com/hajimehoshi/ebiten/issues/2676#issuecomment-1650325027

Updates #2676
2023-08-31 23:32:54 +09:00
Hajime Hoshi
e082ea73dc internal/restorable: reuse empty byte slices for ClearPixels
This is an improvement for https://github.com/hajimehoshi/ebiten/issues/2676#issuecomment-1650325027

Updates #2676
2023-08-31 23:02:40 +09:00
Hajime Hoshi
7ed2d73406 internal/builtinshader: bug fix: wrong blending rate
The blending rate of colors in a square vertices should be calculated
by the lower-right point, not the upper-left point.

mix(a, b, rate) function calculates (1-rate)*a + rate*b, so a should
be weighted if rate is close to 0, and b should be weighted if rate
is close to 1. The current implementation was opposite.

Rendering results don't seem to be changed so much actually, but the
current implementation doesn't make sense.
2023-08-31 15:11:37 +09:00
Hajime Hoshi
009fb504ed internal/builtinshader: remove adjustments for tie-breaking
This seems no longer needed with the pixel mode.

This was confirmed by this test:

```
go run . -run=TestImageLinearFilterGlitch2
```

The same change didn't work at b5ca404c42
but worked at 49582519c1, which
introduced the pixel mode.

Updates #1212
2023-08-30 23:55:44 +09:00
Ketchetwahmeegwun T. Southall
60b7de6a3c
ebiten: add APIs to treat monitors (#2597)
This change adds these APIs:

* `type MonitorType`
* `func (*MonitorType) Bounds() image.Rectangle`
* `func (*MonitorType) Name() string`
* `func Monitor() *MonitorType`
* `func SetMonitor(*MonitorType)`
* `func AppendMonitors([]*MonitorType) []*MonitorType`

Closes #1835
2023-08-30 21:02:04 +09:00
Hajime Hoshi
98ead195c6 audio: bug fix: deadlock between a player and a context
Closes #2737
2023-08-29 14:52:48 +09:00
Hajime Hoshi
1269315f75 internal/shader: bug fix: forbid duplicated uniform variables
Closes #2648
2023-08-29 00:43:10 +09:00
Hajime Hoshi
446a6dc952 internal/graphics: deprecated some built-in functions
Updates #1870
2023-08-29 00:06:54 +09:00
Hajime Hoshi
db34930ae8 internal/graphics: add built-in Kage functions
This change adds these Kage functions:

* imageDstOrigin
* imageDstSrc
* imageSrcNOrigin
* imageSrcNSrc

and deprecates these functions:

* imageDstRegionOnTexture
* imageSrcRegionOnTexture

Closes #1870
2023-08-28 15:06:45 +09:00
Hajime Hoshi
534370f7b1 internal/graphics: enable to specify regions for each source image
This is a preparation to specify different sizes of source images.

Updates #1870
2023-08-27 21:15:01 +09:00
Hajime Hoshi
dec08b9e4e all: bug fix: relative paths for dlopen didn't work on macOS Sonoma
Closes #2732
2023-08-26 14:52:52 +09:00
Hajime Hoshi
592d6c57b7 internal/graphicsdriver/metal: improve an error message for Metal initialization
Updates #2732
2023-08-26 12:43:16 +09:00
Hajime Hoshi
4116fd3eb4 internal/debug: bug fix: add SwitchLogger to dump logs for each frame correctly
Closes #2731
2023-08-26 03:38:37 +09:00
Hajime Hoshi
b29fc5672c internal/graphicscommand: use bufio to make dumping images faster 2023-08-26 00:50:45 +09:00
Hajime Hoshi
fd5e2d39c0 internal/graphics: add uniform variables for source image sizes
Updates #1870
2023-08-25 07:30:52 +09:00
Hajime Hoshi
a9b2f5f9ca Revert "ebiten: panic if a non-existent uniform variable name is given"
This reverts commit 1b8580fab7.

Reason: some existing applications don't work with this fix.

Updates #2710
2023-08-24 14:15:19 +09:00
Hajime Hoshi
3493358fd2 internal/graphics: use the terms 'image' and 'texture' appropriately 2023-08-24 02:36:51 +09:00
Hajime Hoshi
7ea3cd4738 internal/atlas: bug fix: copy the image slice before iterating it
Closes #2729
2023-08-23 16:41:34 +09:00
Hajime Hoshi
2de64088dc internal/graphicscommand: reduce boundary checks
This can be confirmed by this command:

```
go build -gcflags="-d=ssa/check_bce" ./internal/graphicscommand/
```

Updates #2601
2023-08-21 03:15:31 +09:00
Hajime Hoshi
c00795416a internal/graphicscommand: remove a redundant boundary check
The boundary is already checked the above 'copy' call. This can be
confirmed by the result of this command.

```
go build -gcflags="-d=ssa/check_bce" ./internal/graphicscommand/
```
2023-08-20 15:45:19 +09:00
Hajime Hoshi
407d7bd43f internal/graphics: optimization: remove boundary checks
Before:

```
$ go build -gcflags="-d=ssa/check_bce" ./internal/graphics
internal/graphics/vertex.go:83:9: Found IsSliceInBounds
internal/graphics/vertex.go:85:5: Found IsInBounds
internal/graphics/vertex.go:86:5: Found IsInBounds
...
```

After:

```
$ go build -gcflags="-d=ssa/check_bce" ./internal/graphics
internal/graphics/vertex.go:83:11: Found IsSliceInBounds
internal/graphics/shader.go:134:37: Found IsSliceInBounds
```

Updates #2601
2023-08-20 15:38:07 +09:00
Hajime Hoshi
d9797423e5 ebiten, internal/builtinshader: use an array instead of a map
runtime.mapaccess2 is one of heavy function calls.

Updates #2601
2023-08-20 05:20:52 +09:00
Hajime Hoshi
10c9f489ce internal/devicescale: use a slice instead of a map
runtime.mapaccess2 is one of heavy function calls.

Updates #2601
2023-08-20 05:00:46 +09:00
Hajime Hoshi
4f2327536c internal/shaderir: improve FilterUniformVariables
```
name      old time/op  new time/op  delta
Filter-8  31.7ns ± 1%  29.9ns ± 1%  -5.60%  (p=0.000 n=9+10)
```

Updates #2601
2023-08-20 03:21:46 +09:00
Hajime Hoshi
3b67b91bb2 internal/graphicscommand: remove redundant buffers
Now there are two command queues, uint32sBuffer doesn't have to have
two buffers.
2023-08-19 17:15:48 +09:00
Hajime Hoshi
fcec771f34 internal/graphicscommand: clear uniform variables explicitly
This change is a performance optimization.

(*uint32sBuffer).alloc doesn't clear the uniform values. Without
clearing the values explicitly, CanMergeWithDrawTrianglesCommand
might return false even though two commands can be merged.
2023-08-19 16:19:14 +09:00
Hajime Hoshi
a9d9143d90 internal/atlas: replace a map with a set with a slice
Updates #2601
2023-08-19 15:08:49 +09:00
Hajime Hoshi
3b2251a858 internal/atlas: refactoring: improve a comment 2023-08-19 05:24:20 +09:00
Hajime Hoshi
be68f50f96 internal/atlas: refactoring: rename a variable 2023-08-19 05:20:39 +09:00
Hajime Hoshi
3c49f81b5c internal/atlas: replace a global map with a member
This should be a pure performance improvement.

Updates #2601
2023-08-19 05:02:35 +09:00
Hajime Hoshi
32f1436576 internal/atlas: refactoring: remove (probably) unnecessary logics 2023-08-19 04:36:40 +09:00
Hajime Hoshi
1e2a4cb4b1 internal/atlas: refactoring: remove unnecessary logics
Updates #2601
2023-08-19 04:06:43 +09:00
Hajime Hoshi
e1041ea20e internal/atlas: replace a global map with a struct member
This should be a pure performance improvement.

Updates #2586
Updates #2601
2023-08-19 03:25:17 +09:00
Hajime Hoshi
77fd15145b internal/atlas: add a test for a bug fix
Closes #2728
2023-08-19 01:36:05 +09:00
Hajime Hoshi
ea1f596cda internal/atlas: bug fix: possible overflowing on 32bit machines 2023-08-19 01:19:15 +09:00
Hajime Hoshi
e270dea460 internal/graphicsdriver: use []PixelsArgs for ReadPixels
Closes #2592
2023-08-17 03:06:48 +09:00
Hajime Hoshi
842c3cbfcd internal/graphicscommand: use a slice to values instead of pointers
This should reduce heap allocations.
2023-08-16 23:23:30 +09:00
Hajime Hoshi
377b0b8502 internal/graphicscommand: rename WritePixelsArgs -> PixelsArgs
Updates #2592
2023-08-16 22:34:56 +09:00
Hajime Hoshi
2de54c556b internal/shader: bug fix: wrong for-loop should fail compilation
Closes #2680
2023-08-08 23:38:01 +09:00
Hajime Hoshi
98cb77d94f internal/atlas: refactoring 2023-08-06 16:03:57 +09:00
Hajime Hoshi
32ed22f91c internal/atlas: refactoring 2023-08-06 15:59:15 +09:00
Hajime Hoshi
0433dfac99 internal/atlas: reland: clarify the logic when to update usedAsDestination
This is a reland of 2c9f5d9dad.

As the name is `usedAsDestination`, this should be updated whenever
the image is used as a rendering destination.

Confirmed that this change didn't cause a performance regression
like #2586.

Updates #2586
Updates #2676
2023-08-06 15:59:11 +09:00
Hajime Hoshi
dcc8794883 Revert "internal/atlas: clarify the logic when to update usedAsDestination"
This reverts commit 2c9f5d9dad.

Reason: test failures
2023-08-06 15:25:55 +09:00
Hajime Hoshi
2c9f5d9dad internal/atlas: clarify the logic when to update usedAsDestination
As the name is `usedAsDestination`, this should be updated whenever
the image is used as a rendering destination.

Confirmed that this change didn't cause a performance regression
like #2586.

Updates #2586
Updates #2676
2023-08-06 15:23:19 +09:00
Hajime Hoshi
a50d9e6291 internal/atlas: check overflows 2023-08-06 13:46:41 +09:00
Hajime Hoshi
1ae5e022b6 internal/atlas: change when to count up usedAsDestinationCount
An image has a counter to count how many times an image is used.

Before this change, the counter was updated only when an image was moved
from a source backend to a destination backend. This seemed not enough,
and an image was likely moved to a source backend more often than
necessary (#2676).

However, there was also an issue that the counter was updated too
aggressively and the image was unlikely moved from a destination to
a source image (#2586).

In order to resolve this dilemma, let's adopt an intermediate way:
count up the counter at most once per frame.

Updates #2586
Updates #2676
2023-08-06 13:27:28 +09:00
Hajime Hoshi
6fa8c02d4a internal/shader: bug fix: div between a matrix and a flaot failed
Closes #2719
2023-08-05 02:12:39 +09:00
Hajime Hoshi
d9acc57997 internal/goglfw: fix copyright texts
This change updates the copyright comment to respect the original
GLFW source comments.
2023-08-04 01:17:23 +09:00
Hajime Hoshi
56f37ed42b internal/cglfw: change the license to Apache-2.0
Closes #2695
2023-08-04 01:09:48 +09:00
Hajime Hoshi
4158e206e6 internal/graphicsdriver/metal: rename files 2023-08-03 23:54:48 +09:00
Hajime Hoshi
120366c3ac internal/cglfw: change the license of *.go files to Apache-2.0
Updates #2695
2023-08-03 23:52:53 +09:00
Hajime Hoshi
3dd2f15b64 internal/cglfw: remove GLFW_C_REVISION.txt
The source in internal/cglfw is no longer the same as the original one.
2023-08-02 02:02:30 +09:00
Hajime Hoshi
b2be456af8 internal/goglfw: change the license to Apache-2.0
Updates #2695
2023-08-01 23:57:05 +09:00
Hajime Hoshi
d410d740a3 internal/graphicsdriver/opengl/gl: change the license of default_cgo* to Apache-2.0
Updates #2695
2023-08-01 23:45:43 +09:00
Hajime Hoshi
d8630f940d internal/shader: bug fix: forbide comparing non-scalar values
Closes #2718
2023-08-01 12:32:16 +09:00
Hajime Hoshi
63df6168d9 internal/shader: use plural forms for Kage compiler directives
This change renames

```
//kage:unit texel
//kage:unit pixel
```

to

```
//kage:unit texels
//kage:unit pixels
```

.

Closes #2717
2023-08-01 11:41:38 +09:00
Hajime Hoshi
ae9781cd53 internal/graphicscommand: add comments 2023-08-01 00:18:12 +09:00
Hajime Hoshi
ce25583438 internal/atlas: refactoring: move temporaryBytes to internal/graphicscommand 2023-08-01 00:11:40 +09:00
Hajime Hoshi
0fb1cdcfbd internal/atlas: bug fix: there should be multiple temporaryBytes objects for pipelining
Closes #2716
2023-07-31 16:18:17 +09:00
Hajime Hoshi
f81dbd9288 internal/graphicsdriver: flush commands asynchronously whenever possible
Closes #2664
2023-07-30 22:44:13 +09:00
Hajime Hoshi
a7e4665f71 internal/graphicscommand: use multiple command queues
This is a preparation for asynchronous rendering.

Updates #2664
2023-07-30 22:42:58 +09:00
Hajime Hoshi
5a64f8299e internal/thread: refactoring: add a common interface Thread 2023-07-30 22:42:24 +09:00
Hajime Hoshi
81b7fd7641 internal/graphicscommand: refactoring 2023-07-30 18:37:18 +09:00
Hajime Hoshi
d13bea29dc internal/ui: refactoring 2023-07-30 03:52:54 +09:00
Hajime Hoshi
3869e2e4f6 internal/ui: refactoring: integrate the render thread usages into internal/graphicscommand
Updates #2664
2023-07-30 03:50:49 +09:00
Hajime Hoshi
246bd41695 internal/graphicscommand: fix a wrong comment 2023-07-30 01:56:58 +09:00
Hajime Hoshi
4df647a400 internal/shader: bug fix: forbid to have an initial value for uniform variables
Closes #2711
2023-07-29 20:51:02 +09:00
Hajime Hoshi
1b8580fab7 ebiten: panic if a non-existent uniform variable name is given
Closes #2710
2023-07-29 20:24:42 +09:00
Hajime Hoshi
0b1c7404d5 ebiten: use zero values for an unspecified uniform variable
Closes #2709
2023-07-29 19:11:49 +09:00
Hajime Hoshi
d0e4023d88 internal/ui: add a length check for uniform variables 2023-07-29 18:59:36 +09:00
Hajime Hoshi
5ddf1df423 internal/shaderir: remove ConstType
Closes #2550
2023-07-29 15:34:30 +09:00
Hajime Hoshi
7549f4fcd6 internal/shader: reduce ConstType usages
Updates #2550
2023-07-29 14:18:32 +09:00