-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linux with GLES <3.2: Bevy 3D rendering does not work, due to Cubemap Array Textures #8789
Comments
This is due to |
Looks like we already have |
Ah your right, I misread it. I think the actual issue is probably |
I want to point out that this is no longer an issue on Asahi, because Asahi has now been offering full featured and compliant drivers for all the latest versions of GL and GLES, for quite a while. I have been happily using Bevy 0.13 with 3D rendering just fine. The only remaining noticeable issues are #13115 and that Bevy defaults to software/CPU Vulkan instead of GLES, unless I set I do not have another system where the drivers only support GLES <3.2 to confirm if this issue is still present. If anyone can reproduce (maybe on some Arm SBC?), we will know if we should close this issue or keep it open. That said, given that wide hardware compatibility is a goal of the Bevy project, it is a good idea for Bevy's renderer to check for feature support and not just assume that things are available. |
#12849 appears related: it seems like this was hitting old Android devices too. |
Bevy version
Current main, commit d6d25d8
Relevant system information
Hardware: Apple M1 Pro, 14in MacBook Pro
OS: Asahi Linux
Drivers: mesa-asahi-edge-23.2.0_pre20230606-1
Kernel: linux-asahi-edge-6.3.asahi7-1
What you did
Run any bevy 3D example.
(note: wayland is required, see #8788)
What went wrong
Panic on wgpu error:
The panic occurs on the frame when the first 3D entity is spawned, as that is when Bevy attempts to create the Render Pipeline via the Pipeline Cache. If running the
load_gltf
example, we can see that the app runs for a while, displaying an empty window, while waiting for the GLTF asset to load, and then the crash occurs.Additional information
Asahi Linux does not yet have a Vulkan driver, so Bevy has to run via the fallback GL wgpu backend, which uses GLES3. GLES 3.0 support was just added to the Asahi GPU drivers.
Cubemap Array Textures are an extension (
GL_OES_texture_cube_map_array
) that is included in GLES 3.2. As we can see in Mesa Matrix, it is not supported on Asahi, and also in plenty of other drivers for that matter.Bevy requiring cubemap array textures to do any kind of 3D rendering is bad, as it limits platform compatibility. It prevents Bevy 3D apps from running on any of these drivers. This also includes Raspberry Pis and other embedded/mobile hardware.
I think Bevy should relax this requirement. Cubemap Array Textures (whatever bevy uses them for, I don't know, I am assuming environment map lighting) should be made optional by putting them behind shader defs / pipeline specialization.
It should be possible for Bevy users to make 3D apps that can run on such platforms, as long as they don't use the fancy rendering features that need this texture type.
Bevy 2D rendering works fine on Asahi. I am able to successfully run 2D examples and apps.
Edit: no longer an issue on Asahi, since Asahi provides GLES 3.2 compliant drivers now and all the relevant features are supported. May still be an issue on other systems/hardware/drivers.
The text was updated successfully, but these errors were encountered: