ebiten: Steam Deck panic (windows binary using Proton)
In trying to run my project on a Steam Deck (using a Windows build run via either ‘GE-Proton7-20’ or ‘Proton 7.0’) I get this panic:
panic: glfwwin: SetProcessDpiAwarenessContext failed: Invalid parameter.
goroutine 1 [running]:
github.com/hajimehoshi/ebiten/v2/internal/ui.init.2()
/Users/johnny/go/pkg/mod/github.com/hajimehoshi/ebiten/v2@v2.4.0-alpha.3.0.20220529181715-c99b948df3da/internal/ui/ui_glfw.go:151 +0xa8
I’m new to using both Proton and Windows builds so maybe I’ve misconfigured something? Happy to try and debug, I’ve just got no idea where to start.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 31 (31 by maintainers)
Commits related to this issue
- internal/glfwwin: ignore the error at SetProcessDpiAwarenessContext Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- treat Windows error values as uint32 instead of windows.Handle The error value are defined as windows.Handle (64bit) in golang.org/x/sys/windows, but an actual type should be HRESULT (32bit). This ca... — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: bug fix: ID3D12Resource::Unmap does not return an value Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: bug fix: ID3D12Resource::Unmap does not return an value Updates #2113 Closes #2115 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: ignore higher 32bit values for Errno Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/glfwwin: use HRESULT for an error value instead of GetLastError GetLastError might not be reliable for some APIs like DwmFlush. Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/glfwwin: ignore errors from DWM functions DWM functions might not be implemented on Proton. In the original GLFW implementation, the returning values are not checked. Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: pass nil for pReadRange at Map Updates #2113 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: bug fix: ID3D12Resource::Map sometimes retrying Updates #2113 Closes #2116 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
- internal/graphicsdriver/directx: bug fix: ID3D12Resource::Map sometimes needs retrying Updates #2113 Closes #2116 — committed to hajimehoshi/ebiten by hajimehoshi 2 years ago
Thanks. As an Ebitengine Window binary should work as it is on Steam Deck, this should be an issue. I’ll try to fix this.
On the other hand, you can use Docker to build a Linux binary from macOS. See https://ebiten.org/blog/steam.html#Linux
I think I could reproduce the issue after some refactoring.
ID3D12Resource::Map
returned a null mapped pointer. This is mysterious since my refactoring should not change any behaviors. I might misunderstand the usage of Map. I’ll take a look more. Thanks,@hajimehoshi opengl works now! 😃
Proton does support DX12 via VKD3D-Proton, so I’m not sure why it is failing - I’ll try one of the examples instead of my project (which has a custom shader).
@hajimehoshi
directx:
opengl:
Mixed success.
v2.3.3 in DirectX mode: gets past the previous panic but then (both Proton 7.0 and GE-7.20)…
v2.3.3 in OpenGL mode (via EBITEN_GRAPHICS_LIBRARY=opengl) : works!