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
mebusy
0419aec617
graphicscommand: Use Opengl instead on early MacOSX platform which does not support Metal ( #779 )
2019-01-11 22:34:23 +09:00
Hajime Hoshi
6783aaae56
graphics: Better test for a crash
2019-01-11 00:31:32 +09:00
Hajime Hoshi
c4e98de804
shareable: Refactoring
2019-01-10 23:31:53 +09:00
Hajime Hoshi
4a587f495d
restorable: Bug fix: ReplacePixels might call DrawImage, which violates some assumptions
2019-01-10 23:22:59 +09:00
Hajime Hoshi
a6b3f761f8
audio: Refactoring: Remove dependency on clock package
2019-01-10 00:59:38 +09:00
Hajime Hoshi
5514a9c6ac
ui: Bug fix: Changing screen size didn't work correctly on Windows
...
Fixes #775
2019-01-09 11:08:27 +09:00
Hajime Hoshi
28665cfc4b
glfw: Bug fix: Compilation error on Windows
2019-01-09 10:34:54 +09:00
Hajime Hoshi
ae84e79d16
ui: Add IsWindowResizable and SetWindowResizable (again)
...
Fixes #320
2019-01-09 00:24:16 +09:00
Hajime Hoshi
0d4e903b7a
Revert "ui: Add IsWindowResizable and SetWindowResizable"
...
This reverts commit f403e0716f
.
Reason: Compilation error on browsers
2019-01-09 00:12:57 +09:00
Hajime Hoshi
f403e0716f
ui: Add IsWindowResizable and SetWindowResizable
...
Fixes #320
2019-01-08 23:52:53 +09:00
Hajime Hoshi
12f7d14d91
graphicsdriver/opengl: Check the reserved keyword
...
Fixes #772
2019-01-08 00:07:49 +09:00
Hajime Hoshi
758b957b01
graphicsdriver/opengl: Bug fix: filter is a preserved keyword ( #771 )
2019-01-07 11:20:29 +09:00
Hajime Hoshi
7f656f11d6
ui: Bug fix: Minimum window width should be 1 when the window is not decorated
2019-01-07 00:46:41 +09:00
Hajime Hoshi
b34834a895
graphicscommand: Explicitly forbide ReplacePixels for a part after DrawImage
2019-01-06 05:15:27 +09:00
Hajime Hoshi
1cfd97cde0
restorable: Clearing is not needed after NewImage
2019-01-06 03:40:59 +09:00
Hajime Hoshi
b5c9cd6253
shareable: Fix comments
2019-01-06 03:15:32 +09:00
Hajime Hoshi
123be16699
graphicsdriver/opengl: Use NewLazySystemDLL instead of NewLazyDLL ( #766 )
2019-01-04 15:05:27 +09:00
Hajime Hoshi
f2dcc8ccdb
devicescale: Use NewLazySystemDLL instead of NewLazyDLL ( #766 )
2019-01-04 06:11:59 +09:00
Hajime Hoshi
db1b664424
devicescale: Refactoring: define Windows error consts
2019-01-04 06:05:35 +09:00
Hajime Hoshi
75a024e40e
devicescale: Bug fix: GetWindowDC returns error on Wine
...
Fixes #743
2019-01-04 05:58:34 +09:00
Hajime Hoshi
5c1b0bbcec
devicescale: Remove 'syscall' package usages ( #766 )
2019-01-04 05:53:18 +09:00
Hajime Hoshi
f2840bb0dc
ui: Remove 'syscall' package usages ( #766 )
2019-01-04 05:28:46 +09:00
Hajime Hoshi
623bfde007
graphicsdriver/metal/ca: Suppress warnings ( #767 )
2019-01-02 01:16:54 +09:00
Hajime Hoshi
ac6ad717b7
graphicsdriver/metal: Use selector again to access properties ( #767 )
2019-01-02 01:09:12 +09:00
Hajime Hoshi
6350cb6bfd
graphicsdriver/metal/ca: Add check by respondsToSelector ( #767 )
2019-01-02 00:52:03 +09:00
Hajime Hoshi
a0a17330ee
graphicsdriver/metal: Specify macOS version ( #768 )
2019-01-02 00:08:46 +09:00
Hajime Hoshi
61afdc8852
graphicsdriver/metal: Remove unused properties ( #767 )
2019-01-01 05:09:02 +09:00
Hajime Hoshi
947fbe0a2e
glwf: Implement SetIcon
2018-12-31 15:49:45 +09:00
Hajime Hoshi
efc7225ee1
glfw: Skip error check at proc call
2018-12-31 15:48:37 +09:00
Hajime Hoshi
a21a4c75b0
glfw: Implement DLL version of the binding
2018-12-31 15:48:34 +09:00
Hajime Hoshi
a9455d1c32
glfw: Add loading DLL
2018-12-31 15:46:06 +09:00
Hajime Hoshi
ad285c2235
glfw: Add DLL build results
...
This also adds fixes for 32bit machines.
2018-12-31 15:46:01 +09:00
Hajime Hoshi
90f82de5ef
glfw: Separate glfw-dependent part and the other part
2018-12-30 20:45:50 +09:00
Hajime Hoshi
55c2fa4de1
Use internal/glfw
2018-12-30 02:35:46 +09:00
Hajime Hoshi
1fd445b0e4
glfw: Start implementing glfw package (Key)
2018-12-30 01:11:49 +09:00
Hajime Hoshi
83787123ac
ui: Refactoring
2018-12-28 14:08:44 +09:00
Hajime Hoshi
b349efaa0a
graphicsdriver/metal: Make main-thread usages more explicit
2018-12-28 02:43:00 +09:00
Hajime Hoshi
86bda42417
graphicsdriver/metal: Refactoring: vsync member variable was not needed
2018-12-28 02:29:56 +09:00
Hajime Hoshi
105909ab6c
graphicsdriver/metal: Bug fix: SetVsyncEnabled before Run didn't work on macOS
2018-12-28 02:23:39 +09:00
Hajime Hoshi
532488ac5c
mainthread: RunLockOSThread is mainthread package's responsibility
2018-12-28 02:20:53 +09:00
Hajime Hoshi
c76ce28065
Revert "ui: Bug fix: SetVsyncEnabled before Run didn't work on macOS"
...
This reverts commit 042b30a516
.
2018-12-28 02:18:38 +09:00
Hajime Hoshi
042b30a516
ui: Bug fix: SetVsyncEnabled before Run didn't work on macOS
2018-12-28 02:11:48 +09:00
Hajime Hoshi
25581b2be8
restorable: Fix comments
2018-12-27 03:12:30 +09:00
Hajime Hoshi
4ba47eee32
restorable: Refactoring
2018-12-27 03:06:44 +09:00
Hajime Hoshi
62cdb93105
restorable: Improve tests
2018-12-26 21:14:29 +09:00
Hajime Hoshi
fbf7007056
restorable: Pixels() should return immediately when it doesn't have to access GPU
...
Fixes #763
2018-12-26 20:25:40 +09:00
Hajime Hoshi
454a7d8ef9
graphicsdriver/opengl: Bug fix: misspelling on variables
...
Fixes #764
2018-12-26 03:03:06 +09:00
Hajime Hoshi
99e4c874fe
Reduce init functions
...
This mitigates the init-order issue on jsgo.io.
2018-12-26 02:13:47 +09:00
Hajime Hoshi
de788603d6
graphicsdriver/opengl: Remove init order dependency
2018-12-25 23:58:01 +09:00
Hajime Hoshi
ebbbb448fa
graphicsdriver/metal: Rename function for consistency
2018-12-25 02:24:02 +09:00
Hajime Hoshi
f5708cb58a
graphicsdriver/opengl: Bug fix: Rename a function not to override an existing function
2018-12-24 17:45:16 +09:00
Hajime Hoshi
f1582c2d73
graphics: Add Address representing a sampler address mode
...
Fixes #761
2018-12-24 17:29:31 +09:00
Hajime Hoshi
7e50ae39c9
graphicsdriver/opengl: Refactoring: Filter as a uniform value
2018-12-24 16:06:25 +09:00
Hajime Hoshi
85df49dc96
graphicsdriver/opengl: Bug fix: variables can be optimized out
2018-12-23 06:04:35 +09:00
Hajime Hoshi
189b8a17e9
graphics: Use source-border check even at DrawTriangles
...
DrawTriangles can now take a sub-image.
2018-12-23 03:24:39 +09:00
Hajime Hoshi
4149a56524
graphics: Refactoring: Use 12 floats for each vertex
...
This is a preparation for #761 .
2018-12-23 02:36:28 +09:00
Hajime Hoshi
bf67998fc5
graphicscommand: Bug fix: Do not assure the initial state of the image
2018-12-23 01:18:05 +09:00
Hajime Hoshi
4d0cc623fb
ui: Rename functions
2018-12-22 02:32:02 +09:00
Hajime Hoshi
e809991c9f
shareable: Bug fix: Image invalidation by ReplacePixels
...
ReplacePixels on a part of image might invalidate the other part of
the image on MacBook Pro 2013, especially when the other part is
rendered by DrawImage.
Fixes #593 #758
2018-12-21 11:50:10 +09:00
Hajime Hoshi
c227934153
graphicsdriver/metal: Bug fix: Adjust texels
...
Fixes #759
2018-12-21 02:38:00 +09:00
Hajime Hoshi
d520749dcb
graphicsdriver/metal: Call Release on the main thread
2018-12-20 23:08:40 +09:00
wasedaigo
6840e9e739
graphicsdriver/metal: Clarify the type of passing parameters ( #757 )
...
Fixes #756
2018-12-20 17:04:03 +09:00
Hajime Hoshi
ff62876552
Add Metal implementation
...
Fixes #621
2018-12-20 02:37:10 +09:00
Hajime Hoshi
d738639c48
graphicsdriver/opengl: Fix panic messages
2018-12-20 02:36:21 +09:00
Hajime Hoshi
294bf855af
ui: Fix logic: [NSApp mainWindow] can be nil when borderless
2018-12-19 02:25:12 +09:00
Hajime Hoshi
db4395d71b
ui: Bug fix: ScreenSizeFullscreen before Run crashes on Linux
2018-12-19 01:21:00 +09:00
Hajime Hoshi
6ef5cc5857
ui: Bug fix: SetWindowDecorated didn't work
...
Fixes #753
2018-12-19 01:01:18 +09:00