Commit Graph

4940 Commits

Author SHA1 Message Date
Hajime Hoshi
820c996329 internal/shader: bug fix: wrong lhs in an assignment
Closes #2910
2024-02-15 02:29:21 +09:00
Hajime Hoshi
6d898d752e ebiten: add (*Monitor).DeviceScaleFactor()
This replaces ebiten.DeviceScaleFactor().

Updates #2795
2024-02-12 17:09:03 +09:00
Hajime Hoshi
67d947d37a internal/ui: remove Bounds 2024-02-12 15:24:00 +09:00
Hajime Hoshi
fca8ebb9af internal/shader: bug fix: non-name on the left side of :=
Closes #2891
2024-02-11 21:21:16 +09:00
Hajime Hoshi
75103f39dd internal/shader: bug fix: error on a function name in a function call
Updates #2891
2024-02-11 21:09:49 +09:00
Hajime Hoshi
60725eba86 ebiten: add RunGameOptions.X11ClassName and X11InstanceName
Closes #2904
2024-02-11 19:31:29 +09:00
Hajime Hoshi
0adc1ad681 internal/ui: make virtual keyboard keys work at least on Android
Updates #2898
2024-02-03 21:11:54 +09:00
Hajime Hoshi
7dd22fdc61 internal/ui: refactoring: rename uiKeyToJSKey to uiKeyToJSCode 2024-02-03 15:13:12 +09:00
Hajime Hoshi
872ffc148d internal/atlas: add TestGCShader
Updates #2897
2024-01-29 23:14:33 +09:00
Hajime Hoshi
f74d66e89a internal/atlas: bug fix: fix GC tests
Updates #2897
2024-01-29 21:01:58 +09:00
Hajime Hoshi
d2a9e5b1e8 internal/atlas: bug fix: fix tests
Updates #2897
2024-01-29 20:52:43 +09:00
Hajime Hoshi
f37ebe549b internal/atlas: bug fix: fix tests
Updates #2897
2024-01-29 20:52:02 +09:00
Hajime Hoshi
9a8dde6503 internal/atlas: bug fix: a finalizer was never called
As the finalizer function had a reference to the target image, the
image's reference count never became 0. Then, the image was never
finalized.

This change fixes this issue by using a member function pointer instead
of an anonymous function.

Closes #2897
2024-01-29 20:39:44 +09:00
Hajime Hoshi
6736bb56ec internal/ui: make a separate package to hide a console
Updates #2896
2024-01-28 22:42:58 +09:00
Hajime Hoshi
373e61d054 internal/ui: call hideConsole at init 2024-01-28 22:05:47 +09:00
Hajime Hoshi
11394d246f internal/ui: bug fix: check the error of TimeBeginPeriod 2024-01-28 14:25:17 +09:00
Hajime Hoshi
7e4cdf5211 internal/ui: use a more precise timer for Windows
When SetScreenClearedEveryFalse(false) and SetVsyncEnabled(false),
Draw might not be called as often as expected on Windows due to its
timer precision. This change improves the situation.

Updates #2889
2024-01-28 14:15:20 +09:00
Hajime Hoshi
770fcff4c2 internal/graphicsdriver/directx: bug fix: Go 1.22 + 32bit Windows + DirectX 12 didn't work well
Apparently, a pseudo padding was needed for D3D12_RESOURCE_DESC,
but this is still mysterious.

This change also add Go 1.22 to the GitHub Actions.

