Hajime Hoshi
0542f9daa3
internal/graphicsdriver/opengl/gl: refactoring
2023-04-22 15:59:18 +09:00
Hajime Hoshi
4f69ca4ea9
internal/graphicsdriver/opengl: add a debug mode with a build tag ebitenginegldebug
...
In the debug mode, GetError is inserted in each GL function call.
Closes #2650
2023-04-22 13:17:08 +09:00
Hajime Hoshi
95709d9182
internal/graphicsdriver/opengl: update GLES version to 3.0
...
GLES 3.0 is required for GLSL ES 3.0
Updates #1431
2023-04-19 22:43:26 +09:00
Hajime Hoshi
7509c1d7f5
internal/graphicsdriver/opengl: remove the version es100
...
es300 is requried for 'texelFetch' [1].
[1] https://registry.khronos.org/OpenGL-Refpages/es3.0/html/texelFetch.xhtml
Updates #1431
2023-04-19 22:10:32 +09:00
Hajime Hoshi
a56924b22f
internal/graphicsdriver/directx: refactoring
2023-04-09 16:49:52 +09:00
Hajime Hoshi
4473557e23
internal/graphicsdriver/directx: smooth rendering when resizing the window with DirectX 12
...
Updates #2615
2023-04-09 16:38:29 +09:00
Hajime Hoshi
2423733598
internal/graphicsdriver/directx: bug fix: wrong size was used when resizing
...
Updates #2633
2023-04-09 16:34:56 +09:00
Hajime Hoshi
2c088b9059
internal/graphicsdriver/directx: resize the swap chain after presenting is done
...
Updates #2633
2023-04-09 16:29:00 +09:00
Hajime Hoshi
730c7a2ad0
internal/graphicsdriver/directx: refactoring
2023-04-09 15:30:46 +09:00
Hajime Hoshi
78d3e4273b
internal/graphicsdriver/directx: remove tearing
...
This is basically a revert of 0035ba0bd1
.
I couldn't confirm that allowing tearing improved FPS. Rather, this
has a potential risk to cause an error at Present of the swap chain due
to an inconsistent argument, though I have not confirmed an actual issue.
Now the DirectX 11 driver was introduced, the situation has changed.
Updates #2034
Updates #2188
2023-04-09 14:47:51 +09:00
Hajime Hoshi
182ac21866
internal/goglfw: separate the Windows version detection to a new package winver
2023-03-31 02:16:01 +09:00
Hajime Hoshi
c0adcee12c
Revert "internal/graphicsdriver/directx: initialize the refresh rate explicitly for Windows 7"
...
This reverts commit a4bfe8a869
.
Reason: This doesn't take any effects.
Updates #2613
2023-03-30 22:40:53 +09:00
Hajime Hoshi
a4bfe8a869
internal/graphicsdriver/directx: initialize the refresh rate explicitly for Windows 7
...
This is an experimental fix inspired by Chromium/ANGLE
https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.cpp;l=491-492;drc=79aa846e38739138918891e8b334fac464dd9b83
Updates #2613
2023-03-30 22:22:26 +09:00
Hajime Hoshi
09250ff4f3
internal/graphicsdriver/directx: adjust buffer count
...
Apparently the buffer count should be 1 with a non-flipping swap effect.
Updates #2613
2023-03-30 21:09:41 +09:00
Hajime Hoshi
61ced5127b
internal/graphicsdriver/directx: limit d3dcompiler versions
...
For example, the verions 45/44 are alpha and should not be used.
Updates #2613
Updates #2618
2023-03-30 17:54:42 +09:00
Hajime Hoshi
d22158b156
internal/graphicsdriver/directx: use non-flip swap effect for old Windows
...
Updates #2613
Updates #2619
2023-03-30 12:33:08 +09:00
Hajime Hoshi
0cd832f096
internal/graphicsdriver/directx: check the DLL availability at NewGraphics
...
Updates #2613
Updates #2618
2023-03-30 01:45:31 +09:00
Hajime Hoshi
3e477d0bbb
internal/graphicsdriver/directx: bug fix: d3dcomipler_47.dll might be missing
...
Updates #2613
Closes #2618
2023-03-30 01:12:46 +09:00
Hajime Hoshi
6858e4b60b
internal/graphicsdriver/directx: use QueryInterface to cast IDXGISwapChain to IDXGISwapChain4
...
QueryInterface is better in terms of error messages than a dumb
pointer casting.
2023-03-30 00:44:39 +09:00
Hajime Hoshi
7fa65ae983
internal/graphicsdriver/directx: reduce unnecessary usages of IDXGISwapChain4
...
IDXGISwapChain is enough for DirectX 11.
Updates #2613
2023-03-30 00:14:04 +09:00
Hajime Hoshi
c9f1696a5b
internal/graphicsdriver/directx: use CreateDXGIFactory instead of CreateDXGIFactory2
...
CreateDXGIFactory2 is available in Windows 8.1 and newer. This is not
necessary for the current Ebitengine implementation. Use the old version
CreateDXGIFactory to support Windows 8 and older.
Updates #2613
2023-03-29 23:56:17 +09:00
Hajime Hoshi
fe67399022
internal/graphicsdriver/directx: use CreateSwapChain instead of CreateSwapChainForHwnd
...
This is a preparation to use IDXGIFactory instead of IDXGIFactory4.
Updates #2613
2023-03-29 23:37:08 +09:00
Hajime Hoshi
ad1bb4b2cb
internal/graphicsdriver/directx: remove unused functions
2023-03-29 23:21:08 +09:00
Hajime Hoshi
1017161c36
internal/graphicsdriver/directx: refactoring
2023-03-29 18:26:11 +09:00
Hajime Hoshi
0b0526a05b
internal/graphicsdriver/directx: bug fix: had to consider strides when copying resources
...
Closes #2617
2023-03-29 18:24:36 +09:00
Hajime Hoshi
0449126c5b
internal/graphicsdriver/directx: integrate EBITENGINE_DIRECTX and EBITENGINE_DIRECTX_FEATURE_LEVEL
2023-03-29 16:22:20 +09:00
Hajime Hoshi
129956d8f0
internal/graphicsdriver/directx: refactoring: remove graphic12.transparent
2023-03-29 15:56:33 +09:00
Hajime Hoshi
78d76945ad
internal/graphicsdriver/directx: implement DirectX 11 driver
...
Updates #2613
2023-03-29 15:52:33 +09:00
Hajime Hoshi
c8a2e5dc71
internal/graphicsdriver/directx: refactoring
...
This is a preparation for a DirectX 11 driver.
Updates #2613
2023-03-29 15:34:58 +09:00
Hajime Hoshi
4779bbc04d
internal/graphicsdriver/directx: refactoring: remove redundant adapter check
2023-03-29 15:32:49 +09:00
Hajime Hoshi
f23dd72fb4
internal/graphicsdriver/directx: reduce unnecessary settings of pipelines
2023-03-29 14:15:22 +09:00
Hajime Hoshi
c22957f678
internal/graphicsdriver/directx: dispose a screen image explicitly
...
A screen image in DirectX 12 should not include any buffers to release
so there is not a bug, but disposing it explicitly when resizing the
window should be polite.
2023-03-29 00:42:03 +09:00
Hajime Hoshi
f698f8fc69
internal/graphicsdriver/directx: refactoring
2023-03-28 02:32:01 +09:00
Hajime Hoshi
fe42c1f2b5
internal/graphicsdriver/directx: lower the shader version for feature levels 10.x
...
Updates #2613
2023-03-27 14:02:59 +09:00
Hajime Hoshi
dbb167c2d0
internal/graphicsdriver/directx: refactoring
2023-03-27 13:57:25 +09:00
Hajime Hoshi
549e6120b5
internal/graphicsdriver/directx: refactoring: reduce indentations
2023-03-26 22:56:15 +09:00
Hajime Hoshi
fe5c3354fc
internal/graphicsdriver/directx: bug fix: missing error checking
2023-03-26 18:52:55 +09:00
Hajime Hoshi
c9469a64ee
internal/graphicsdriver/directx: refactoring: add graphicsInfra
2023-03-26 18:31:42 +09:00
Hajime Hoshi
0b46d2b799
internal/graphicsdriver/directx: refactoring
2023-03-26 00:49:30 +09:00
Hajime Hoshi
902d7244eb
internal/graphicsdriver/directx: rename structs for a new DirectX 11 implementation
...
Updates #2613
2023-03-26 00:32:47 +09:00
Hajime Hoshi
d6525a2782
internal/graphicsdriver/directx: refactoring
2023-03-25 16:52:58 +09:00
Hajime Hoshi
c394bdcf7c
internal/graphicsdriver/directx: separate a part for images and shaders
2023-03-25 15:54:28 +09:00
Hajime Hoshi
4811386d8a
internal/graphicsdriver/directx: separate a part for DirectX 12
...
Updates #2613
2023-03-25 15:35:47 +09:00
Hajime Hoshi
488bce7e36
internal/graphicsdriver/directx: remove unnecessary comments
2023-03-25 13:53:00 +09:00
Hajime Hoshi
c1e83432c0
internal/graphicsdriver/directx: refactoring: split api_windows.go
2023-03-25 12:07:04 +09:00
Hajime Hoshi
4ec27262ed
internal/graphicsdriver/directx: refactoring
2023-03-25 01:34:29 +09:00
Hajime Hoshi
90723025cc
internal/graphicsdriver/directx: reuse vertices/indices buffers whenever possible
2023-03-23 11:34:39 +09:00
Hajime Hoshi
e5525a04d5
internal/graphicsdriver/directx: refactoring: remove usages of graphics.IndicesCount
...
Updates #2460
2023-03-23 11:25:29 +09:00
Hajime Hoshi
a19ff07130
internal/graphicsdriver/opengl: bug fix: potential infinite loop
2023-03-23 02:47:23 +09:00
Hajime Hoshi
ad90ae3475
internal/graphicsdriver/directx: refactoring
2023-03-22 21:52:14 +09:00
Hajime Hoshi
034f9c2db8
internal/graphicsdriver/opengl: reland: refactoring: remove usages of graphics.IndicesCount
...
Updates #2460
2023-03-22 20:13:29 +09:00
Hajime Hoshi
61ee811579
internal/graphicsdriver: define Resetter
2023-03-22 18:35:46 +09:00
Hajime Hoshi
8cbf545e0f
internal/graphicsdriver/opengl: revert commits for graphics.Indices
...
This change reverts these commits:
* 13d3a0487b
* 4cd98d512e
Reason: this caused crashes on Android.
Updates #2460
Closes #2610
2023-03-22 17:28:45 +09:00
Hajime Hoshi
13d3a0487b
internal/graphicsdriver/opengl: refactoring: remove usages of graphics.IndicesCount
...
Updates #2460
2023-03-22 13:33:34 +09:00
Hajime Hoshi
4cd98d512e
internal/graphicsdriver/opengl: refactoring
2023-03-21 23:06:49 +09:00
Hajime Hoshi
23e90b7e39
internal/graphicsdriver/opengl: refactoring
2023-03-20 22:48:20 +09:00
Hajime Hoshi
8ae6ea5ff6
internal/graphicsdriver/opengl: update comments
2023-03-20 01:42:54 +09:00
Hajime Hoshi
cbff3555db
internal/graphicsdriver/opengl: drop WebGL 1 support
...
Closes #2191
2023-03-18 22:50:09 +09:00
Hajime Hoshi
3bcac70d1c
internal/graphicsdriver/metal: add comments
2023-03-13 22:21:55 +09:00
Hajime Hoshi
65fb9d56ba
internal/graphicsdriver/metal: refactoring
...
Updates #2599
2023-03-13 21:29:42 +09:00
Hajime Hoshi
36e2d0ec40
internal/graphicsdriver/metal: bug fix: a path for CoreGraphics.framework didn't work
...
Closes #2595
2023-03-10 23:24:06 +09:00
Hajime Hoshi
6ccdc6382c
internal/graphicsdriver/metal/mtl: bug fix: fix a vet error
2023-03-04 01:37:45 +09:00
Hajime Hoshi
36bd3329b3
internal/graphicsdriver/metal: bug fix: compile error
2023-03-04 01:25:43 +09:00
Hajime Hoshi
7998e4d31d
update purego to v0.3.0-alpha
...
There are breaking changes between purego v0.2.0 and v0.3.0-alpha.
2023-03-04 01:22:54 +09:00
Hajime Hoshi
a5a5de2f3f
internal/graphicsdriver/directx: reduce memory usages for writing pixels
...
Updates #2294
Updates #2582
2023-03-01 00:11:34 +09:00
Hajime Hoshi
264f0bad42
internal/graphicsdriver/directx: reduce memory usages when reading pixels
...
Updates #2294
Updates #2582
2023-02-28 22:55:21 +09:00
Hajime Hoshi
f58d7e1ab5
internal/graphicsdriver/directx: bug fix: getting pixels with non-zero position might not work
2023-02-25 02:08:50 +09:00
Pierre Curto
4de807cc44
all: fix typos ( #2558 )
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
2023-01-28 19:06:38 +09:00
Hajime Hoshi
aa52402a90
internal/graphicsdriver/metal: fix a comment
2023-01-24 02:22:35 +09:00
Hajime Hoshi
7f39b9c5b6
internal/graphicsdriver/metal: use supportsFeatureSet: as a fallback
...
This change is a fix for a regression that happened on macOS High Sierra.
Closes #2553
2023-01-23 23:44:56 +09:00
Hajime Hoshi
72f026e254
internal/graphicsdriver/opengl/gl: bug fix: searching GL libraries failed on some machines
...
On a Debian machine, LD_LIBRARY_PATH might not be set and libGL.so might
not exist (libGL.so.1 exists instead). In this case, searching for a GL
library fails
This change fixes the issue by not using LD_LIBRARY_PATH and also including
`libGL.so.*` files as candidates for dlopen.
Closes #2539
2023-01-13 15:08:06 +09:00
divVerent
abece041f4
internal/graphicsdriver/opengl: fix state tracking of glBindTexture / glActiveTexture interaction ( #2526 )
...
After switching texture units using glActiveTexture, a different texture may
be bound. For now, let's just force the active texture state variable to zero
so the next glBindTexture call isn't skipped.
Closes #2525
2023-01-07 23:13:14 +09:00
Hajime Hoshi
847d1cae73
internal/graphicsdriver/opengl/gl/: refactoring
2023-01-07 17:01:00 +09:00
Hajime Hoshi
d615c2f42a
internal/graphicsdriver/opengl/gl: bug fix: isES was not set
2023-01-07 03:46:30 +09:00
Hajime Hoshi
869ca1e01f
internal/graphicsdriver/opengl/gl: fix a wrong comment
2023-01-07 03:41:02 +09:00
Hajime Hoshi
983e8abd46
internal/graphicsdriver/opengl/gl: bug fix: an unavailable library name might be chosen
...
Instead, let's try all the names with dlopen.
Updates #2523
2023-01-07 03:06:12 +09:00
Hajime Hoshi
df7b7b731e
internal/graphicsdriver/opengl/gl: bug fix: libGL.so might not exist in Steam
...
Instead, libGL.so.1 might exist. Use LD_LIBRARY_PATH and list the
candidates.
Closes #2523
2023-01-07 00:03:07 +09:00
Hajime Hoshi
b860d8dc61
internal/graphicsdriver/metal/mtl: bug fix: test failures
2023-01-05 14:14:42 +09:00
Hajime Hoshi
c5848455f5
internal/graphicsdriver/metal: use MTLGPUFamily instead of MTLGPUFeatureSet
2023-01-05 13:37:37 +09:00
Hajime Hoshi
cf76e3c646
internal/graphicsdriver/opengl: better place to reset uniform variables
...
Updates #2517
2023-01-04 01:36:04 +09:00
Hajime Hoshi
599be725b9
internal/graphicsdriver/metal: fix comments
2023-01-03 23:16:01 +09:00
Hajime Hoshi
7418576c16
internal/ui: re-enable skipping to render the final screen when possible
...
With Metal, nextDrawable could return immediately when a command buffer
is empty. To avoid high CPU usage, this change adds a slight sleep in
this case.
With DirectX, Present waits for a while even though nothing is updated,
then that's fine.
Updates #2341
Updates #2342
Updates #2520
2023-01-03 23:09:28 +09:00
Hajime Hoshi
edb952c9e7
internal/graphicsdriver/metal: add comments
2023-01-03 22:10:33 +09:00
Hajime Hoshi
edf35b02cb
internal/graphicsdriver/opengl: record last uniform variables and reset them before swapping buffers
...
This is basically a revert of 6b4c696b31
.
This change resets the last uniform variables before swapping
buffers.
Updates #2517
2023-01-03 03:13:46 +09:00
Hajime Hoshi
6b4c696b31
internal/graphicsdriver/opengl: bug fix: needed always to set uniform variables
...
Before this fix, setting uniform variables could be skipped when the
values were the same. This caused some issues when a number of drawing
commands were much small than usual (e.g. SetScreenClearedEveryFrame
with false).
This change fixes this by not doing such optimization. Unfortunately
it was impossible to create a minimum reproducible unit test since
we cannot test the final screen framebuffer's states so far.
Closes #2517
2023-01-03 00:43:10 +09:00
Hajime Hoshi
34941ca083
all: separate the rendering thread from the main thread
...
Updates #1704
Closes #2512
2022-12-30 22:57:34 +09:00
Hajime Hoshi
8d020ad414
internal/graphicsdriver/metal: refactoring
2022-12-29 15:27:51 +09:00
Hajime Hoshi
5e17791e4e
internal/ui: bug fix: an offscreen was broken with SetScreenClearedEveryFrame(false)
...
Updates #2500
Closes #2510
2022-12-29 14:57:07 +09:00
Hajime Hoshi
0756be0b68
cmd/ebitenmobile: use an independent thread for rendering on iOS
...
Closes #2508
2022-12-28 23:37:13 +09:00
Hajime Hoshi
ece60af1b7
internal/graphicsdriver/metal: stop using presentsWithTransaction
...
presentsWithTransaction caused many troubles. The critical thing was
that nextDrawable sometimes took more than one second when a user
inputs with NSTextView.
Fortunately, applications work well even without presentsWithTransaction.
Updates #1029
Updates #1196
Updates #1745
Updates #1974
2022-12-27 19:00:56 +09:00
Hajime Hoshi
8b588587cc
internal/graphicsdriver/directx: do not cache a vertex shader when an error occurs
2022-12-25 04:27:15 +09:00
Hajime Hoshi
8e1bd4eaba
internal/graphicsdriver/directx: refactoring
2022-12-24 18:05:47 +09:00
Hajime Hoshi
fda0b1cbcb
internal/graphicsdriver/directx: reuse a compiled vertex shader if possible
...
D3DCompile can be a very slow function, and let's skip this if possible.
2022-12-24 17:44:54 +09:00
Hajime Hoshi
1b4f68d775
internal/graphicsdriver/directx: call D3DCompile in parallel
...
D3DCompile can be very slow on some old machines.
See also https://bugs.chromium.org/p/angleproject/issues/detail?id=422
2022-12-24 01:22:33 +09:00
Hajime Hoshi
de8184ac10
internal/graphicsdriver/directx: implement suspend/resume for Xbox
2022-12-23 17:28:03 +09:00
Hajime Hoshi
102a2d2138
internal/graphicsdriver/directx: change the default feature level to 11_0
...
The feature level 12_0 causes some issues on some machines. As we now
have EBITENGINE_DIRECTX_FEATURE_LEVEL, let's go back to the default
feature level 11_0.
Updates #2486
2022-12-07 21:16:47 +09:00
Hajime Hoshi
0a6813c17f
internal/graphics: use flatten []float32 slice instead of [][]float32
...
Closes #2479
2022-12-03 20:23:58 +09:00
Hajime Hoshi
5356b44286
internal/graphicsdriver/opengl: add comments about Firefox
...
Updates #2077
2022-11-23 00:57:16 +09:00
Hajime Hoshi
67430362cc
internal/graphicsdriver/directx: add EBITENGINE_DIRECTX_FEATURE_LEVEL
...
A fix for #2447 was a breaking-change as the DirectX driver was no longer
available for some old graphics card.
To support such old cards, provide a new environment variable
EBITENGINE_DIRECTX_FEATURE_LEVEL to specify a feature level.
The possible values are 11_0, 11_1, 12_0, 12_1, and 12_2. The default
value is 12_0.
Closes #2466
2022-11-21 02:46:07 +09:00
Hajime Hoshi
0b9cbaa1ed
internal/shader: introduce integer vectors (ivec2, ivec3, ivec4)
...
Closes #1911
2022-11-21 00:31:23 +09:00