Open theoparis opened 2 months ago
Thank you for filing!
Could you attach the outputs of glxinfo
and eglinfo
here?
Rewriting GPU layer without having buffer storage or dynamic array size is possible but quite a lot of work.
Here is the output from those commands:
glxinfo: glxinfo.txt eglinfo: eglinfo.txt
I do have other computers and I can use Neovim however it'd be nice if Zed/blade worked on this laptop as well. I didn't realize it would take a lot of work. I also tried Zed with Vulkan but unfortunately its unusable with lavapipe.
I took another look at the code. It doesn't seem as bad. Something isn't right here, though, it should be working right away.
MissingFeatures(Features(BUFFER_STORAGE | DYNAMIC_ARRAY_SIZE))
This is an error from Naga, and it reports Naga backend capabilities. On Blade side we have a similarly named BUFFER_STORAGE
, which should be true
given your EGL extension list:
capabilities.set(
super::Capabilities::BUFFER_STORAGE,
extensions.contains("GL_EXT_buffer_storage"),
);
This should make our Naga configuration to use GLES-3.20 version:
let force_explicit_bindings = self
.capabilities
.contains(super::Capabilities::BUFFER_STORAGE);
let mut naga_options = glsl::Options {
version: glsl::Version::Embedded {
version: if force_explicit_bindings { 320 } else { 300 },
is_webgl: cfg!(target_arch = "wasm32"),
},
writer_flags: extra_flags | glsl::WriterFlags::ADJUST_COORDINATE_SPACE,
binding_map: Default::default(),
zero_initialize_workgroup_memory: false,
};
And that should unlock both features that the error is talking about on Naga side:
check_feature!(BUFFER_STORAGE, 400, 310);
check_feature!(DYNAMIC_ARRAY_SIZE, 430, 310);
I wonder if you'd be interested in running this through rust-gdb
and stepping through this code to see what's going on?
Alright, I'll try debugging it further. Also, I just ran the blade bunnymark demo with GLES and it worked fine 🤔
I have a older thinkpad and I cannot run the Zed editor because blade requires newer opengl features (BUFFER_STORAGE and DYNAMIC_ARRAY_SIZE)... Is there any chance these can be made optional?