Commit Graph

975 Commits

Author SHA1 Message Date
Hajime Hoshi
9bd17de2d3 internal/graphicsdriver/opengl: remove unused members 2024-08-04 04:26:53 +09:00
Hajime Hoshi
297efea68b internal/graphicsdriver/opengl/gl: use C version for Android
Unfortunately PureGo's dlopen didn't work on some Android devices.
Use the Cgo version instead in the same way as v2.7.

Closes #3052
2024-08-01 11:52:07 +09:00
Hajime Hoshi
3106f98b52 internal/graphicsdriver/opengl/gl: add more error messages to load libraries 2024-07-31 21:35:24 +09:00
Hajime Hoshi
ef5ac4175d all: use bufio.Reader to improve reading speed 2024-07-29 02:28:37 +09:00
Hajime Hoshi
1804d56777 Revert "all: open up for more destinations images (#3013)"
This reverts commit 46d171c3c5.

Reason: MRT is now suspended. Let's revisit this when we work on MRT again.
2024-07-16 22:43:49 +09:00
Bertrand Jung
46d171c3c5
all: open up for more destinations images (#3013)
Updates #2930
2024-07-09 02:05:55 +09:00
Hajime Hoshi
073d022c2e internal/graphicsdriver/opengl: remove IsFramebuffer and IsRenderbuffer
These function return true in most cases, and when these return false,
the situation is pretty bad and recovering the situation would not be
possible.

IsFramebuffer and IsRenderbuffer cause round trips and affect performance.
Let's remove them.
2024-07-06 19:15:01 +09:00
Hajime Hoshi
4997e7e254 internal/graphicsdriver/opengl: lazy error check of shaders
See https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#dont_check_shader_compile_status_unless_linking_fails
2024-07-04 21:47:52 +09:00
Hajime Hoshi
c29d4b24bb internal/graphicsdriver/opengl: skip checkFramebufferStatus on browsers 2024-07-03 20:34:44 +09:00
Hajime Hoshi
a6d7cadab7 internal/graphicsdriver/playstation5: change struct member names 2024-06-17 03:04:18 +09:00
Bertrand Jung
22fd1f107e
internal/graphics: renamed shader image count to specify src (#3012)
This just specifies that the constant refers to the number of source images passed to a shader.

This makes a distinction with the number of dst images, that could potentially be more than 1 in the future.
2024-06-10 02:02:47 +09:00
Hajime Hoshi
e5d10c47e7 internal/graphicsdriver: reland: rename FillRule constants
Updates #3006
2024-06-08 12:16:20 +09:00
Hajime Hoshi
6ac1270cb0 Revert "internal/graphicsdriver: rename FillRule constants"
This reverts commit ab4a3af1b5.

Reason: compile error on Windows
2024-06-08 12:10:27 +09:00
Hajime Hoshi
ab4a3af1b5 internal/graphicsdriver: rename FillRule constants
Updates #3006
2024-06-08 11:54:46 +09:00
Hajime Hoshi
4818768965 shaderprecomp: remove ShaderSourceID
`ShaderSourceID` was confusing as there was no guarantee the same ID is
used for the same source if Ebitengine versions are different.

`ShaderSource` should be kept as the built-in shader contents should not
be exposed.

Updates #2861
Closes #2999
2024-05-27 00:01:05 +09:00
Hajime Hoshi
83ae577c80 Revert "shaderprecomp: remove ShaderSource and ShaderSourceID"
This reverts commit 8be3bb41d5.

Reason: removing `ShaderSource` unexpected exposes the source.

Updates #2999
2024-05-26 22:45:12 +09:00
Hajime Hoshi
8be3bb41d5 shaderprecomp: remove ShaderSource and ShaderSourceID
This change simplifies the APIs to avoid some confusions around IDs.

Updates #2861
Closes #2999
2024-05-26 22:42:52 +09:00
Hajime Hoshi
b0a4b6ebbf internal/graphicsdriver/playstation5: update the copyright year 2024-05-19 23:01:47 +09:00
Hajime Hoshi
657e04d3d1 internal/graphicsdriver/playstation5: separate the shader part 2024-05-19 18:05:16 +09:00
Hajime Hoshi
5bb060b1e9 shaderprecomp: add pssl 2024-05-12 15:07:38 +09:00
Hajime Hoshi
b3ad97b22b internal/graphicsdriver/metal/mtl: add comments 2024-05-06 22:07:16 +09:00
Hajime Hoshi
f0ca3f1870 internal/graphicsdriver/metal/mtl: follow ObjC convention
Closes #2981
2024-05-06 21:51:57 +09:00
Hajime Hoshi
2261cf76de internal/graphicsdriver/metal/ca: follow ObjC convention
Updates #2981
2024-05-06 19:36:17 +09:00
Hajime Hoshi
10d9660125 shaderprecomp: implement for Windows
Closes #2861
2024-05-06 16:03:57 +09:00
Hajime Hoshi
5d4a68b0ea internal/shaderir/hlsl: refactoring: separate calculation uniform offsets 2024-05-05 20:47:35 +09:00
Hajime Hoshi
a41af4528b internal/graphicsdriver/directx: refactoring 2024-05-05 18:58:13 +09:00
Hajime Hoshi
caab1ee29f internal/graphicsdriver/metal: refactoring 2024-05-05 17:18:06 +09:00
Hajime Hoshi
c46f62e184 all: add a new package shaderprecomp
The current implementation is only for macOS so far.

Updates #2861
2024-05-05 03:51:04 +09:00
Hajime Hoshi
ca9a80600d internal/graphicsdriver/metal: release MTLLibrary 2024-05-04 19:26:12 +09:00
Hajime Hoshi
59fb259181 internal/graphicsdriver/gl: use PureGo for Linux and UNIX
Updates #2284
2024-04-29 21:25:15 +09:00
Hajime Hoshi
4647e9de53 internal/glfw, internal/gamepad: update GLFW to v3.3.9
Updates #2960
2024-04-14 01:14:22 +09:00
Hajime Hoshi
3cf3b27729 internal/graphicsdriver/opengl: refactoring: rename variables
A framebuffer's width and height are unclear. Rename them to
viewportWidth and viewportHeight.
2024-04-10 23:38:25 +09:00
Hajime Hoshi
9c070eb2f3 Revert "internal/graphicsdriver/gl: use PureGo for Linux and UNIX"
This reverts commit 5701206229.

Reason: error on Android:

```
/Users/runner/go/pkg/mod/github.com/ebitengine/purego@v0.8.0-alpha.0.20240404024320-d0aedd0f4393/func.go:301:4: too few values in struct literal of type syscall15Args
```

https://github.com/hajimehoshi/ebiten/actions/runs/8582651053/job/23521003819
2024-04-07 03:00:13 +09:00
Hajime Hoshi
5701206229 internal/graphicsdriver/gl: use PureGo for Linux and UNIX
Updates #2284
2024-04-07 02:08:40 +09:00
Hajime Hoshi
caecd81f4e Revert "internal/graphicsdriver/directx: add 'tearing' for EBITENGINE_DIRECTX"
This reverts commit b6252a41f2.

Reason: We need more investigation about tearing and vsync=off

Updates #2858
2024-03-30 20:08:06 +09:00
Hajime Hoshi
b6252a41f2 internal/graphicsdriver/directx: add 'tearing' for EBITENGINE_DIRECTX
Now tearing happens only when 'tearing' is specified and vsync is off.

Closes #2858
2024-03-23 17:53:13 +09:00
Hajime Hoshi
732eedf2e0 all: use github.com/ebitengine/gomobile instead of golang.org/x/mobile
Closes #2748
Closes #2899
2024-02-24 22:07:27 +09:00
Hajime Hoshi
770fcff4c2 internal/graphicsdriver/directx: bug fix: Go 1.22 + 32bit Windows + DirectX 12 didn't work well
Apparently, a pseudo padding was needed for D3D12_RESOURCE_DESC,
but this is still mysterious.

This change also add Go 1.22 to the GitHub Actions.

Closes #2867
2024-01-27 18:06:53 +09:00
Hajime Hoshi
8551cd350f internal/ui: bug fix: need to sleep when swapping buffers is skipped
Closes #2890
2024-01-24 12:20:30 +09:00
Hajime Hoshi
006f14ac19 internal/graphicsdriver/playstation5: bug fix: link error 2024-01-22 00:14:00 +09:00
Hajime Hoshi
52e0f10ff7 internal/graphicsdriver/playstation5: bug fix: compile error 2024-01-22 00:05:02 +09:00
Hajime Hoshi
f0509096f8 internal/graphicsdriver/playstation5: add ebitengine_IsErrorNil 2024-01-21 23:54:02 +09:00
Hajime Hoshi
e0ccd013ac internal/graphicsdriver/directx: bug fix: depth should be passed by math.Float32bits
As depth was always 0, there was not an actual problem.
2024-01-21 21:43:09 +09:00
Hajime Hoshi
5887142da7 internal/grpahicsdriver/metal/mtl: use 3 drawings for fullscreen
Hajime found that renderings were delayed with 2 drawing in fullscreen
though FPS might be lowered. This is mysterious but there is no other
good solution.

Updates #2883
2024-01-19 18:29:47 +09:00
Hajime Hoshi
e39c50c296 internal/graphicsdriver/metal: add comments
Updates #2880
Updates #2883
2024-01-17 20:51:32 +09:00
Hajime Hoshi
055db234a1 internal/graphicsdriver/metal: bug fix: use 2 as a drawable count for Arm Mac
Closes #2883
2024-01-17 18:57:50 +09:00
Hajime Hoshi
a0cb0d0568 internal/graphicsdriver/playstation5: use message to detect errors 2024-01-14 22:18:12 +09:00
Hajime Hoshi
00e67b8419 internal/graphicsdriver/playstation5: improve error handlings
Updates #2799
2024-01-14 00:42:13 +09:00
Hajime Hoshi
5a36b4bb48 internal/graphicsdriver/opengl/gl: remove IsTexture
Updates #805
2024-01-09 02:35:30 +09:00
Hajime Hoshi
48e3c766f7 internal/graphicsdriver: remove Image.IsInvalidated
Updates #805
2024-01-09 00:30:21 +09:00
Hajime Hoshi
a19f079da8 internal/graphicsdriver/playstation5: remove NeedsRestoring 2024-01-09 00:26:01 +09:00
Hajime Hoshi
771e5685f8 internal/graphicsdriver: remove NeedsRestoring()
Updates #805
2024-01-08 23:27:28 +09:00
Hajime Hoshi
a30f075896 cmd/ebitenmobile: use setPreserveEGLContextOnPause(true)
setPreserveEGLContextOnPause(true) suppresses context losts, and
basically we will no longer need our restoring logic.

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

Reason: the window unexpectedly blinks when exiting from fullscreen

Updates #2880
2024-01-02 22:47:09 +09:00
Hajime Hoshi
3c7bcf3035 internal/graphicsdriver/metal: bug fix: use 3 drawables for fullscreen
Closes #2880
2024-01-02 22:33:05 +09:00
Hajime Hoshi
dddfb7317b internal/cocoa: integrate internal/graphicsdriver/metal/ns and internal/cocoa 2024-01-02 22:22:19 +09:00
Hajime Hoshi
c48fc05132 internal/graphicsdriver/metal: use %w instead of %v for errors 2023-12-24 22:29:53 +09:00
Hajime Hoshi
4895ae7f93 internal/graphicsdriver/opengl: refactoring: move some functions from internal/ui
Updates #2714
2023-12-23 22:30:13 +09:00
Hajime Hoshi
ee2ca6d20c internal/graphicsdriver/opengl: refactoring 2023-12-23 19:28:41 +09:00
Hajime Hoshi
01a4e29c5b internal/graphicsdriver/opengl/gl: add a build tag for PS5 2023-12-23 19:01:36 +09:00
Hajime Hoshi
037a818601 internal/graphicsdriver/opengl: bug fix: go-vet failed 2023-12-20 03:06:58 +09:00
Hajime Hoshi
4ef7b5c166 internal/graphicsdriver/opengl: refactoring: hide SetGLFWClientAPI
Updates #2714
2023-12-20 02:47:19 +09:00
Hajime Hoshi
f6f0cf05e6 internal/ui: refactoring: move updateVsyncOnRenderThread to the OpenGL driver
Updates #2714
2023-12-20 02:38:20 +09:00
Hajime Hoshi
12ae411d15 internal/graphicsdriver/opengl, internal/graphicsdriver/opengl/gl: refactoring 2023-12-20 02:19:33 +09:00
Hajime Hoshi
6fd18150d8 internal/graphicsdriver/opengl: move egl to the package opengl
Updates #2714
2023-12-19 23:41:14 +09:00
Hajime Hoshi
425b4dd99a internal/graphicsdriver/opengl: fix a wrong comment
Updates #2517
2023-12-18 01:44:27 +09:00
bsski
b8df1217c3
all: fix typos (#2864) 2023-12-17 22:42:34 +09:00
Hajime Hoshi
3ca6184294 ebiten: add a new FillRule: NonZero
Closes #2782
2023-11-06 12:11:38 +09:00
Hajime Hoshi
358106bdc0 internal/graphicsdriver/playstation5: bug fix: compile failure 2023-11-05 21:45:40 +09:00
Hajime Hoshi
95fcbb1e51 internal/graphicsdriver/playstation5: add a binding
Updates #2799
2023-11-05 21:27:30 +09:00
Hajime Hoshi
4d8bb1a5dd internal/graphicsdriver/playstation5: bug fix: build failure 2023-11-04 19:45:45 +09:00
Hajime Hoshi
4e93efa5ac internal/graphicsdriver: reland: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 19:09:50 +09:00
Hajime Hoshi
f695df5924 Revert "internal/graphicsdriver: add FillRule and replace boolean values with this"
This reverts commit 38cf964a3b.

Reason: build failure on Windows
2023-11-04 19:02:40 +09:00
Hajime Hoshi
38cf964a3b internal/graphicsdriver: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 18:57:31 +09:00
Hajime Hoshi
f2544a1bd9 internal/graphicsdriver: use []uint32 instead of []uint16 for indices
Updates #2612
2023-11-04 04:39:17 +09:00
Hajime Hoshi
5da80ef3a7 internal/graphicsdriver: add playstation5
Updates #2799
2023-10-29 22:16:58 +09:00
Hajime Hoshi
1db0abc4ee internal/graphicsdriver/directx: add comments 2023-10-29 00:19:36 +09:00
Hajime Hoshi
61498e899a internal/graphicsdriver/metal: typo 2023-10-28 02:43:57 +09:00
Hajime Hoshi
d91f328083 internal/graphicsdriver/metal: bug fix: use 3 for drawable count when vsync is off
Updates #2822
2023-10-28 02:39:47 +09:00
Hajime Hoshi
80301eb29e internal/graphicsdriver/metal: change the maximum drawable count to 2
Updates #2822
2023-10-28 02:15:02 +09:00
Hajime Hoshi
630789757f all: add files for PlayStation 5
The implementation is WIP.

Updates #2799
2023-10-16 00:54:08 +09:00
Hajime Hoshi
8274b32301 internal/graphicslibrary: refactoring: remove IsGL and IsDirectX 2023-10-15 17:30:16 +09:00
Hajime Hoshi
567e2fa04c ebiten: add BlendOperationMin and BlendOperationMax
Closes #2395
2023-10-13 01:56:33 +09:00
Hajime Hoshi
e7ad5c52fe internal/glfw: merge internal/goglfw into internal/glfw
This also changes APIs in internal/glfw to return errors.

Updates #2703
2023-10-05 03:09:51 +09:00
Hajime Hoshi
0e722669ef internal/glfw: add const definitions
This is one of the steps to merge internal/glfw and internal/goglfw.

Updates #2703
2023-10-04 03:04:47 +09:00
Hajime Hoshi
b2a6e79a5a internal/graphicsdriver/opengl/gl: rename procaddr_others.go to procaddr_linbsd.go 2023-10-02 01:02:51 +09:00
Hajime Hoshi
386bda3c84 internal/graphicsdriver/opengl/gl: add do-not-edit comment 2023-10-02 00:21:53 +09:00
Hajime Hoshi
4ca3fa5e57
internal/graphicsdriver: replace Region with image.Rectangle (#2791)
Closes #2790
2023-09-28 14:29:55 +09:00
Hajime Hoshi
915ed48f7a internal/graphicsdriver/metal/mtl: bug fix: fail to resolve Metal.framework path with Xcode 15
Updates #2732
Closes #2784
2023-09-24 16:15:54 +09:00
Hajime Hoshi
6f41a05264 Revert "internal/graphicsdriver/directx: remove tearing"
This reverts commit 78d3e4273b.

Reason: tearing is potentially risky but needed for maximizing FPS.
Also, tearing is officially recommended by Microsoft (see [1])

Closes #2697

[1] https://github.com/microsoft/DirectX-Graphics-Samples/blob/master/Samples/Desktop/D3D12Raytracing/src/D3D12RaytracingHelloWorld/DeviceResources.cpp#L520
2023-09-18 03:30:34 +09:00
Hajime Hoshi
dec08b9e4e all: bug fix: relative paths for dlopen didn't work on macOS Sonoma
Closes #2732
2023-08-26 14:52:52 +09:00
Hajime Hoshi
592d6c57b7 internal/graphicsdriver/metal: improve an error message for Metal initialization
Updates #2732
2023-08-26 12:43:16 +09:00
Hajime Hoshi
e270dea460 internal/graphicsdriver: use []PixelsArgs for ReadPixels
Closes #2592
2023-08-17 03:06:48 +09:00
Hajime Hoshi
842c3cbfcd internal/graphicscommand: use a slice to values instead of pointers
This should reduce heap allocations.
2023-08-16 23:23:30 +09:00
Hajime Hoshi
377b0b8502 internal/graphicscommand: rename WritePixelsArgs -> PixelsArgs
Updates #2592
2023-08-16 22:34:56 +09:00
Hajime Hoshi
4158e206e6 internal/graphicsdriver/metal: rename files 2023-08-03 23:54:48 +09:00