Closes #2867
2024-01-27 18:06:53 +09:00
Pedro Tiple
6fafe734da
internal/graphicscommand: refactoring: remove a hard-coded part for ShaderImageCount (#2895)
This change allows increasing ShaderImageCount without breaking the image display.
Simply made the uniform processing dynamic based on ShaderImageCount.
2024-01-26 13:03:04 +09:00
Hajime Hoshi
8551cd350f internal/ui: bug fix: need to sleep when swapping buffers is skipped
Closes #2890
2024-01-24 12:20:30 +09:00
Hajime Hoshi
006f14ac19 internal/graphicsdriver/playstation5: bug fix: link error 2024-01-22 00:14:00 +09:00
Hajime Hoshi
52e0f10ff7 internal/graphicsdriver/playstation5: bug fix: compile error 2024-01-22 00:05:02 +09:00
Hajime Hoshi
f0509096f8 internal/graphicsdriver/playstation5: add ebitengine_IsErrorNil 2024-01-21 23:54:02 +09:00
Hajime Hoshi
e0ccd013ac internal/graphicsdriver/directx: bug fix: depth should be passed by math.Float32bits
As depth was always 0, there was not an actual problem.
2024-01-21 21:43:09 +09:00
Hajime Hoshi
5887142da7 internal/grpahicsdriver/metal/mtl: use 3 drawings for fullscreen
Hajime found that renderings were delayed with 2 drawing in fullscreen
though FPS might be lowered. This is mysterious but there is no other
good solution.

Updates #2883
2024-01-19 18:29:47 +09:00
Hajime Hoshi
f27402ee44 internal/mipmap: use a better image size
Unnecessarily big images were used since 4 years go
(f8956941b7). Use a better small image
for mipmaps.
2024-01-18 16:10:15 +09:00
Hajime Hoshi
e39c50c296 internal/graphicsdriver/metal: add comments
Updates #2880
Updates #2883
2024-01-17 20:51:32 +09:00
Hajime Hoshi
055db234a1 internal/graphicsdriver/metal: bug fix: use 2 as a drawable count for Arm Mac
Closes #2883
2024-01-17 18:57:50 +09:00
Hajime Hoshi
2ec5c788ab internal/buffered: fix comments 2024-01-17 04:19:07 +09:00
Hajime Hoshi
cef272f638 internal/buffered: refactoring 2024-01-17 00:20:12 +09:00
Hajime Hoshi
3cbc1870bf internal/buffered: update pixels instead of dotsBuffer when possible 2024-01-17 00:18:06 +09:00
Hajime Hoshi
26e2748732 internal/buffered: bug fix: check errors from ReadPixels 2024-01-16 13:26:31 +09:00
Hajime Hoshi
2f894cb311 internal/buffered: move tests to internal/beforemaintest
Also, this change moves TestUnsyncedPixels to buffered_test.
2024-01-16 13:07:10 +09:00
Hajime Hoshi
7b3eae3dcb internal/ui: reland: move dotsBuffer from internal/ui.Image to internal/buffered.Image
This is a reland of fb426cd0dd.

This is a refactoring as 'caching' things should be in internal/buffered,
but also this is a performance optimization to make pixels and dotsBuffer
work well together.
2024-01-16 12:45:43 +09:00
Hajime Hoshi
b2759b66f9 Revert "internal/ui: move dotsBuffer from internal/ui.Image to internal/buffered.Image"
This reverts commit fb426cd0dd.

Reason: processtest (TestPrograms/issue2089) failed (flaky)
2024-01-16 02:56:24 +09:00
Hajime Hoshi
fb426cd0dd internal/ui: move dotsBuffer from internal/ui.Image to internal/buffered.Image
This is a refactoring as 'caching' things should be in internal/buffered,
but also this is a performance optimization to make pixels and dotsBuffer
work well together.
2024-01-16 02:08:41 +09:00
Hajime Hoshi
a0cb0d0568 internal/graphicsdriver/playstation5: use message to detect errors 2024-01-14 22:18:12 +09:00
Hajime Hoshi
00e67b8419 internal/graphicsdriver/playstation5: improve error handlings
Updates #2799
2024-01-14 00:42:13 +09:00
Hajime Hoshi
7f396f72de all: remove the comments about restorable 2024-01-13 20:00:01 +09:00
Hajime Hoshi
c404b448aa internal/restorable: integrate the implementation into internal/atlas
Closes #805
2024-01-13 19:59:57 +09:00
Hajime Hoshi
812cd494de internal/restorable: remove Image
Updates #805
2024-01-13 19:33:04 +09:00
Hajime Hoshi
59896e4447 internal/restorable: integrate Image functions into internal/atlas
Updates #805
2024-01-13 19:27:14 +09:00
Hajime Hoshi
6151fd313f internal/restorable: integrate Image.Extend into internal/atlas
Updates #805
2024-01-13 19:15:47 +09:00
Hajime Hoshi
6cc8150185 internal/restorable: integrate Image.WritePixels into internal/atlas
Updates #805
2024-01-13 19:05:19 +09:00
Hajime Hoshi
3ee905bc4d internal/restorable: integrate Image.DrawTriangles into internal/atlas
Updates #805
2024-01-13 18:52:06 +09:00
Hajime Hoshi
bfa2c460a2 internal/restorable: integrate Shader.Dispose into internal/atlas
Updates #805
2024-01-13 18:40:31 +09:00
Hajime Hoshi
2a465c2d0b internal/atlas: bug fix: do not pass nil to WritePixels 2024-01-13 18:33:02 +09:00
Hajime Hoshi
81e1104613 internal/restorable: refactoring
Updates #805
2024-01-13 18:19:48 +09:00
Hajime Hoshi
e804f9e58c internal/restorable: integrate ReadPixels into internal/atlas
Updates #805
2024-01-13 18:19:43 +09:00
Hajime Hoshi
c5d0ec3de7 internal/restorable: integrate some functions into internal/atlas
Updates #805
2024-01-13 18:05:42 +09:00
Hajime Hoshi
21ef462c37 internal/restorable: remove ImageType
Updates #805
2024-01-13 18:03:39 +09:00
Hajime Hoshi
d906dc3a21 internal/packing: rename a function 2024-01-13 17:42:51 +09:00
Hajime Hoshi
3651d73e0b internal/atlas: move some functions in internal/restorable to internal/atlas
Updates #805
2024-01-13 14:05:24 +09:00
Hajime Hoshi
f610cb5724 internal/restorable: move SwapBuffers to internal/atlas
Updates #805
2024-01-09 04:55:26 +09:00
Hajime Hoshi
7c9266d8b6 internal/restorable: move DumpImages to internal/atlas
Updates #805
2024-01-09 04:50:22 +09:00
Hajime Hoshi
fdf36026ae internal/atlas: add special backends to theBackends for consistency 2024-01-09 04:39:15 +09:00
Hajime Hoshi
fe0b33db58 internal/atlas: improve deallocation 2024-01-09 04:31:23 +09:00
Hajime Hoshi
8c2d4e1408 internal/restorable: remove ImageTypeRestorable
Updates #805
2024-01-09 03:35:32 +09:00
Hajime Hoshi
4f3e00ec3a internal/restorable: remove unnecessary functions and variables around shaders
Updates #805
2024-01-09 03:23:13 +09:00
Hajime Hoshi
8169253a57 internal/restorable: remove unused functions and variables
Updates #805
2024-01-09 02:56:15 +09:00
Hajime Hoshi
f3206721a3 internal/restorable: remove alwaysReadPixelsFromGPU
Updates #805
2024-01-09 02:43:09 +09:00
Hajime Hoshi
afe3f7a8ff internal/restorable: remove drawTrianglesHistoryItem
Updates #805
2024-01-09 02:40:27 +09:00
Hajime Hoshi
5a36b4bb48 internal/graphicsdriver/opengl/gl: remove IsTexture
Updates #805
2024-01-09 02:35:30 +09:00
Hajime Hoshi
48e3c766f7 internal/graphicsdriver: remove Image.IsInvalidated
Updates #805
2024-01-09 00:30:21 +09:00
Hajime Hoshi
a19f079da8 internal/graphicsdriver/playstation5: remove NeedsRestoring 2024-01-09 00:26:01 +09:00
Hajime Hoshi
c08a2193a9 internal/restorable: remove the case when the restoring is needed
Updates #805
2024-01-09 00:20:35 +09:00
Hajime Hoshi
771e5685f8 internal/graphicsdriver: remove NeedsRestoring()
Updates #805
2024-01-08 23:27:28 +09:00
Hajime Hoshi
a30f075896 cmd/ebitenmobile: use setPreserveEGLContextOnPause(true)
setPreserveEGLContextOnPause(true) suppresses context losts, and
basically we will no longer need our restoring logic.

Updates #805
2024-01-08 20:13:13 +09:00
Hajime Hoshi
9539a87b17 all: drop the support of gomobile-build
Closes #2741
2024-01-08 00:43:26 +09:00
Hajime Hoshi
a4abc4472b internal/shaderir/msl: always use the same function names 2024-01-07 18:54:15 +09:00
Hajime Hoshi
87fe7bfd99 internal/graphicsdriver/metal: refactoring 2024-01-02 23:42:50 +09:00
Hajime Hoshi
fd63820139 internal/graphicsdriver/metal: bug fix: always use 3 drawables
Updates #2822
Closes #2880
2024-01-02 22:50:46 +09:00
Hajime Hoshi
ec9613dd94 Revert "internal/graphicsdriver/metal: bug fix: use 3 drawables for fullscreen"
This reverts commit 3c7bcf3035.

Reason: the window unexpectedly blinks when exiting from fullscreen

Updates #2880
2024-01-02 22:47:09 +09:00
Hajime Hoshi
3c7bcf3035 internal/graphicsdriver/metal: bug fix: use 3 drawables for fullscreen
Closes #2880
2024-01-02 22:33:05 +09:00
Hajime Hoshi
dddfb7317b internal/cocoa: integrate internal/graphicsdriver/metal/ns and internal/cocoa 2024-01-02 22:22:19 +09:00
Hajime Hoshi
2da56c00c8 internal/ui: remove renderThread
Updates #2714
2024-01-02 17:14:38 +09:00
theinternetftw
5774cf808f
internal/ui: show window after first draw on glfw (#2875)
Fixes #2725 by avoiding the flash in the first place. Showing the
window this way was already default on macOS; This makes it default
for all glfw platforms.

Closes #2725
2023-12-29 14:16:54 +09:00
Hajime Hoshi
338b8957e8 internal/graphicscommand: add Terminate
This change reduces a render thread usage in internal/ui.

Updates #2714
2023-12-27 02:28:55 +09:00
Hajime Hoshi
22715cd2d5 internal/gamepaddb: refactoring 2023-12-24 23:41:44 +09:00
Hajime Hoshi
4a2c8212fb internal/shaderir: fix comments 2023-12-24 23:10:41 +09:00
Hajime Hoshi
c48fc05132 internal/graphicsdriver/metal: use %w instead of %v for errors 2023-12-24 22:29:53 +09:00
Hajime Hoshi
2e363cc19b internal/thread: fix comments 2023-12-23 23:23:52 +09:00
Hajime Hoshi
4895ae7f93 internal/graphicsdriver/opengl: refactoring: move some functions from internal/ui
Updates #2714
2023-12-23 22:30:13 +09:00
Hajime Hoshi
ee2ca6d20c internal/graphicsdriver/opengl: refactoring 2023-12-23 19:28:41 +09:00
Hajime Hoshi
01a4e29c5b internal/graphicsdriver/opengl/gl: add a build tag for PS5 2023-12-23 19:01:36 +09:00
Hajime Hoshi
b73d63da29 internal/glfw: change the default client API to No-API 2023-12-21 04:05:13 +09:00
Hajime Hoshi
037a818601 internal/graphicsdriver/opengl: bug fix: go-vet failed 2023-12-20 03:06:58 +09:00
Hajime Hoshi
4ef7b5c166 internal/graphicsdriver/opengl: refactoring: hide SetGLFWClientAPI
Updates #2714
2023-12-20 02:47:19 +09:00
Hajime Hoshi
f6f0cf05e6 internal/ui: refactoring: move updateVsyncOnRenderThread to the OpenGL driver
Updates #2714
2023-12-20 02:38:20 +09:00
Hajime Hoshi
12ae411d15 internal/graphicsdriver/opengl, internal/graphicsdriver/opengl/gl: refactoring 2023-12-20 02:19:33 +09:00
Hajime Hoshi
6fd18150d8 internal/graphicsdriver/opengl: move egl to the package opengl
Updates #2714
2023-12-19 23:41:14 +09:00
Hajime Hoshi
425b4dd99a internal/graphicsdriver/opengl: fix a wrong comment
Updates #2517
2023-12-18 01:44:27 +09:00
bsski
b8df1217c3
all: fix typos (#2864) 2023-12-17 22:42:34 +09:00
Hajime Hoshi
d7ebc19d04 internal/ui: refactoring: reduce usages of renderThread
Updates #2714
2023-12-17 16:21:07 +09:00
Hajime Hoshi
3b1684978b internal/ui: typo 2023-12-06 23:00:58 +09:00
Hajime Hoshi
d91455c0a7 internal/graphicscommand: add Shader.id 2023-12-01 21:31:50 +09:00
Hajime Hoshi
c45e9d0c00 internal/processtest: remove an empty line 2023-11-19 17:01:00 +09:00
Hajime Hoshi
af6b8dcd1c internal/processtest: use text/v2
Updates #2454
2023-11-19 16:55:03 +09:00
Hajime Hoshi
9b9384baa0 internal/shader: bug fix: variables in an index should be marked as used
Closes #2848
2023-11-19 14:50:43 +09:00
Hajime Hoshi
acd317bf91 internal/ui: bug fix: wrong for-loop condition
Closes #2847
2023-11-18 20:01:24 +09:00
Hajime Hoshi
1e78c2e6b0 internal/shaderir: bug fix: constants must be truncated correctly in an array
Closes #2840
2023-11-15 00:40:20 +09:00
Hajime Hoshi
3ca6184294 ebiten: add a new FillRule: NonZero
Closes #2782
2023-11-06 12:11:38 +09:00
Hajime Hoshi
358106bdc0 internal/graphicsdriver/playstation5: bug fix: compile failure 2023-11-05 21:45:40 +09:00
Hajime Hoshi
95fcbb1e51 internal/graphicsdriver/playstation5: add a binding
Updates #2799
2023-11-05 21:27:30 +09:00
Hajime Hoshi
3df2ffebd1 internal/ui: refactoring: integrate Run except for mobiles 2023-11-05 00:49:53 +09:00
Hajime Hoshi
563bbda615 internal/ui: bug fix: build failure on mobiles 2023-11-05 00:43:02 +09:00
Hajime Hoshi
2db10b1e9c ebiten: add RunGameOptions.SingleThread and deprecate ebitenginesinglethread build tag
Closes #2830
2023-11-05 00:01:44 +09:00
Hajime Hoshi
4d8bb1a5dd internal/graphicsdriver/playstation5: bug fix: build failure 2023-11-04 19:45:45 +09:00
Hajime Hoshi
4e93efa5ac internal/graphicsdriver: reland: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 19:09:50 +09:00
Hajime Hoshi
f695df5924 Revert "internal/graphicsdriver: add FillRule and replace boolean values with this"
This reverts commit 38cf964a3b.

Reason: build failure on Windows
2023-11-04 19:02:40 +09:00
Hajime Hoshi
38cf964a3b internal/graphicsdriver: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 18:57:31 +09:00
Hajime Hoshi
0cbcf7e493 internal/atlas: refactoring: remove unused arguments 2023-11-04 18:31:22 +09:00
Hajime Hoshi
3fa8e6ac52 internal/graphics: refactoring: move some constants to internal/graphicscommand 2023-11-04 16:33:30 +09:00
Hajime Hoshi
d862a75fb3 internal/graphics: rename constants
Closes #2828
2023-11-04 16:06:35 +09:00
Hajime Hoshi
1f95c98969 internal/graphics: reland: change the definition of MaxVerticesCount
Updates #2612
2023-11-04 16:02:22 +09:00
Hajime Hoshi
3a632be0c7 Revert "internal/graphics: change the definition of MaxVerticesCount"
This reverts commit 3047ad202a.

Reason: Failed to build for 32bit architectures

Updates #2612
2023-11-04 15:10:31 +09:00
Hajime Hoshi
3047ad202a internal/graphics: change the definition of MaxVerticesCount
Updates #2612
2023-11-04 14:38:34 +09:00
Hajime Hoshi
f2544a1bd9 internal/graphicsdriver: use []uint32 instead of []uint16 for indices
Updates #2612
2023-11-04 04:39:17 +09:00
Hajime Hoshi
ba93794a72 internal/atlas: images were not collected by GC 2023-11-04 04:37:40 +09:00
Hajime Hoshi
c01ceeaa6a ebiten: replace (*Image).Dispose with Deallocate
Closes #2808
2023-11-03 17:45:39 +09:00
Hajime Hoshi
8a44ef4f6c internal/atlas: bug fix: (*Image).Deallocate (*Shader).Deallocate were not concurrent-safe
Updates #2162
2023-11-03 17:12:04 +09:00
Hajime Hoshi
bdd8916bb1 ebiten: replace (*ebiten.Shader).Dispose with Deallocate
Updates #2808
2023-11-03 16:25:18 +09:00
Hajime Hoshi
97d1e073e2 internal/atlas: refactoring 2023-11-03 14:52:19 +09:00
Hajime Hoshi
258f0fd941 internal/atlas: remvoe 'disposed' state
Updates #2808
2023-11-03 14:35:57 +09:00
Hajime Hoshi
d72c4ec90b internal/atlas: refactoring 2023-11-03 14:19:59 +09:00
Hajime Hoshi
4a00891960 internal/glfw: refactoring 2023-10-31 22:43:40 +09:00
Hajime Hoshi
5da80ef3a7 internal/graphicsdriver: add playstation5
Updates #2799
2023-10-29 22:16:58 +09:00
Hajime Hoshi
27bc3e2487 internal/ui: refactoring: remove duplicated member variables 2023-10-29 19:25:02 +09:00
Hajime Hoshi
accb777f51 internal/ui: refactoring: remove unused functions 2023-10-29 19:16:11 +09:00
Hajime Hoshi
ae1ea3ba05 internal/ui: bug fix: compile failure 2023-10-29 19:14:24 +09:00
Hajime Hoshi
c4ce1b3503 internal/ui: start implementing UserInterface for PS5
Updates #2799
2023-10-29 19:13:08 +09:00
Hajime Hoshi
5fe8c29b4c internal/ui: refactoring: integrate (*UserInterface).run 2023-10-29 18:57:10 +09:00
Hajime Hoshi
ea842495cf internal/ui: refactoring 2023-10-29 18:29:41 +09:00
Hajime Hoshi
1db0abc4ee internal/graphicsdriver/directx: add comments 2023-10-29 00:19:36 +09:00
Hajime Hoshi
6339872da8 internal/graphicscommand: disable asynchronous rendering when vsync is on
Asynchronouse rendering was introduced at #2664, but apparently this
caused a delay between a game's update and its rendering.

Disable this when vsync is on. When vsync is off, we should not have
to care the delay since new renderings keep to come. Rather,
asynchronous renderings improves FPS.

Updates #2664
Updates #2822
2023-10-28 14:59:25 +09:00
Hajime Hoshi
98f2798b07 internal/ui: call a graphics driver's SetFPSMode only when necessary
It was odd to call this in the swapBufferForGL function.
2023-10-28 14:50:40 +09:00
Hajime Hoshi
61498e899a internal/graphicsdriver/metal: typo 2023-10-28 02:43:57 +09:00
Hajime Hoshi
d91f328083 internal/graphicsdriver/metal: bug fix: use 3 for drawable count when vsync is off
Updates #2822
2023-10-28 02:39:47 +09:00
Hajime Hoshi
80301eb29e internal/graphicsdriver/metal: change the maximum drawable count to 2
Updates #2822
2023-10-28 02:15:02 +09:00
Hajime Hoshi
457f6bb964 Revert "internal/ui: bug fix: panic at ReadPixels before running"
This reverts commit 2f6df3d4d6.

Reason: regression by calling (*ebiten.Image).At from a different goroutine

Updates #2820
2023-10-27 14:29:41 +09:00
Hajime Hoshi
2f6df3d4d6 internal/ui: bug fix: panic at ReadPixels before running
Closes #2820
2023-10-27 12:18:34 +09:00
Hajime Hoshi
4eb9b3a152 internal/ui: remove unused members 2023-10-27 10:49:45 +09:00
Hajime Hoshi
55702a7c28 internal/atlas: refactoring: ensure ReadPixels to be processed in a frame
This enables to call (*Image).At from HandleInput, which might be
called outside of a frame.

Updates #1704
2023-10-25 00:48:09 +09:00
Hajime Hoshi
a3ba83c5da internal/ui: bug fix: an error was ignored 2023-10-24 14:44:53 +09:00
Hajime Hoshi
f2acc3d9f7 internal/ui: refactoring 2023-10-24 14:38:23 +09:00
Hajime Hoshi
2eca476054 internal/ui: bug fix: EndFrame was not called when layoutGame returned 0s 2023-10-24 02:31:05 +09:00
Hajime Hoshi
b94c3fa9bb internal/atlas: split EndFrame into EndFrame and SwapBuffers
This enables to do something asynchronously while executing SwapBuffers
in a different goroutine.

This is a preparation for HandleInput.

Updates #1704
2023-10-24 00:22:04 +09:00
Hajime Hoshi
c2ad36bdce internal/ui: use BlendSourceOver at Fill when possible
Closes #2817
2023-10-21 01:24:49 +09:00
Hajime Hoshi
39688dd27d internal/processtest: improve test issue2815
WritePixels for 1x1 image is optimized at internal/ui, and Ebitengine
doesn't read pixels from GPU in this case. Enlarge the tested image,
and use DrawImage to ensure to invalidate the internal cache.

Updates #2815
2023-10-20 02:48:21 +09:00
Hajime Hoshi
e80e981bf5 internal/atlas: let callers retry ReadPixels instead of blocking
This is a preparation to implement HandleInput, which might call
(*Image).At in its callback.

Updates #1704
2023-10-20 02:30:32 +09:00
Hajime Hoshi
913824beba internal/atlas: close channels on the sender side just in case 2023-10-19 12:14:54 +09:00
Hajime Hoshi
ad51e22252 internal/atlas: bug fix: ReadPixels crashed when inFrame was false
This change fixes the issue by letting ReadPixels return a channel
and executing this asynchronously when needed.

Closes #2815
2023-10-19 03:56:54 +09:00
Hajime Hoshi
7a921e03da internal/atlas: bug fix: inFrame was not correctly updated
Updates #2814
2023-10-19 02:08:28 +09:00
Hajime Hoshi
7d517bfb63 internal/buffered: move buffering to internal/atlas
Closes #2814
2023-10-19 01:56:18 +09:00
Hajime Hoshi
da979a3ab2 internal/buffer, internal/mipmap: remove Shader 2023-10-19 00:52:32 +09:00
Hajime Hoshi
19ee79e2cb internal/buffered: remove unnecessary deferred functions for shaders 2023-10-18 23:36:41 +09:00
Hajime Hoshi
3f1b7e78b8 internal/buffered: remove unnecessary deferred functions 2023-10-18 23:20:02 +09:00
Hajime Hoshi
58847e023d internal/buffered: refactoring 2023-10-18 23:03:05 +09:00
Hajime Hoshi
b0f88bce7d internal/buffered: remove unnecessary deferred functions 2023-10-18 22:30:01 +09:00
Hajime Hoshi
315450474a internal/atlas: add comments 2023-10-18 01:01:21 +09:00
Hajime Hoshi
630789757f all: add files for PlayStation 5
The implementation is WIP.

Updates #2799
2023-10-16 00:54:08 +09:00
Hajime Hoshi
bdd68ca01a internal/ui: reland: use errors.New instead of fmt.Errorf 2023-10-16 00:25:51 +09:00
Hajime Hoshi
565e944691 Revert "internal/ui: use errors.New instead of fmt.Errorf"
This reverts commit ed49d8cc9a.

Reason: compile error
2023-10-16 00:24:41 +09:00
Hajime Hoshi
ed49d8cc9a internal/ui: use errors.New instead of fmt.Errorf 2023-10-16 00:23:37 +09:00
Hajime Hoshi
e1f18b53f5 internal/ui: refactoring 2023-10-16 00:02:25 +09:00
Hajime Hoshi
47e70f2544 internal/ui: use errors.New instead of fmt.Errorf 2023-10-15 23:27:04 +09:00
Hajime Hoshi
742f3a6dac internal/ui: refactoring: reduce functions 2023-10-15 20:14:23 +09:00
Hajime Hoshi
18714e22a1 internal/ui: reland: return errors when getting a graphics driver fails 2023-10-15 18:34:08 +09:00
Hajime Hoshi
bd10f19567 Revert "internal/ui: return errors when getting a graphics driver fails"
This reverts commit d4e31aedd6.

Reason: compile error with -tags=nintendosdk
2023-10-15 18:32:47 +09:00
Hajime Hoshi
d4e31aedd6 internal/ui: return errors when getting a graphics driver fails 2023-10-15 18:26:13 +09:00
Hajime Hoshi
8274b32301 internal/graphicslibrary: refactoring: remove IsGL and IsDirectX 2023-10-15 17:30:16 +09:00
Hajime Hoshi
0378230b3e internal/ui: refactoring: reduce theUI 2023-10-15 17:02:15 +09:00
Hajime Hoshi
83a4133577 internal/ui: refactoring: remove globalState 2023-10-15 16:51:16 +09:00
Hajime Hoshi
a16a03c9db internal/ui: refactoring 2023-10-15 16:38:05 +09:00
Hajime Hoshi
a89aaa0756 internal/ui: refactoring: remove fpsMode from globalState 2023-10-15 16:19:41 +09:00
Hajime Hoshi
beabe9c6ee internal/ui: bug fix: compile failure with -tags=nintendosdk 2023-10-15 03:58:29 +09:00
Hajime Hoshi
27fd10595b internal/ui: refactoring: reduce global functions and prefer Get() 2023-10-15 03:40:48 +09:00
Hajime Hoshi
69f1fa5f29 internal/ui: unify the receivers for UI 2023-10-15 02:51:23 +09:00
Hajime Hoshi
77bdbac244 Revert "internal/ui: remove an unused function"
This reverts commit df3a1c3cdd.

Reason: compile failure: UpdateInputFromEvent was used from textinput
2023-10-15 02:23:27 +09:00
Hajime Hoshi
df3a1c3cdd internal/ui: remove an unused function 2023-10-15 01:32:39 +09:00
Hajime Hoshi
2a8d8d71fc internal/ui: merge init functions
The Go specification doesn't determine the order of init functions.
In order to reduce unexpected behavior, merge some init functions.
2023-10-15 00:17:09 +09:00
Hajime Hoshi
567e2fa04c ebiten: add BlendOperationMin and BlendOperationMax
Closes #2395
2023-10-13 01:56:33 +09:00
Hajime Hoshi
7018e7dfb1 internal/ui: rename files 2023-10-11 02:03:58 +09:00
Hajime Hoshi
54c6c6b728 internal/glfw: bug fix: always use draw.Draw for any images
Closes #2807
2023-10-11 01:03:06 +09:00
Hajime Hoshi
1e5086fd5a internal/buffered: bug fix: enable TestGC again
The logic should be called in a game's Update explicitly.

Updates #2805
Closes #2806
2023-10-10 03:06:09 +09:00
Hajime Hoshi
4701a61e4b internal/buffered: skip a flaky test
Updates #2805
2023-10-10 02:22:12 +09:00
Hajime Hoshi
cc5174f104 internal/buffered: bug fix: images created in init() were not GCed
Closes #2805
2023-10-10 00:31:44 +09:00
Hajime Hoshi
738f13f73f internal/ui: remove unnecessary build tags 2023-10-09 23:39:06 +09:00
Hajime Hoshi
f269b61903 internal/atlas: introduce a managed byte slice pool
A managed byte slice from the new byte slice pool has a function
to release and put it back to the pool explicitly, and this doesn't
rely on GCs.

Updates #1681
Closes #2804
2023-10-09 20:32:32 +09:00
Hajime Hoshi
34d577a5ff Revert "internal/atlas: reintroduce a byte pool"
This reverts commit 7e17b25c56.

Reason: the current byte pool suppresses allocations to some extent, but doesn't suppress GCs.

Updates #1681
2023-10-09 14:40:05 +09:00
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