Open ByteNybbler opened 1 week ago
Am I understanding it correctly that this did not happen in 0.13 and is due to the wgpu update? Update: yes, https://github.com/gfx-rs/wgpu/pull/5171 is part of WGPU 0.20.0 which is first used by Bevy 0.14. As such, this is a regression: some older hardware can no longer run Bevy stuff.
Open question: is this important? How many machines are affected? I'd like to test this, but I don't know how to force WGPU to use my integrated GPU (other than physically removing my actual GPU of course).
Running the pbr
example on OpenGL on my dedicated GPU at least renders fine but spams the following hundreds of times:
I don't think this is related to this issue in particular, but worth noting.
Set the WGPU_ADAPTER_NAME environment variable to force a specific GPU: https://github.com/gfx-rs/wgpu?tab=readme-ov-file#environment-variables
Am I understanding it correctly that this did not happen in 0.13 and is due to the wgpu update? Update: yes, gfx-rs/wgpu#5171 is part of WGPU 0.20.0 which is first used by Bevy 0.14. As such, this is a regression: some older hardware can no longer run Bevy stuff.
I switched to v0.13.2
and tried WGPU_BACKEND=gl cargo run --example pbr
and I still got the same 'GL_EXT_texture_shadow_lod' is not supported
errors as above. This seems to prove that gfx-rs/wgpu#5171 is not the cause of this error, and therefore this doesn't seem to be a regression (as far as I can tell, anyway).
Open question: is this important? How many machines are affected?
I think my integrated GPU is around a decade old now. However, it can run almost every game I come across without issue. In order for Bevy to be truly competitive as a game engine, I would argue that it's important to try to maximize hardware compatibility (within reason, of course).
Running the
pbr
example on OpenGL on my dedicated GPU at least renders fine but spams the following hundreds of times:
That looks like #13115 which is probably only tangentially related to this issue.
@ByteNybbler thanks for the info! Removing the milestone then.
Bevy version
So far this panic has been reproduced on the following versions of Bevy:
Relevant system information
SystemInfo { os: "Windows 10 Home", kernel: "19045", cpu: "Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz", core_count: "4", memory: "15.9 GiB" }
AdapterInfo { name: "Intel(R) HD Graphics 4600", vendor: 32902, device: 0, device_type: IntegratedGpu, driver: "OpenGL", driver_info: "4.3.0 - Build 20.19.15.4531", backend: Gl }
cargo 1.79.0 (ffa9cf99a 2024-06-03)
What you did
WGPU_BACKEND=gl cargo run --example pbr
I've also noticed this same error on the
3d_shapes
andload_gltf
examples. Maybe any PBR scene will cause this issue?What went wrong
Bevy does not seem to gracefully handle
GL_EXT_texture_shadow_lod
not being supported by the render device, and this causes shader compilation failures. This essentially makes many 3D Bevy games unplayable on older graphics hardware when using OpenGL.Additional information
wgpu devs say that it is downstream's responsibility to handle missing
GL_EXT_texture_shadow_lod
gracefully, perhaps by using a downlevel flag: https://github.com/gfx-rs/wgpu/issues/5344#issuecomment-1983324065https://github.com/gfx-rs/wgpu/pull/5171 introduced a new dependency on the
GL_EXT_texture_shadow_lod
feature, but upon testing older Bevy versions, it appears to be unrelated to this issue.Maybe it's possible that this issue could be fixed by https://github.com/bevyengine/bevy/pull/12849?
I found this bug while I was trying to test https://github.com/bevyengine/bevy/issues/8789.