Hajime Hoshi
161771cc99
graphicsdriver/opengl: Refactoring
2019-11-20 12:23:45 +09:00
Hajime Hoshi
52f6be2639
graphicsdriver/opengl: Fix suspicious GL function calls
...
Before this change, the pixel object buffer is unbound just after
getting a pointer by glMapBuffer. This seemed suspicious.
This change fixes to do all pixel manipulations once between
glMapBuffer and glUnmapBuffer without changing a bound buffer.
This might fix a wrong rendering on some machines, but I am not
sure.
Updates #993
2019-11-20 02:41:34 +09:00
Hajime Hoshi
95d3561a3a
packing: Better panic message
2019-11-18 00:27:34 +09:00
Hajime Hoshi
63f9ac2ccc
packing: Add Rollback/CommitExntension
...
This enables to dry-run to extend pages without cloning.
Fixes #990
2019-11-18 00:23:13 +09:00
Hajime Hoshi
61839506d8
packing: Add an extending count at Extend
2019-11-17 23:39:16 +09:00
Hajime Hoshi
74902d47af
graphicsdriver/metal/mtl: Bug fix: need to link CoreGraphics as of Catalina
...
Fixes #989
2019-11-17 22:59:21 +09:00
Hajime Hoshi
725cc22200
uidriver/mobile: Rename Render -> Update
2019-11-17 21:52:06 +09:00
Hajime Hoshi
92e056c508
uidriver/glfw: Bug fix: an unexpected window at launching
...
Fixes #986
2019-11-17 19:58:44 +09:00
Hajime Hoshi
3aaeee78dd
graphicsdriver/metal: Reduce flushing at ReplacePixels
2019-11-17 16:00:24 +09:00
Hajime Hoshi
800b98a0c6
ui: Bug fix: a window was alwasy 'unfocused' on Windows
...
There is an issue in GLFW that a window was recognized as unfoces
on Windows (glfw/glfw#1573). As a workaround, skip the logic for
an unfocused window on Windows. On Windows, even if a window is in
another workspace, vsync works. Then there seems no problem.
Fixes #987
2019-11-17 14:10:38 +09:00
Hajime Hoshi
4120e868be
graphicsdriver/opengl: Remove unused functions
2019-11-17 05:10:22 +09:00
Hajime Hoshi
acc933b7c3
graphicsdriver/opengl: Experimental PBO implementation
...
This change is an experimental implementation to use Pixel Buffer
Objects. This reduces calls of glTexSubImage2D.
This works only on desktops. Unfortunately WebGL does not have
this features. Mobiles can have PBO as of OpenGL ES 3.
Updates #976
2019-11-17 05:01:43 +09:00
Hajime Hoshi
16b3a5c296
buffered: Bug fix: Needed to copy pixels when buffering
...
Updates #983
2019-11-16 16:39:02 +09:00
Hajime Hoshi
e42cff071c
restorable: Merge two 'copy' into one
...
Fixes #983
2019-11-16 02:10:53 +09:00
Hajime Hoshi
aa6fc67736
Revert "graphics: Avoid all copying pixels"
...
This reverts commit c60a32a479
.
Reason: This breaks backward comptibility and it was not obvious how to fix examples.
2019-11-16 02:04:46 +09:00
Hajime Hoshi
c60a32a479
graphics: Avoid all copying pixels
...
This is a breaking change: ReplacePixels now takes the ownership
of the given pixels.
Fixes #983
2019-11-16 01:51:36 +09:00
Hajime Hoshi
f1091910bd
Revert "graphicscommand: Remove copying pixels"
...
This reverts commit 339a96b7e6
.
Reason: this causes panic on extending textures
2019-11-16 00:43:22 +09:00
Hajime Hoshi
339a96b7e6
graphicscommand: Remove copying pixels
...
Now ReplacePixels takes the ownership.
Updates #983
2019-11-16 00:29:37 +09:00
Hajime Hoshi
bfd5774faf
graphicsdriver/glfw: Bug fix: CPU was busy when the window is hidden
...
Fixes #982
2019-11-14 23:11:36 +09:00
Hajime Hoshi
8c54cf639a
graphicsdriver/opengl: Reduce glFlush calls
...
Fixes #981
2019-11-14 01:21:08 +09:00
Hajime Hoshi
c2eae69b47
graphicscommand: Refactoring
2019-11-14 00:08:44 +09:00
Hajime Hoshi
a1a294df72
uidriver/glfw: Bug fix: Freeze on Wayland
...
Fixes #974
2019-11-10 19:26:49 +09:00
Hajime Hoshi
572780ed6d
uidriver/glfw: Bug fix: errors are ignored at (*UserInterface).run
...
Updates #978
2019-11-10 19:09:41 +09:00
Hajime Hoshi
d43e203ccf
uidriver/glfw: Remove a redundant 'if' branch
2019-11-10 17:34:14 +09:00
Hajime Hoshi
63f73ddd75
web: Bug fix: iPad was not recognized as iOS
...
Fixes #979
2019-11-10 16:52:49 +09:00
Hajime Hoshi
8d12446dbe
buffered: Bug fix: reset the flag when invalidating the pending pixels
...
Updates #977
2019-11-09 05:54:27 +09:00
Hajime Hoshi
ec59e9b9ae
buffered: Bug fix: Resolve pixels only when Set is called
...
Fixes #977
2019-11-09 05:43:36 +09:00
Hajime Hoshi
ddba7f0ee0
driver: Bug fix: unused import
2019-11-04 03:15:09 +09:00
Hajime Hoshi
889bc12093
driver: Remove IsPlayground
2019-11-04 03:04:00 +09:00
Hajime Hoshi
3c29fbdce2
jsutil: Refactoring: SliceToTypedArray -> CopySliceToJS
...
This unifieslocations of the temporary buffer.
2019-10-30 00:35:48 +09:00
Hajime Hoshi
31f56efd75
jsutil: Add doc.go
...
This is to avoid no-Go-files error on TravisCI.
https://travis-ci.org/hajimehoshi/ebiten/builds/603539948
2019-10-28 01:28:50 +09:00
Hajime Hoshi
49a5a2bf4e
uidriver/js: Bug fix: Needed to initialize pseudoScale with the given scale
...
Updates #960 , #973
2019-10-27 17:16:49 +09:00
Hajime Hoshi
06bbc08e9b
web: Bug fix: IsAndroidChrome always returned true
2019-10-24 00:20:33 +09:00
Hajime Hoshi
e7611139c3
uidriver/js: Bug fix: Watch the state regularly instead of events
...
visibilitystate is sometimes not called and in this case the app
does not come back.
This fix creates another goroutine to watch the state, and remove
event handlers.
Fixes #961
2019-10-21 00:04:07 +09:00
Hajime Hoshi
e578b0bd49
graphicscommand: Bug fix: Needed to adjust vertices when highp is not available
...
Fixes #962
2019-10-19 17:05:04 +09:00
Hajime Hoshi
43a8881ab8
uidriver/ui: Reduce calls of syscall/js
2019-10-16 02:56:58 +09:00
Hajime Hoshi
72248fa3ef
ui: Bug fix: Focus canvas explicitly on input
...
Fixes #961
2019-10-15 23:57:16 +09:00
Hajime Hoshi
75721e6fc1
ui: Auto scaling on browsers
...
This change forces Ebiten apps on browsers 'fullscreen' mode.
After this change, 'scale' value is no longer used on browsers.
Note that this breaks backward compatibility, but as long as the
game works in an iframe, this should not be problematic.
Fixes #960
2019-10-15 00:02:02 +09:00
Hajime Hoshi
30c185f254
uidriver/js: Bug fix: context must not be accessed before loop
2019-10-14 02:41:04 +09:00
Hajime Hoshi
5027bc1af5
buffered: Allow Set before the game runs
...
Fixes #949
2019-10-12 03:13:29 +09:00
Hajime Hoshi
cbe4844fa0
Fix misspellings
2019-10-12 01:10:53 +09:00
Hajime Hoshi
4bfe60fb8a
graphicsdriver/metal: Bug fix: SetFragmentBytes must be called anytime
...
Fixes #954
2019-10-10 03:13:55 +09:00
Hajime Hoshi
3c976eae02
cmd/ebitenmobile: Use Metal on iOS
...
The emulators still use OpenGL.
Fixes #737
2019-10-09 02:13:47 +09:00
Hajime Hoshi
4088de5349
graphicsdriver/opengl/gl: Fix go-vet errors on Windows
...
Updates #889
2019-10-06 23:19:59 +09:00
Hajime Hoshi
3a0f8655e6
graphicsdriver/opengl/gl: Indentation
2019-10-06 23:02:15 +09:00
Hajime Hoshi
378be6be80
graphicsdriver/opengl/gl: Remove unused functions
...
This improves `go vet` results.
Updates #889
2019-10-06 22:49:38 +09:00
Hajime Hoshi
0d56207672
graphicsdriver/opengl/gl: Remove unnecessary consts
2019-10-06 04:27:57 +09:00
Hajime Hoshi
7e7751bd43
restorable: Performance tuning
...
This is based on the result of examples/set (Wasm).
2019-10-04 02:02:36 +09:00
Hajime Hoshi
382f6365fd
shareable: Avoid defer for performance
2019-10-04 01:52:27 +09:00
Hajime Hoshi
38ee9113ee
graphicsdriver/opengl/gl: Remvoe PtrOffset
...
Updates #889
2019-10-01 01:48:42 +09:00
Hajime Hoshi
ffbdda9a25
shareable: Avoid defer for performance
2019-09-29 03:50:43 +09:00
Hajime Hoshi
907302c440
graphicscommand: Keep the capacity at q.commands
2019-09-29 03:23:40 +09:00
Hajime Hoshi
86b4e9ffeb
restorable: Bug fix: Do not mutate graphics.QuadIndices
2019-09-29 02:57:11 +09:00
Hajime Hoshi
6c8c064a58
restorable: Add TestMutateSlices
2019-09-29 02:36:06 +09:00
Hajime Hoshi
9cb631e30f
Reland: graphics: Reuse vertices backend and reduce allocating
...
This is a reland of 74f1e5519f
.
The vertex slice is now copied before saving as the drawing
history items.
2019-09-29 01:36:00 +09:00
Hajime Hoshi
4feb0a4f3e
restorable: Bug fix: indices has to be copied
2019-09-29 01:30:26 +09:00
Hajime Hoshi
5e6bdc25e5
gofmt
2019-09-28 23:09:20 +09:00
Hajime Hoshi
f873b66267
graphicscommand: Reduce calling InternalWidth/InternalHeight
2019-09-28 23:03:11 +09:00
Hajime Hoshi
791f96f980
graphicscommand: Reduce division operators
2019-09-28 02:31:04 +09:00
Hajime Hoshi
7bb2895415
clock: Avoid calling (js.Value).Get() for performance
2019-09-28 01:47:48 +09:00
Hajime Hoshi
af6bda48c3
Reduce division operators
...
It looks like runtime.wasmDiv takes account for a big part at CPU
usages with examples/sprites.
2019-09-27 03:29:10 +09:00
Hajime Hoshi
3cf867035d
buffered: Do not delay commands if possible
...
Delaying commands causes memory allocations, which can be heavy
especially on browsers.
This avoids to use 'defer' for performance.
2019-09-27 03:27:47 +09:00
Hajime Hoshi
3291ec51bb
buffered: Use a raw function to avoid allocating structs
2019-09-27 00:37:31 +09:00
Hajime Hoshi
fc3e8bebe4
Use 0-length slice instead of nil to keep capacities
2019-09-27 00:34:55 +09:00
Hajime Hoshi
59333ba1ad
jsutil: Avoid allocating ArrayBuffer unnecessarily
2019-09-26 23:59:00 +09:00
Hajime Hoshi
9a42b264fd
web: Speed optimization
2019-09-26 22:11:16 +09:00
Hajime Hoshi
899fc38d23
Add wasm test with wasmbrowsertest
...
Fixes #881
2019-09-23 02:45:37 +09:00
Hajime Hoshi
33c7f39f0f
graphicsdriver/opengl/gl: Exclude all the files for Wasm
...
Fixes #938
2019-09-23 00:42:54 +09:00
Hajime Hoshi
79b32c7601
graphics: Add buffered package
...
Moved the command queue to the package.
2019-09-21 22:34:37 +09:00
Hajime Hoshi
0a872b342a
shareable: Change the argument to color.RGBA at Fill
...
The argument will be copied explicitly.
2019-09-21 21:16:46 +09:00
Hajime Hoshi
9d867850dc
shareable: Rename Dispose -> MarkDisposed
...
Before this change, it was not clear that shareable's Dispose can
be called from finalizers since finalizers must not be blocked by
a mutex. Actually Dispose could be locked and must not be called
from finalizers.
This change renames the function to avoid confusion of the API,
and make the function available from finalizers.
2019-09-21 20:05:21 +09:00
Hajime Hoshi
053f5a0ce7
shareable: Refactoring
2019-09-21 19:15:49 +09:00
Hajime Hoshi
1c2c932c6c
graphics: Remove MakeVolatile/IsVolatile
2019-09-21 14:53:52 +09:00
Hajime Hoshi
06d198cc0e
shareable: Rename files
2019-09-21 06:09:52 +09:00
Hajime Hoshi
bc4d092710
shareable: Remove (*Image).Size()
2019-09-21 05:56:34 +09:00
Hajime Hoshi
3023cc69c3
restorable: Remove (*Image).Size()
2019-09-21 05:40:05 +09:00
Hajime Hoshi
629d58b93a
graphics: Remove PutQuadVertices
2019-09-21 04:14:25 +09:00
Hajime Hoshi
6095cd965b
shareable: Remove (*Image).PutVertex
2019-09-21 04:01:44 +09:00
Hajime Hoshi
ea52aa52bb
shareable: Fix tests
2019-09-21 03:58:50 +09:00
Hajime Hoshi
d491cab465
restorable: Remvoe unused arguments
2019-09-21 03:44:45 +09:00
Hajime Hoshi
9e78d8c656
graphicscommand: Bug fix: Fix tests
2019-09-21 03:36:48 +09:00
Hajime Hoshi
6fa7d59468
shareable: Remove lock from (*Image).PutVertex
...
Updates #941
2019-09-21 02:17:14 +09:00
Hajime Hoshi
70a38dc09a
graphicscommand: Move pixel->texel conversion to graphicscommand
2019-09-20 23:59:04 +09:00
Hajime Hoshi
915ed91f25
restorable: Remove (*Image).PutVertices
2019-09-20 23:44:09 +09:00
Hajime Hoshi
93dc9ad589
restorable: Refactoring: Remove (*Image).internalSize()
2019-09-20 01:55:18 +09:00
Hajime Hoshi
e0790ee950
Revert "graphics: Delay draw commands and execute them only when needed"
...
This reverts commit 0c70823f27
.
Reason: Switching apps on Android sometimes broke the screen
2019-09-19 01:18:53 +09:00
Hajime Hoshi
0c70823f27
graphics: Delay draw commands and execute them only when needed
...
This change introduces a queue for delayed graphics commands.
When an image's pixels are retrieved or the screen is rendered,
Ebiten calculates the set of the necessary draw commands and
execute them.
This reduces the number of draw calls especially for the launching
phase.
Fixes #921
2019-09-19 01:09:48 +09:00
Hajime Hoshi
845f2bdeb8
Remove unneeded comments
2019-09-18 10:49:20 +09:00
Hajime Hoshi
439599a145
mobile/ebitenmobileview: Bug fix: ebitenmobile should be ignored on non-mobile platforms
2019-09-18 10:46:35 +09:00
Hajime Hoshi
695c93efd6
event: Add a converting function from driver.Event to event.Event
...
Update #926
2019-09-12 21:59:13 +09:00
Hajime Hoshi
529ab5f191
event: Auto-generate event definitions ( #935 )
...
As event package needs to depend on driver package, and drvier
package needs to emit events, we need event definitions in both
side. This change add a generator for event definitions.
Updates #926
2019-09-12 11:32:20 +09:00
Hajime Hoshi
3fb9c02e2f
graphicsdriver/metal: Bug fix: Use correct pixel format for the screen
2019-09-08 03:52:29 +09:00
Hajime Hoshi
52900fac79
Move back driver getters to ebiten package
2019-09-03 01:46:11 +09:00
Hajime Hoshi
25a2bf3c1f
event: Add Modifier
...
Modifier keys are selected of a common set of GLFW keys [1] and Web
API keys [2].
This change also renames the member Modifiers to Modifer to
follow the convension (e.g., [3]).
Updates #926
[1] https://www.glfw.org/docs/latest/group__mods.html
[2] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
[3] https://godoc.org/golang.org/x/tools/go/packages#Config
2019-09-03 01:12:50 +09:00
Hajime Hoshi
05f4ca2a4d
input: Refactoring: nameToJSKeyCodes -> nameToJSKeyCode
2019-09-02 00:30:17 +09:00
Hajime Hoshi
83b2d4b112
input: driver.Key now distinguishes left/right modifier keys
...
This is a preparation for event package, that will have key enum.
Updates #926
2019-09-01 23:49:00 +09:00
Hajime Hoshi
19103dcfeb
graphicscommand: Bug fix: Adjust vertices to avoid jaggy
...
If vertices are (almost) half-integer values, adjust them to avoid
jaggy.
Fixes #929 .
2019-08-27 23:18:08 +09:00
Hajime Hoshi
22c31da6c1
restorable: Bug fix: Do not include emptyImage into the dependency graph
...
Instead, add baseColor to Pixels and use it when restoring.
Fixes #928 .
2019-08-27 08:17:14 +09:00
Hajime Hoshi
76330c492c
shareable: Refactoring
2019-08-26 00:32:30 +09:00
Hajime Hoshi
d2312f1450
shareable: Lock before BeginFrame
...
This make package shareable more consistent. The mutex is lock
after EndFrame and before BeginFrame, and the similar rule will be
applied at launching (BeginFrame unlocks the lock in any cases).
Instead, package ebiten queues image operations if BeginFrame and
doesn't create provisional non-shared images. This should improve
performance at launching since this reduces the number of draw
calls, especifally for creating new images.
Updates #879 .
Updates #921 .
2019-08-25 18:12:04 +09:00
Hajime Hoshi
7907bb43ce
shareable: Refactoring: reduce sync.Once
2019-08-25 17:32:32 +09:00
Hajime Hoshi
b53279b1e1
shareable: Remove InitializeGraphicsDriverState
2019-08-25 17:28:59 +09:00
Hajime Hoshi
3960a4bbdf
restorable: Add (*Image).Fill
...
This resets the infomation for restoring if possible. This makes
it more efficient to use offscreens.
2019-08-25 02:57:44 +09:00
Hajime Hoshi
856e2df1ec
web: Bug fix: compile error on browsers
2019-08-25 02:40:28 +09:00
Hajime Hoshi
b8eeded538
graphics: Remove 'resetRestoringState'
...
This is basically a revert of 2d079b123f
As filling can happen on a part of a shared image, resetting the
restoring state was wrong.
2019-08-25 02:18:51 +09:00
Hajime Hoshi
e931494c66
shareable: Allocate the screen framebuffer image lazily
...
This improves consistency.
2019-08-25 00:43:29 +09:00
Hajime Hoshi
ef56d0a535
Refactoring: isRunning -> isImageAvailable
2019-08-25 00:14:37 +09:00
Hajime Hoshi
42c70e48ff
uidriver/mobile: No need to use sync.Once
...
devicescale.At is already locked by a mutex and keeps values in its
cache.
2019-08-19 02:32:53 +09:00
Hajime Hoshi
2c23860226
uidriver/mobile: Prefer sync.Once to sync.Mutex
2019-08-19 02:25:01 +09:00
Hajime Hoshi
d7aa24c295
uidriver/glfw: Bug fix: Wrong usage of RWLock
2019-08-19 01:47:55 +09:00
Hajime Hoshi
4d0e23c460
uidriver/glfw: Reduce mutex to avoid potential deadlock
2019-08-19 01:01:43 +09:00
Hajime Hoshi
25ac788ee6
uidriver/mobile: Reduce mutex to avoid potential deadlock
2019-08-19 00:32:52 +09:00
Hajime Hoshi
6cd74a9f4d
uidriver/mobile: Simplify updating logic
2019-08-19 00:13:56 +09:00
Hajime Hoshi
ccacc4a0b8
restorable: Refactoring: Make (*Image).Size() available even after disposing
2019-08-16 02:36:27 +09:00
Hajime Hoshi
6ba6cdc721
restorable: Bug fix: Dispose all the image before start restoring
...
A current texture ID and a new texture ID can be duplicated.
Disposing part of textures and creating textures at the same time
can make contradicted situation.
2019-08-16 01:00:09 +09:00
Hajime Hoshi
2cb1ea6fb4
restorable: Remove unnecessary call of clearImage
...
clearImage is already called in any cases.
2019-08-15 22:40:37 +09:00
Hajime Hoshi
0cbf126b80
restorable: Set nil to the image after disposing
...
This prevents a bug that a disposed image is used by clearImage.
2019-08-15 22:35:28 +09:00
Hajime Hoshi
9467a67136
restorable: Bug fix: Skip clearImage on emptyImage when restoring
2019-08-15 21:53:43 +09:00
Hajime Hoshi
01297fe015
graphicsdriver: Fix a panic message
2019-08-15 21:29:37 +09:00
Hajime Hoshi
900af20617
shareable: Misspelling
2019-08-15 12:59:50 +09:00
Hajime Hoshi
f835c8ce7f
uidriver/mobile: Convert a panic to an error for handling
...
This is a dirty hack but there is no other way to handle panics to
report to Crashlytics.
2019-08-13 11:30:50 +09:00
Hajime Hoshi
4373bd8b89
restorable: Unify locks with shareable's backendsM and fix the deadlock
...
This change should make Image operations cuncurrent safe.
Updates #913
Fixes #915
2019-08-13 00:49:47 +09:00
Hajime Hoshi
14ce0c1bcb
restorable: Bug fix: Lock before resolving stale states
2019-08-12 23:31:17 +09:00
Hajime Hoshi
9dd501720e
restorable: Bug fix: Unlocking should happen after restoring
2019-08-12 23:19:03 +09:00
Hajime Hoshi
1f66c155ae
shareable: Bug fix: Lock when backends are allocated
2019-08-12 22:48:48 +09:00
Hajime Hoshi
cbf36734f8
shareable: Bug fix: mutex should not be used at finalizers
...
Updates #913
2019-08-12 21:01:33 +09:00
Hajime Hoshi
28dd2f6e19
shareable: Refactoring: only finalizers have to be cared
...
Only finalizers are problematic since they can stop everything,
but other things are not. Let's care finalizers and just use
regular locks.
Updates #913
2019-08-12 20:17:40 +09:00
Hajime Hoshi
eb5ab57cdc
shareable: Bug fix: Defer Dispose so that ClearPixels doesn't affect other images later
...
Updates #913
2019-08-12 19:37:23 +09:00
Hajime Hoshi
613b9bc02a
restorable: Panic if an image is stale when restoring
2019-08-12 17:45:43 +09:00
Hajime Hoshi
1156dfdc7e
restorable: Lock At operation between frames
...
Updates #913
2019-08-12 16:54:17 +09:00
Hajime Hoshi
d2719188b4
restorable: Do not call resolveDeferred at the end of a frame
...
This does not make sense.
2019-08-12 16:48:04 +09:00
Hajime Hoshi
628a8d559a
restorable: Bug fix: Dispose should be deferred between frames (again)
...
Updates #913
2019-08-12 16:27:07 +09:00
Hajime Hoshi
4717baa840
restorable: Bug fix: Dispose should be deferred between frames
...
Updates #913
2019-08-12 16:26:07 +09:00
Hajime Hoshi
1a2a0aeb76
restorable: Defer operations between the end and the beginning of frames
...
Updates #913
2019-08-12 16:08:21 +09:00
Hajime Hoshi
df8fdc855a
Bug fix: Compile error on GOOS=linux CGO_ENABLED=0
2019-08-01 08:17:58 +09:00
Hajime Hoshi
2003b7d292
Fix misspellings
2019-08-01 01:07:23 +09:00
Hajime Hoshi
de915a1736
Move driver getters to graphicsdriver/uidriver packages
...
This enables to add internal functions to these packages so that
the driver selector logics can be modified.
2019-08-01 00:40:59 +09:00
Hajime Hoshi
4a9a7f936d
Make go vet a little happier on macOS
...
Updates #889
2019-07-22 20:16:22 +09:00
Hajime Hoshi
e6a88a7d1f
uidriver/glfw: Add panic in the case of Windows Remote Desktop
...
Updates #903
2019-07-21 23:41:55 +09:00
Hajime Hoshi
b348223297
restorable: Refactoring
...
Reduces accesses to Image member from outside.
2019-07-21 16:44:00 +09:00
Hajime Hoshi
434802af6e
restorable: Reland: Refactoring
...
This is reland of 7917b423f4be9494125c8de76a8a3def15561594
Fixed a bug that an image passed to Apply might not be initialized,
and there was no correct way to treat such an image. Now Apply
accepts only an initialized image.
2019-07-21 14:18:27 +09:00
Hajime Hoshi
a3b35e5fba
Revert "restorable: Refactoring"
...
This reverts commit 777cab5cc3
.
Reason: Test failures: https://travis-ci.org/hajimehoshi/ebiten/builds/561553656
2019-07-21 14:03:14 +09:00
Hajime Hoshi
777cab5cc3
restorable: Refactoring
2019-07-21 11:05:02 +09:00
Hajime Hoshi
0cf11d9af8
graphicscommand: Improve debug messages
...
This change also enables to dump volatile images.
2019-07-20 14:31:28 +09:00
Hajime Hoshi
2d079b123f
restorable: Add ResetRestoringState to reset the state
...
After Fill command, the image doesn't have to keep the restoring
information. Now Fill command is as same as DrawTriangles, there
is no way for restorable.Image to know whether it can reset the
state or not. ResetRestoringState clears the state explicitly.
2019-07-20 14:04:02 +09:00
Hajime Hoshi
3f6628f1cc
restorable: Replace Fill with Clear
2019-07-20 05:00:05 +09:00
Hajime Hoshi
0dc1d0eba5
graphics: Clear/Fill is now implemented with DrawImage
...
Only clearing the screen still requires the special method.
2019-07-20 04:34:42 +09:00
Hajime Hoshi
0bf12d5519
graphics: Unify dumping logic
2019-07-20 01:46:33 +09:00
Hajime Hoshi
d78db1738d
graphicscommand: Fix comments
2019-07-20 01:22:13 +09:00
Hajime Hoshi
94852b07b2
graphics: Use ID for dumped internal images
...
Updates #900
2019-07-19 23:41:56 +09:00
Hajime Hoshi
0793d35c40
graphicscommand: Improve debug messages
...
Fixes #900
2019-07-19 23:35:13 +09:00
Hajime Hoshi
38a1ee7f57
restorable: Split pixel records into regions
...
Fixes #897
2019-07-19 10:59:48 +09:00
Hajime Hoshi
b4dddd330a
restorable: Refactoring: Use width/height instead of length at Pixels
2019-07-17 23:20:03 +09:00
Hajime Hoshi
efb6f9c453
graphicscommand: Remove CopyPixels command
...
This is an optimization. This change enables to avoid reading
pixels from GPU when extending an image.
Updates #897
2019-07-17 23:19:57 +09:00
Hajime Hoshi
736a840d53
restorable: More restricted Extend
...
As a side effect, ReplacePixels always record pixels even when
restoring is not needed. As CopyPixels reads pixels in any cases,
this shortcut was originally useless.
2019-07-17 22:15:37 +09:00
Hajime Hoshi
353d81fd58
restorable: Rename NewImageFromImage to Extend
2019-07-17 03:32:08 +09:00
Hajime Hoshi
91a4329f0d
restorable: Disallow ReplacePixels for a part after Fill
...
This simplifies Pixels struct. This is a preparation to change
how to record pixels.
Updates #897
2019-07-17 03:15:03 +09:00
Hajime Hoshi
2735f4eddc
restorable: Fix comments
2019-07-17 02:42:26 +09:00
Hajime Hoshi
349a290aa3
restorable: Refactoring
2019-07-16 03:08:26 +09:00
Hajime Hoshi
8ae2fef817
restorable: Refactoring: Do not have to update basePixels in some cases
...
If there is no draw-traiangles command, the image can keep its
basePixels.
2019-07-16 02:48:52 +09:00
Hajime Hoshi
6d20e3f951
restorable: Add assertion at fillImage
2019-07-16 02:18:52 +09:00
Hajime Hoshi
2b632d0707
restorable: Remove Pixels.Slice()
2019-07-16 02:03:15 +09:00
Hajime Hoshi
f3fa535afb
restorable: Refactoring: Disallow nil at ReplacePixels
2019-07-16 01:44:56 +09:00
Hajime Hoshi
84aabd075f
restorable: Use DrawTriangles to restore the image
...
This can avoid allocating a big byte slice.
2019-07-15 05:03:46 +09:00
Hajime Hoshi
7e4e9cc893
restorable: Refactoring
2019-07-15 04:17:52 +09:00
Hajime Hoshi
701c4eeb7c
restorable: Fix comments
2019-07-15 03:24:18 +09:00
Hajime Hoshi
a7e7e007ca
restorable: Bug fix: PutQuadVertices should take the source image
...
Fixes #898
2019-07-15 03:10:03 +09:00
Hajime Hoshi
aee26eec1e
restorable: Refactoring: Replace CopyPixels with NewImageFromImage
2019-07-15 02:04:23 +09:00
Hajime Hoshi
fd9e376ff6
restorable: Add ClearPixels
...
This hides the implementation details of allocating byte slice.
This change also adds comments about #897 .
2019-07-10 02:39:36 +09:00
Hajime Hoshi
5ec2f66524
shareable: Bug fix: Updated maxSize wrongly
...
Updates #892
2019-07-04 01:57:04 +09:00
Hajime Hoshi
3a0dbd3977
graphicsdriver/opengl: Use sync.Once for concurrent safety
2019-07-04 01:15:51 +09:00
Hajime Hoshi
6b7f21f0c8
driver: Add Graphics.MaxImageSize and use it
...
There are some devices that cannot accept 4096x4096 pixels
textures. Get the maximum size and use it.
Fixes #892
2019-07-04 01:10:11 +09:00
Hajime Hoshi
51951d6087
glfw: Take a byte pointer instead of a uintptr at the callback
...
Make 'go vet' happy on Windows.
2019-06-27 22:57:44 +09:00
Hajime Hoshi
9a0cefedce
glfw: Bug fix: Missed to initialize a member of VidMode on Windows
2019-06-27 03:38:14 +09:00
Hajime Hoshi
480c5527a3
ui/mobile: Move 'DoWork' logic to ui/mobile package
...
This simplifies driver.Graphics interface, and will make it easy
to use another graphics driver than OpenGL.
2019-06-27 00:32:37 +09:00
Hajime Hoshi
e499535728
graphics: Move functions to the package ebiten
2019-06-26 22:23:09 +09:00
Hajime Hoshi
ed09406655
graphicscommand: Bug fix: wrong adjustment of texels
...
Fixes #887
2019-06-26 11:45:09 +09:00
Hajime Hoshi
f40798b586
graphics: Move const definitions to driver package
...
Let's keep 'graphics' package as a package for utility functions
or testable functions as much as possible.
2019-06-26 01:05:13 +09:00
Hajime Hoshi
9963ae332e
graphics: Remove FilterDefault from internal/graphics
2019-06-26 00:33:30 +09:00
Hajime Hoshi
847a8b4d53
graphics: Refactoring
2019-06-26 00:18:40 +09:00
Hajime Hoshi
93c31654da
graphicscommand: Refactoring
2019-06-25 23:55:33 +09:00
Hajime Hoshi
09d473ea1b
restorable: Add comments
2019-06-25 23:42:18 +09:00
Hajime Hoshi
7e0dee0730
graphicscommand: Bug fix: Use graphics.InternalImageSize before specifying the size
...
Fixes #887
2019-06-25 22:47:37 +09:00
Hajime Hoshi
de4b439228
uidriver/glfw: Bug fix: Thread must be set before the loop starts
...
The graphics driver needs to have its thread before the loop
starts, or the driver crashes (nil reference) when it tries to use
the thread.
2019-06-24 02:03:14 +09:00
Hajime Hoshi
0cc49b6923
shareable: Refactoring
2019-06-23 11:33:17 +09:00
Hajime Hoshi
7a399c1b82
shareable: Update page sizes dynamically
...
Also, all the images cannot use the shareable backends before the
game starts, but it is expected that read-only images will use
shareable backends later.
Fixes #879
2019-06-22 23:05:28 +09:00
Hajime Hoshi
f48a72a43e
shareable: Refactoring: Remove PutQuadVertices
2019-06-22 21:13:44 +09:00
Hajime Hoshi
5d4f150094
shareable: Add comments about highp
...
Updates #879
2019-06-22 17:41:19 +09:00
Hajime Hoshi
9bff33472a
driver: Add (Graphics).HasHighPrecisionFlaot
...
This enables to determine whether vertices should be adjusted or
not.
Fixes #879
2019-06-22 14:57:53 +09:00
Hajime Hoshi
cddb93b9f6
graphicscommand: Move the texel adjustment logic to graphicscommand package
...
This is a preparation for #879 . The value of the texel adjustment
depends on the graphics driver (GLSL float precisions), and this
can be accessed only after the run loop runs. The place where
graphics commands are executed seems an appropriate place.
Updates #879
2019-06-22 03:52:51 +09:00
Hajime Hoshi
f3cdb0537b
graphics: Move the vertices backend to ebiten package
...
Now restorable/sharable packages cannot use the same vertices
backend, but I think this won't affect the performance
significantly.
2019-06-22 00:02:22 +09:00
Hajime Hoshi
69ebc481e8
graphics: Refactoring: Unify PutVertex and PutQuadVertices implementation
2019-06-21 23:49:05 +09:00
Hajime Hoshi
8dc2301e54
thread: Bug fix: Queue funcs instead of panic
...
Now the thread object is created at (*UserInterface).Run, we don't
have to care whether the (main) thread is started or not when
Call is called. Admit queueing the functions.
Fixes #884
2019-06-21 11:10:27 +09:00
Hajime Hoshi
3eee4754c5
graphics: Use the common vertices backend for PutVertex
2019-06-21 02:30:58 +09:00
Hajime Hoshi
008de78cec
graphics: Refactoring: Change QuadVertices -> PutQuadVertices for consistency
2019-06-21 02:20:31 +09:00
Hajime Hoshi
c7ab66e0e1
graphicsdriver/metal: Move MTLDevice and CAMetalLayer to the other struct
...
On iOS, they are given or included in a MTKView and we don't have
to (or should not) make them. Let's move them to a different
struct.
2019-06-19 02:17:45 +09:00
Hajime Hoshi
57d493a549
web: Optimization: Cache user agent value
2019-06-17 10:56:50 +09:00
Hajime Hoshi
4396978d4b
jsutil: Refactoring
2019-06-17 10:48:36 +09:00
Hajime Hoshi
34187d03a8
jsutil: Remove unused functions
2019-06-15 01:34:28 +09:00
Hajime Hoshi
c52e043006
Add jsutil package for new API of Go 1.13
...
Audio part still cannot be compiled due to Oto.
Fixes #878
2019-06-15 00:49:57 +09:00
Hajime Hoshi
a19bf4214b
Improve testability on Wasm
2019-06-14 23:59:38 +09:00
Hajime Hoshi
3af351a2aa
graphicsdriver/metal: Make this compilable on iOS
...
This change adds #ifs to enable to compile the driver on iOS.
This also removes BOOL, which can be a duplicated definition.
C's _Bool does not work well with Cgo. Use uint8_t instead for
boolean values.
2019-06-09 05:51:10 +09:00
Hajime Hoshi
67230ec499
graphicsdriver/metal/mtl: Remove CopyAllDevices
...
CopyAllDevices is not used at Ebiten, and not defined on iOS.
2019-06-09 04:32:48 +09:00
Hajime Hoshi
fa377ce9d1
mobile: Refactoring
2019-06-08 01:57:13 +09:00
Hajime Hoshi
449679665b
thread: Use standard context.Context
2019-06-08 01:46:06 +09:00
Hajime Hoshi
1e93d9c699
graphicsdriver/opengl: Use context.Context when possible
2019-06-08 01:30:15 +09:00
Hajime Hoshi
9c283d45b4
thread: started should be reset after Loop
2019-06-06 00:25:57 +09:00
Hajime Hoshi
85dcafe176
thread: Rename Run -> Call
2019-06-06 00:25:57 +09:00
Hajime Hoshi
15a5896efd
thread: Rename mainthread -> thread and add struct Thread
...
This enables thread available not only for the main thread but also
any threads.
This is a preparation for iOS Metal, that runs drawing functions on
a particular thread.
Updates #737
2019-06-06 00:25:53 +09:00
Hajime Hoshi
9b82ec41de
graphicsdriver/opengl: Refactoring: Remove unused variables
2019-06-04 02:11:14 +09:00
Hajime Hoshi
dbd5e25b89
uidriver/mobile: Bug fix: Error must be handled whenever possible
...
Updates #860
2019-06-01 03:12:04 +09:00
Hajime Hoshi
2dc6042858
uidriver/mobile: Remove time-out logic
...
This was introduced at 8121b2102f
.
I am not sure the reason.
As Render must sync with updating and never returns until updating
finishes, the time-out case should never be chosen.
2019-06-01 01:47:01 +09:00
Hajime Hoshi
13ce1c28b4
uidriver/mobile: Use timer.NewTimer instead of time.After
...
timer.NewTimer is much better than time.After in terms of memory
usage. See also https://golang.org/pkg/time/#After
2019-06-01 01:30:08 +09:00
Hajime Hoshi
ca907e2846
uidriver/mobile: Refactoring
2019-06-01 00:21:59 +09:00
Hajime Hoshi
ffb9871839
restorable: Bug fix: Skip the screen image to check invalidation
2019-05-28 11:29:34 +09:00
Hajime Hoshi
24822c0a10
restorable: Rename clear -> clearForInitialization
2019-05-26 23:13:54 +09:00
Hajime Hoshi
b41a333230
restorable: Reland: Refactoring
2019-05-26 22:16:25 +09:00
Hajime Hoshi
3ab56778e7
graphicscommand: Bug fix: restorable should be enabled if not sure
...
init function in restorable package might reach this condition,
and for fail-safe, restoring should be enabled.
2019-05-26 22:15:41 +09:00
Hajime Hoshi
83254d30d9
restorable: Bug fix: semantic inconsistency at forceRestoring
2019-05-26 21:40:10 +09:00
Hajime Hoshi
da4fabeaa5
Revert "restorable: Refactoring"
...
This reverts commit 3c0cd47b1f
.
Reason: Crash on macOS
2019-05-26 21:30:08 +09:00
Hajime Hoshi
3c0cd47b1f
restorable: Refactoring
2019-05-26 21:24:44 +09:00
Hajime Hoshi
fcb5554aa1
driver: Add Graphics.NeedsRestoring
2019-05-26 19:46:12 +09:00
Acid147
21abd85a63
Small cleanup ( #877 )
...
* Remove unused variables and constants
* Remove redundant return statement
* Change flock.NewFlock to flock.New
2019-05-26 18:06:43 +09:00
Hajime Hoshi
f9cec31bf6
clock: Assert that now() must be monotonic
...
This change adds panics to ensure that now() must be monotonic.
Bug: #875
2019-05-24 22:59:02 +09:00
Hajime Hoshi
22dfefab5b
clock: Fix coments
2019-05-24 03:18:47 +09:00
Hajime Hoshi
bbcee77b02
clock: Use time.Since for monotonic timer
...
Fixes #875
2019-05-24 03:16:43 +09:00
Hajime Hoshi
9c1b760016
clock: Bug fix: The timer should continue even when the clock is adjusted
...
If the clock is reversed:
* lastSystemTime should be reset with the current time
* FPS/TPS calculation state should be reset
2019-05-24 02:24:32 +09:00
Hajime Hoshi
0eb5ef0141
clock: Remove unused variables
2019-05-24 02:20:23 +09:00
Hajime Hoshi
c2bc6408a3
clock: Bug fix: Do not pacic even when the clock is reversed
...
It is theoreticaly possible to change the clock. Ebiten should not
panic whatever the clock time is.
2019-05-24 02:14:24 +09:00
Hajime Hoshi
da671a6d8c
glfw: Better way to get C files
2019-05-20 03:48:58 +09:00
Hajime Hoshi
289fb77d20
glfw: Sort C files in alphabetical order
2019-05-20 03:48:49 +09:00
Hajime Hoshi
f461ba2379
shareable: Misspelling
2019-05-12 17:53:18 +09:00
Hajime Hoshi
bc4e35a6c5
shareable: Make images shared when possible
...
Fixes #864
2019-05-12 00:36:15 +09:00
Hajime Hoshi
b03c02dd28
graphicsdriver/metal: Bug fix: Reading pixels from GPU causes blinking
...
Metal's Drawable should be obtained only when needed, or reading
pixels from GPU causes the blinking screen.
Fixes #865
2019-05-11 23:52:35 +09:00
Hajime Hoshi
0bed5a96d5
clock: Better URL to explain being monotonic
2019-05-09 02:45:43 +09:00
Hajime Hoshi
009fa9accd
clock: Ensure that now() is monotonic
2019-05-09 02:44:14 +09:00
Hajime Hoshi
c65d035cc9
clock: Bug fix: Use float64 not to overflow
...
Bug: #862
2019-05-09 01:14:48 +09:00
Hajime Hoshi
39395c4c76
graphicscommand: Rename draw-image -> draw-triangles
2019-05-08 11:58:17 +09:00
Hajime Hoshi
9a31bcd53d
devicescale: Remove the updating loop
...
Now the value is cached, the updating loop is no longer needed.
2019-05-08 01:14:22 +09:00
Hajime Hoshi
836e320b6b
devicescale: Refactoring
2019-05-05 18:09:49 +09:00
Hajime Hoshi
ea284d86fd
graphicsdriver/metal: Add setView for iOS and non-iOS
2019-05-03 03:08:46 +09:00
Hajime Hoshi
10fb5e33be
Replace GopherWasm with syscall/js
...
Fixes #857
2019-05-01 17:28:00 +09:00
Hajime Hoshi
cce41e8152
graphics: Rename DrawImage -> DrawTriangles for consistency
2019-04-22 23:12:36 +09:00
Hajime Hoshi
7d9bc8586e
graphcisdriver/metal: Better comment
2019-04-20 17:05:05 +09:00
Hajime Hoshi
b99f4c61b5
graphicsdriver/metal: Make (*Driver).Flush do nothing
2019-04-20 16:50:40 +09:00
Hajime Hoshi
72be1bde24
graphicsdriver/metal: Set and reset screenDrawable more correctly
2019-04-20 16:26:34 +09:00
Hajime Hoshi
a064955a13
graphicsdriver/metal: Use NSAutoreleasePool to release drawable correctly
...
Fixes #847
2019-04-20 15:20:38 +09:00
Hajime Hoshi
bfe1d2208e
Revert "graphicsdriver/metal: Bug fix: Release drawable correctly"
...
This reverts commit c44accbfb5
.
Reason: This change doesn't make sense
2019-04-20 00:28:09 +09:00
Hajime Hoshi
c44accbfb5
graphicsdriver/metal: Bug fix: Release drawable correctly
...
Fixes #847
2019-04-19 20:23:00 +09:00
Hajime Hoshi
865523048d
uidriver/js: Bug fix: Touches were not updated correctly
...
Fixes #846
2019-04-15 03:01:02 +09:00
Hajime Hoshi
e6c0c73b9e
graphicscommand: Add assertion (the screen cannot be a render source)
2019-04-13 00:22:11 +09:00
Hajime Hoshi
5afcc65387
shareable: Add comments
2019-04-11 18:15:56 -07:00
Hajime Hoshi
db689f4e50
driver: Remove UI.Loop and add UI.RunWithoutMainLoop
2019-04-09 21:55:59 -04:00
Hajime Hoshi
864c28e8d9
Revert "uidriver/glfw: Rename ui_unix.go -> ui_linbsd.go"
...
This reverts commit 794ccd6ade
.
2019-04-09 01:06:07 -04:00
Hajime Hoshi
794ccd6ade
uidriver/glfw: Rename ui_unix.go -> ui_linbsd.go
2019-04-09 00:39:20 -04:00
Hajime Hoshi
24fdcdd8e4
uidriver: Rename updateGraphics -> updateSize
2019-04-08 23:49:31 -04:00
Hajime Hoshi
f6367308fc
driver: Rename GraphicsContext -> UIContext
2019-04-08 23:28:08 -04:00
Hajime Hoshi
aecfd6b13d
uidriver: Remove dependency on hooks package
2019-04-08 23:13:44 -04:00
Hajime Hoshi
099c7bd5c9
driver: Remove Touch struct
2019-04-07 19:25:10 -04:00
Hajime Hoshi
08308a7edf
uidriver/mobile: Refactoring
2019-04-07 18:51:32 -04:00
Hajime Hoshi
0aa3135082
driver: Remove UI.AdjustPosition
2019-04-07 19:31:49 +09:00
Hajime Hoshi
26c32d36b5
uidriver: Move input implementation to uidrivers
2019-04-07 19:16:00 +09:00
Hajime Hoshi
a1697feeb1
driver: Add UI.Input()
2019-04-07 18:37:54 +09:00
Hajime Hoshi
7e5085f15b
Add uidriver package and move UI implementation to this packaage
2019-04-07 18:21:16 +09:00
Hajime Hoshi
a4a129e3af
ui: Rename currentUI -> theUI
2019-04-07 11:10:55 +09:00
Hajime Hoshi
6b8516c7a5
driver: Move ui.RegularTermination to driver
2019-04-07 10:54:05 +09:00
Hajime Hoshi
1b8d4abfdb
driver: Move ui.GraphicsContext to driver
2019-04-07 10:48:18 +09:00
Hajime Hoshi
b579bd7fd0
graphics: Remove GraphicsContext.Invalidated
2019-04-07 10:08:55 +09:00
Hajime Hoshi
6cdcd1ee62
input: Refactoring: Remove input dependencies from ui
2019-04-06 23:42:55 +09:00
Hajime Hoshi
a980de8326
ui: Take the Input driver
2019-04-06 23:29:13 +09:00
Hajime Hoshi
de9f54fd9d
driver: Add Input
2019-04-06 21:48:54 +09:00
Hajime Hoshi
bf165ae9d4
devicescale: Refactoring
2019-04-03 23:20:45 +09:00
Hajime Hoshi
0d0b347411
devicescale: Use more runtime.KeepAlive for Windows
2019-04-03 11:57:00 +09:00
Hajime Hoshi
8005682786
devicescale: Use runtime.KeepAlive for Windows
...
This might be related to the bug #832
2019-04-03 11:53:23 +09:00
Hajime Hoshi
d56668bfdb
input: Use sync.Once
2019-03-31 20:38:46 +09:00
Hajime Hoshi
f5c68d2a61
input: Refactoring
2019-03-31 20:20:52 +09:00
Hajime Hoshi
80dcec865d
ui: Refactoring: Remove pollEvents
2019-03-31 19:51:53 +09:00
Hajime Hoshi
c21fb4d390
input: Move Touch to driver package
2019-03-31 18:58:43 +09:00
Hajime Hoshi
e273618081
input: Rename Reset -> ResetForFrame
2019-03-31 18:49:00 +09:00
Hajime Hoshi
9e5261c156
input: Change touches type
2019-03-31 17:15:27 +09:00
Hajime Hoshi
64d3e26fb0
input: Rename UpdateTouches -> SetTouches
2019-03-31 16:30:03 +09:00
Hajime Hoshi
06219db2cc
input: Replace Touches with TouchIDs and TouchPosition
2019-03-31 02:59:48 +09:00
Hajime Hoshi
0536efd95f
ui: Remove AdjustedCursorPosition
2019-03-31 02:06:42 +09:00
Hajime Hoshi
dec6be1a11
ui: Remove AdjustedTouches
2019-03-31 02:03:59 +09:00
Hajime Hoshi
5d6f66935a
ui: Remove UpdateTouches
2019-03-31 01:54:38 +09:00
Hajime Hoshi
43ec1e7fb3
input: Refactoring: Make Touch a struct
2019-03-31 01:14:49 +09:00
Hajime Hoshi
853dbdf19d
input: Refactoring
2019-03-31 00:45:52 +09:00
Hajime Hoshi
486a6134e4
Bug fix: compilation error on browsers and mobiles
2019-03-30 23:59:17 +09:00
Hajime Hoshi
7dca1889a1
input: Move Key to driver package
2019-03-30 23:39:56 +09:00
Hajime Hoshi
e5b1aa8742
png: Update for Go 1.12
2019-03-30 23:27:09 +09:00
Hajime Hoshi
c5a8c88e2d
input: Move MouseButton and GamepadButton to driver package
2019-03-30 23:19:52 +09:00
Hajime Hoshi
7445144194
Move graphicsdriver.GrapahicsDriver to driver.Graphics
2019-03-30 22:38:02 +09:00
Hajime Hoshi
747d1be54e
driver: Move getting actual drivers to ebiten package
2019-03-30 22:19:21 +09:00
Hajime Hoshi
f2e42c3ea1
ui: Remove dependencies on driver package
2019-03-30 21:59:11 +09:00
Hajime Hoshi
d6d57fdadf
ui: Refactoring
2019-03-28 03:36:31 +09:00
Hajime Hoshi
8ec7ae4c08
Rename drivers -> driver
2019-03-28 01:48:45 +09:00
Hajime Hoshi
5e38f81462
Create packages drivers having actual drivers
2019-03-25 00:29:56 +09:00
Hajime Hoshi
92193b2362
input: Remove unnecessary empty slices
2019-03-24 23:44:36 +09:00
Hajime Hoshi
dbc3461628
ui: Use flexbox for centering
2019-03-20 01:44:36 +09:00
Hajime Hoshi
1392129e41
devicescale: Cache scale values
2019-03-12 01:31:18 +09:00
Hajime Hoshi
a3882dbc37
ui: Bug fix: devicescale.GetAt must be called on the main thread
2019-03-12 00:28:37 +09:00
Hajime Hoshi
f56c3bd096
ui: Unexport SetWindowResizable ( #320 )
2019-02-25 02:19:47 +09:00
Hajime Hoshi
ea7c2f8da3
ui: Bug fix: Wrong assumption that the position was always >= 0
2019-02-24 23:34:36 +09:00
Hajime Hoshi
ba59cdbc5f
ui: Bug fix: The window must be shown on the current monitor ( #829 )
2019-02-24 23:26:07 +09:00
Hajime Hoshi
d4a522d9da
glfw: Bug fix: Do not pass Go's int pointer
...
Go's int can be 64bit or 32bit, while C's int is always 32bit on
Windows in Ebiten usage. For C's int argument, do not pass Go's
int pointer or broken values are set.
Related to #829
2019-02-24 23:10:18 +09:00
Hajime Hoshi
288e0a33ba
ui: Bug fix: SetSizeCallback must be effective only when the window is resizable
...
This is not a perfect solution but at least this fixes the
regression.
Fix #819
2019-02-24 03:25:38 +09:00
Hajime Hoshi
f19d7a29b8
graphicsdriver/metal: Do not release a nil texture (screen)
2019-02-22 00:37:49 +09:00
Hajime Hoshi
dbe4f27d5f
shareable: Add comments
...
Oops, 0dcb53d290
did not make sense.
2019-02-21 10:58:40 +09:00
Hajime Hoshi
0dcb53d290
shareable: Bug fix: Node-leak when extending a page
...
This is very rare and not so serious I think, but is still a bug.
2019-02-21 10:49:23 +09:00
Hajime Hoshi
0bf911905a
Revert "graphicsdriver/opengl: Call glFinish before glReadPixels"
...
This reverts commit 04dc1faa9c
.
Reason: True fix for #814 is 82178794c3
2019-02-19 10:55:06 +09:00
Hajime Hoshi
82178794c3
shareable: Bug fix: Unlock after filling
...
Fixes #820
2019-02-19 10:16:27 +09:00
Hajime Hoshi
ccacf015c2
Revert "restorable: Bug fix: Guard images by mutex"
...
This reverts commit 7967f68073
.
Reason: Wrong fix (syncing should be done at shareable package)
2019-02-19 10:15:23 +09:00
Hajime Hoshi
7967f68073
restorable: Bug fix: Guard images by mutex
...
The map must be guarded by mutex since this can be accessed by
multiple goroutines, including finalizer goroutine.
Fixes #820
2019-02-19 10:10:46 +09:00
Hajime Hoshi
d724e17032
graphicsdriver/metal: Bug fix: Wrong usage of RenderPipelineState for screen
2019-02-17 21:41:47 +09:00
Hajime Hoshi
84b1c282ff
graphicsdriver/opengl: Refactoring by reduing unused variables
2019-02-17 20:22:03 +09:00
Hajime Hoshi
3aa6eb3a66
graphicsdriver: Optimize shaders for the case of FILTER_SCREEN
...
Assume a color matrix or color vertex values are not used when
the filter is FILTER_SCREEN.
2019-02-17 19:40:52 +09:00
Hajime Hoshi
cbb0a1da95
graphicsdriver: Refactoring
...
This improved FPS on mobiles a little bit. Maybe now texture2D is
called only when necessary, but not sure.
2019-02-17 17:37:11 +09:00
Hajime Hoshi
742bbb4ccd
graphicsdriver: Simplify clamping color values
...
For negative values, OpenGL (and Metal) should take care of them
so we don't have to care.
2019-02-17 15:09:05 +09:00
Hajime Hoshi
3d8a45a770
graphicsdriver/opengl: Refactoring
2019-02-17 14:30:32 +09:00
Hajime Hoshi
d927241223
graphicsdriver/opengl: Remove unnecessary function calls
2019-02-17 11:44:50 +09:00
Hajime Hoshi
3ecb00f717
graphicsdriver: Optimize shaders
...
Simplified the case when a color matrix is not used.
2019-02-16 23:53:22 +09:00
Hajime Hoshi
a8b97c9755
graphicsdriver: Optimize shader (skip color matrix calculation)
...
Skip multiplying with a color matrix when possible.
2019-02-16 17:33:12 +09:00
Hajime Hoshi
815ed8cda2
graphicsdriver: Optimize shader by removing 'if'
2019-02-16 16:39:02 +09:00
Hajime Hoshi
1f46299870
graphicsdriver/opengl: Bug fix: source_size can be optimized out with nearest filter
2019-02-16 15:14:48 +09:00
Hajime Hoshi
b1b8d0b4b1
graphics: Move texel-region adjustment from shaders to program
...
This reduces GPU burden.
2019-02-16 14:50:03 +09:00
Hajime Hoshi
09ca873c41
graphicsdriver/opengl: Use glBindAttribLocation instead of glGetAttribLocation
...
Attribute variables are often optimized out and it is really hard
to prevent this.
Instead of implicit indices of attribute variables, use explicit
indices by glBindAttribLocation.
Bug: #816
2019-02-16 14:35:53 +09:00
Hajime Hoshi
7ff99d3965
graphicsdriver/opengl: Remove glGetError calls
...
As glGetError doesn't tell where the error happens, this is not
useful.
Fixes #815
2019-02-16 10:00:27 +09:00
Hajime Hoshi
fc329bd215
graphicsdriver/metal: Use template specialization
2019-02-15 09:46:58 +09:00
Hajime Hoshi
3f28592700
graphics: Refactoring: Remove PutVertex
2019-02-15 00:22:32 +09:00
Hajime Hoshi
7c506bc5bc
restorable: Refactoring: Add (*Image).QuadVertices/PutVertex
2019-02-15 00:18:12 +09:00
Hajime Hoshi
a06a2b65c1
shareable: Fix semantically incorrect function usage
...
In this case, the size equals to the internal size, so this is not
a bug fix.
2019-02-14 23:23:52 +09:00
Hajime Hoshi
fd250c8d8c
graphics: Rename NextPowerOf2Int -> InternalImageSize and add image size adjustment
...
There is a minimum internal image size on some system like old iOS
devices. This change adds adjustment of the size.
Issue: #810
2019-02-14 23:06:01 +09:00
Hajime Hoshi
a2fe3d5962
restorable: Refactoring: Use InternalSize instead of NextPowerOf2Int
2019-02-14 22:39:19 +09:00
Hajime Hoshi
4e8c7f0a75
restorable: Rename SizePowerOf2 -> InternalSize
2019-02-14 20:56:38 +09:00
Hajime Hoshi
a6d3a1e0cb
graphicsdriver/metal: Refactoring: Use NextPowerOf2Int
2019-02-14 11:09:16 +09:00
Hajime Hoshi
a1b1bce43a
graphicsdriver/metal: Bug fix: Some tests failed due to wrong source size
2019-02-14 11:06:30 +09:00
Hajime Hoshi
7a76a5b42d
graphicsdriver/metal: Remove while loop in shader programs
2019-02-14 10:54:32 +09:00
Hajime Hoshi
5c7f34827f
graphicsdriver/metal: Use template specialization
2019-02-14 09:57:47 +09:00
Hajime Hoshi
04dc1faa9c
graphicsdriver/opengl: Call glFinish before glReadPixels
...
It looks like glFlush is not enough at least on Travis CI.
Fixes #814
2019-02-14 02:03:05 +09:00
Hajime Hoshi
0546783ad5
restorable: Don't call (*graphicscommand.Image).Pixels twice (2)
2019-02-14 01:00:27 +09:00
Hajime Hoshi
3faa674e32
restorable: Don't call (*graphicscommand.Image).Pixels twice
2019-02-14 00:54:02 +09:00
Hajime Hoshi
3952474690
graphics/metal: Fix comments
2019-02-13 23:36:45 +09:00
Hajime Hoshi
81101e0f48
graphicsdriver/metal: Reduce 'if' from shader programs ( #762 )
2019-02-13 23:28:17 +09:00
Hajime Hoshi
27dbf1bbb7
restorable: Record more drawing image history items
...
Fixes #813
2019-02-13 10:45:08 +09:00
Hajime Hoshi
6930176fbb
restorable: Add restorable.Pixels
2019-02-13 00:46:24 +09:00
Hajime Hoshi
93d0b0dd09
restorable: Add Fill
...
This is useful to reduce opportunity to make the image stale.
2019-02-13 00:46:24 +09:00
Hajime Hoshi
40f728a326
shareable: Call (*restorable.Image).Clear() when possible
...
This is a kind of relanding of c68c36b0b7
.
Clearing the restorable.Image state can reduce the operations for
restoring.
2019-02-13 00:41:26 +09:00
Hajime Hoshi
5fed3d3bed
shareable: Add MakeVolatile
2019-02-13 00:41:24 +09:00
Hajime Hoshi
5147bbde9d
restorable: Add MakeVolatile
2019-02-13 00:39:54 +09:00
Hajime Hoshi
f613cd1407
restorable: Remove Pixels that is not used anywhere
2019-02-13 00:31:00 +09:00
Hajime Hoshi
c2c3579cde
graphicsdriver/opengl: Reduce 'if' in shader programs
...
Fixes #812
2019-02-12 12:46:18 +09:00
Hajime Hoshi
6c4260d0e1
Revert "graphicsdriver/opengl: Use GL_RGBA8 as the internal format at glTexImage2D"
...
This reverts commit f5044f3d8f
.
Reason: This doesn't work on some iOS machines
2019-02-12 03:34:06 +09:00
Hajime Hoshi
4273f1982d
devicescale: Bug fix: Need to consider Y axis direction on macOS
...
Fixes #807
2019-02-10 23:34:15 +09:00
Hajime Hoshi
8e42484294
graphicscommand: Add 'address' to (*DrawImageCommand).String
2019-02-10 14:27:49 +09:00
Hajime Hoshi
6f428c584d
shareable: Add comments
2019-02-10 14:13:00 +09:00
Hajime Hoshi
339155f63d
shareable: Use CompositeModeSourceOver when possible at Fill
2019-02-10 14:08:59 +09:00
Hajime Hoshi
1150fc69d0
shareable: Use color vertex values instead of ColorM
...
This is an optimization: using ColorM might cause graphics command
separation.
2019-02-10 14:02:01 +09:00
Hajime Hoshi
f5044f3d8f
graphicsdriver/opengl: Use GL_RGBA8 as the internal format at glTexImage2D
...
Related: #810
2019-02-09 21:27:46 +09:00
Hajime Hoshi
815f2a6b35
shareable: Improve panic messages
2019-02-09 19:47:45 +09:00
Hajime Hoshi
a5421de8ab
mainthread: Add comments
2019-02-08 20:32:00 -10:00
Hajime Hoshi
87b4b8b1b4
mainthread: Disable panic temporarily
...
Fixes #809
2019-02-08 20:11:48 -10:00
Hajime Hoshi
a3eddeb50f
Improve panic messages
2019-02-06 23:43:03 -10:00
Hajime Hoshi
9d291f601e
graphicsdriver/metal: Bug fix: Make all the tests pass
2019-02-06 23:42:54 -10:00
Hajime Hoshi
207ae08c9d
graphicsdriver/metal: Give up reusing buffers
...
It was inevitable to rely on reference counts, which was too hacky.
Besides, reusing buffers doesn't improve performance.
2019-02-05 03:22:50 +09:00
Hajime Hoshi
19079ae7a2
graphicsdriver/metal: Fix comments
2019-02-05 03:09:40 +09:00
Hajime Hoshi
f29337dc93
graphicsdriver/metal: Add comments
2019-02-03 23:58:45 +09:00
Hajime Hoshi
882d0c0bc8
graphicsdriver/metal: Reuse MTLBuffer instead of re-creating ( #762 )
2019-02-03 22:55:29 +09:00
Hajime Hoshi
a8dcd5c628
Replace go-flock with flock
2019-02-03 14:20:20 +09:00
Hajime Hoshi
d3d56c076d
shareable: Use CopyPixels
...
CopyPixels is basically Pixels and ReplacePixels, but executed
lazily while Pixels reads pixels from GPU immediately. Thanks to
this, restorable.Image no longer need to keep pixel data if not
needed.
2019-02-03 02:51:56 +09:00
Hajime Hoshi
b89602d900
restorable: Add more comments
2019-02-02 19:19:03 +09:00
Hajime Hoshi
05d78b4232
mainthread: Cause panic when trying to run before initialization
2019-02-02 19:00:15 +09:00
Hajime Hoshi
bcd9db669d
Revert "restorable: Don't record pixels when restoring is disabled"
...
This reverts commit aad7bdc64d
.
Reason: This causes application freezing at least on macOS
2019-02-02 18:39:51 +09:00
Hajime Hoshi
204b0e72d6
graphicsdriver/metal: Do not wait until completed when possible ( #762 )
2019-02-02 04:35:38 +09:00
Hajime Hoshi
aad7bdc64d
restorable: Don't record pixels when restoring is disabled
2019-02-02 00:44:02 +09:00
Hajime Hoshi
5be567d58f
ui: Implement restoring context lost on browsers correctly
...
Fixes #734
2019-02-01 01:20:40 +09:00
Hajime Hoshi
ba47a19b17
mobile: Bug fix: error must be received without waiting for renderCh
...
Even when error happens, the error was not received when renderCh
received. This was the cause of freezing when error happens.
2019-01-28 12:32:48 +09:00
Hajime Hoshi
3ac1996f9d
clock: Avoid overflow by using time duration on Windows
2019-01-27 17:31:30 +09:00
Hajime Hoshi
3691083cee
clock: Use a more precise timer on Windows
...
This change is based on @silbinarywolf's change:
https://github.com/hajimehoshi/ebiten/issues/798#issuecomment-457822280
Fixes #798
2019-01-26 21:16:35 +09:00
Hajime Hoshi
b65a3d372b
affine: Add ColorM.Scale tests
2019-01-23 02:50:30 +09:00
Hajime Hoshi
54019a4735
affine: Improve speed of ScaleOnly
2019-01-23 02:10:59 +09:00
Hajime Hoshi
2b0dff197e
restorable: Fix comments ( #793 )
2019-01-22 23:33:56 +09:00
Hajime Hoshi
158f4fb3ed
restorable: Bug fix: Reading pixels from a volatile image might fail
...
Fixes #793
2019-01-22 03:35:54 +09:00
Hajime Hoshi
ec08a75332
restorable: Add assertions
2019-01-21 02:17:09 +09:00
Hajime Hoshi
e2cfb2da6f
restorable: Fix comments
2019-01-21 00:41:54 +09:00
Hajime Hoshi
eeb8fea778
restorable: Bug fix: dummyImage must be restored first
...
Fixes #791
2019-01-21 00:36:53 +09:00
Hajime Hoshi
4d05baf97c
examples/contextlost: Bug fix: dummyImage must belong to theImages
2019-01-21 00:11:34 +09:00
Hajime Hoshi
55e9a861d0
ui: Bug fix: isRunning should never be 'false' even after Run on GopherJS
2019-01-19 03:29:07 +09:00
Hajime Hoshi
78ed824351
graphics: Make verticesBackend concurrent safe
...
Fixes #789
2019-01-19 02:06:50 +09:00
Hajime Hoshi
248f51cc02
ui: Fix comments
2019-01-17 23:40:33 +09:00
Hajime Hoshi
fd4cdd445c
graphicsdriver/opengl/gl: Unexport or remove C symbols ( #786 )
2019-01-17 22:16:47 +09:00
Hajime Hoshi
645b94de5f
ui: Bug fix: actualScreenScale must be called on the main thread
2019-01-16 23:32:47 +09:00
Hajime Hoshi
107dfe5074
graphics: Improve Set speed
...
On GopherJS, copying a struct is very heavy. This change avoids
copying (color) structs when possible.
2019-01-14 04:25:43 +09:00
Hajime Hoshi
6ed4bbc0a2
ui: Fix comments
2019-01-13 22:51:24 +09:00
Hajime Hoshi
9e11477d6c
restorable: Bug fix: volatile image must be cleared when recovering from the context lost
...
This fixes the bug that examples/contextlost crashes.
2019-01-13 22:30:08 +09:00
Hajime Hoshi
607186859d
ui: Run returns immediately on GopherJS
...
Fixes #778
2019-01-13 22:16:33 +09:00
Hajime Hoshi
1e1f309a1c
shareable: Add Fill
...
Before introducing Fill, filling an image with a solid color was
implemented by ReplacePixels. When an offscreen image is used, the
offscreen image is not fully cleared or filled with a color and
out of (0,0)-(width,height) region. This causes a glitch thin line
on mobile platforms.
This change adds (*shareable.Image).Fill to fill the whole
framebuffer region of the image.
2019-01-13 02:12:47 +09:00
Hajime Hoshi
90efddd6b3
restorable: Bug fix: Clearing a new image region was wrong
2019-01-12 16:16:50 +09:00
Hajime Hoshi
ce21125345
graphicscommand: Rename functions
2019-01-12 01:33:27 +09:00
Hajime Hoshi
dc0c6e0907
graphicscommand: Use GL on macOS 10.11 or older ( #781 )
2019-01-12 01:30:47 +09:00
Hajime Hoshi
72c1a73cac
graphicsdriver/metal: Avoid using @available syntax for old Xcode ( #781 )
2019-01-12 00:33:45 +09:00