Commit Graph

313 Commits

Author SHA1 Message Date
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
3fb9c02e2f graphicsdriver/metal: Bug fix: Use correct pixel format for the screen 2019-09-08 03:52:29 +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
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
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
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
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
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
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
fcb5554aa1 driver: Add Graphics.NeedsRestoring 2019-05-26 19:46:12 +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
ea284d86fd graphicsdriver/metal: Add setView for iOS and non-iOS 2019-05-03 03:08:46 +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
7445144194 Move graphicsdriver.GrapahicsDriver to driver.Graphics 2019-03-30 22:38:02 +09:00
Hajime Hoshi
f19d7a29b8 graphicsdriver/metal: Do not release a nil texture (screen) 2019-02-22 00:37:49 +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
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
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
b1b8d0b4b1 graphics: Move texel-region adjustment from shaders to program
This reduces GPU burden.
2019-02-16 14:50:03 +09:00
Hajime Hoshi
fc329bd215 graphicsdriver/metal: Use template specialization 2019-02-15 09:46:58 +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
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
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
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
204b0e72d6 graphicsdriver/metal: Do not wait until completed when possible (#762) 2019-02-02 04:35:38 +09:00
Hajime Hoshi
72c1a73cac graphicsdriver/metal: Avoid using @available syntax for old Xcode (#781) 2019-01-12 00:33:45 +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
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
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
ebbbb448fa graphicsdriver/metal: Rename function for consistency 2018-12-25 02:24:02 +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
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
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