emilk / egui

egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
https://www.egui.rs/
Apache License 2.0
22.19k stars 1.6k forks source link

dont work in windows 10 arm #628

Closed OElabs-official closed 10 months ago

OElabs-official commented 3 years ago

tested with snapdragon 850 && 810 CPU (galaxy book 2 / Lumia 950 XL) gui force closed.

TobTobXX commented 3 years ago

I can confirm that it works (almost perfectly) on a Pinephone on Linux. So ARM can work.

Specs:

4 x ARM Cortex A53 cores @ 1.152 GHz ARM Mali 400 MP2 GPU

emilk commented 3 years ago

@OElabs-official does the glium examples work? does the glow examples work?

OElabs-official commented 3 years ago

@OElabs-official does the glium examples work? does the glow examples work?

no, tested glium toturial-01, works on host (win 10 x64 lstc (cargo run tested Ok),but force closed on target "cargo build --release --target=aarch64-pc-windows-msvc" >>

thread 'main' panicked at 'called Result::unwrap() on an Err value: GlutinCreationError(NoAvailablePixelFormat)', src\main.rs:8:60 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

emilk commented 3 years ago

Please open a issue on the glium repo then. It would be great if the glow examples work (please test!), because that is likely the future backend of eframe.

OElabs-official commented 3 years ago

Please open a issue on the glium repo then. It would be great if the glow examples work (please test!), because that is likely the future backend of eframe. sorry , I tested glow but cannt build it in windows or linux host, windows host reported "sdl2" error and I cannt fix it, linux cannt build it because it seems no msvc tools to do that on linux ? .

AlexApps99 commented 3 years ago

That's quite crytic, was there anything else to the errors than that? egui_glow, like egui_glium, uses winit and glutin for windowing and context. There shouldn't be any SDL2 errors, and if there are, you need to provide more details about it.

As for MSVC on Linux, you are right that there is practically no way to use Microsoft's tooling (MSVC) on Linux. You can, however, use MinGW ( x86_64-pc-windows-gnu) on Linux, but personally I recommend just building on Windows for a Windows target, as MinGW binaries can't link with MSVC libraries.

emilk commented 3 years ago

@OElabs-official please check out latest master of egui and then go to egui_demo_app/Cargo.toml and change lines 13-14 to read:

# eframe = { version = "0.14.0", path = "../eframe" }
eframe = { version = "0.14.0", path = "../eframe", default-features = false, features = ["default_fonts", "egui_glow"] }

(flip which line is commented)

Then run (cd egui_demo_app && cargo run --release) - does that work for you?

OElabs-official commented 3 years ago

@OElabs-official please check out latest master of egui and then go to egui_demo_app/Cargo.toml and change lines 13-14 to read:

# eframe = { version = "0.14.0", path = "../eframe" }
eframe = { version = "0.14.0", path = "../eframe", default-features = false, features = ["default_fonts", "egui_glow"] }

(flip which line is commented)

Then run (cd egui_demo_app && cargo run --release) - does that work for you?

err while >> --release error: unused import: glutin::platform::windows::WindowBuilderExtWindows --> egui_glow\src\epi_backend.rs:4:5 | 4 | use glutin::platform::windows::WindowBuilderExtWindows;

so i deleted this line; works fine on host <x86-64,win 10>;

but same problem on target ;

Err >> NoAvailablePixelFormat

egui_glow\src\epi_backend.rs:48:14

OElabs-official commented 3 years ago

That's quite crytic, was there anything else to the errors than that? egui_glow, like egui_glium, uses winit and glutin for windowing and context. There shouldn't be any SDL2 errors, and if there are, you need to provide more details about it.

As for MSVC on Linux, you are right that there is practically no way to use Microsoft's tooling (MSVC) on Linux. You can, however, use MinGW ( x86_64-pc-windows-gnu) on Linux, but personally I recommend just building on Windows for a Windows target, as MinGW binaries can't link with MSVC libraries.

Compiling howto v0.1.0 (D:\code-x\download\glow-main\examples\howto) error: linking with link.exe failed: exit code: 1181 | = note: "C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.30.30704\bin\HostX64\arm64\link.exe" "/NOLOGO" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.0.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.1.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.10.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.11.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.12.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.13.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.14.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.15.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.2.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.3.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.4.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.5.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.6.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.7.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.8.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.howto.31676fc3-cgu.9.rcgu.o" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.2go375xfnqsfo67w.rcgu.o" "/LIBPATH:D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps" "/LIBPATH:D:\code-x\download\glow-main\target\release\deps" "/LIBPATH:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\libsdl2-0a65ea06ca7aa7f8.rlib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\libsdl2_sys-60ff34fa3cf8f092.rlib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\libbitflags-68397fb82e4c2d50.rlib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\liblazy_static-fa0a8204b1363ea6.rlib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\liblibc-b04ac38ad0655cf4.rlib" "D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\libglow-bb8fe772e2a9dd4e.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libstd-422722d7e4de43ac.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libpanic_unwind-5f96c0cd1a06d736.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libstd_detect-0d20309aeb3e3f9e.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\librustc_demangle-a45db52b7eb24207.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libhashbrown-d435d008c09dd87d.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\librustc_std_workspace_alloc-2d9cba5253c2620e.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libunwind-0f9413315ea00ab9.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libcfg_if-d670846406c82876.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\liblibc-8a66fc70e09558d8.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\liballoc-e5d1b39ef5bf3e1d.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\librustc_std_workspace_core-a2ac385b016ee46c.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libcore-3412b2e61c504230.rlib" "C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib\libcompiler_builtins-a8cdda17f6347e22.rlib" "SDL2.lib" "kernel32.lib" "ws2_32.lib" "advapi32.lib" "userenv.lib" "kernel32.lib" "msvcrt.lib" "/NXCOMPAT" "/LIBPATH:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib" "/OUT:D:\code-x\download\glow-main\target\aarch64-pc-windows-msvc\release\deps\howto.exe" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\intrinsic.natvis" "/NATVIS:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\liballoc.natvis" "/NATVIS:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\libcore.natvis" "/NATVIS:C:\Users\lstsw\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\libstd.natvis" = note: LINK : fatal error LNK1181: cannot open input file 'SDL2.lib'

AlexApps99 commented 3 years ago

What is glow-main/examples/howto? None of the examples we provide link to SDL2, are you sure that even has egui in it?

AlexApps99 commented 3 years ago

For NoAvailablePixelFormat, see glutin/ISSUES.md. Essentially, your graphics drivers do not support the OpenGL configuration that egui requires (probably to do with the sRGB framebuffer). The only way to fix that, is to try update them.

AlexApps99 commented 3 years ago

What is glow-main/examples/howto? None of the examples we provide link to SDL2, are you sure that even has egui in it?

Sorry for my confusion, I managed to find the example of glow you were using.

Essentially, the problem is that the example is trying to link to SDL2, as it uses SDL2 for windowing/context, instead of what egui uses, which is glutin. Your system does not have SDL2 installed. See here on how to install it.

I need to emphasize that this will not help you get egui working, as egui does not use SDL2, and either way, the problem with intializing OpenGL context would persist for any context library, so don't bother installing SDL2 and getting the example working unless you really want to.

The only fix for this is to make a version of egui that does not use an sRGB framebuffer, or for your drivers to support it.

emilk commented 10 months ago

The glium backend is gone, and egui no longer use an sRGB framebuffer, so I'm closing this