-
Notifications
You must be signed in to change notification settings - Fork 969
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
regression: compute example doesn't work on wayland #6097
Comments
platform |
also forcing the hello-compute example to run on xorg make it work correctly
|
It seems like changing XDG_RUNTIME_DIR is equivalent to running on xorg from the point of view of applications , so the problem lies in the relation with wayland Its weird that the rendering examples (like hello-triangle, and the others) where not affected by this, but the compute exampe (which didn't occur to me it would need to know about the compositor) is affeced |
0.18.0 works 0.19.0 gives an error
0.20.0 gives a different error
|
Maybe it helps, with a minimal wayland server it works correctly #include <stdio.h>
#include <stdlib.h>
#include <wayland-server.h>
// Forward declarations
static void bind_compositor(struct wl_client *client, void *data, uint32_t version, uint32_t id);
static void bind_shell(struct wl_client *client, void *data, uint32_t version, uint32_t id);
int main(int argc, char *argv[])
{
struct wl_display *display = wl_display_create();
if (!display) {
printf("Failed to create Wayland display\n");
return 1;
}
const char *socket = wl_display_add_socket_auto(display);
if (!socket) {
printf("Failed to add Wayland socket\n");
wl_display_destroy(display);
return 1;
}
fprintf(stderr, "Running Wayland server on %s\n", socket);
// Create a global for the compositor interface
struct wl_global *compositor_global = wl_global_create(display, &wl_compositor_interface, 4, NULL, bind_compositor);
if (!compositor_global) {
printf("Failed to create compositor global\n");
wl_display_destroy(display);
return 1;
}
// Create a global for the shell interface
struct wl_global *shell_global = wl_global_create(display, &wl_shell_interface, 1, NULL, bind_shell);
if (!shell_global) {
printf("Failed to create shell global\n");
wl_display_destroy(display);
return 1;
}
// Start the Wayland server
wl_display_init_shm(display); // Initialize shared memory support
wl_display_run(display);
wl_display_destroy(display);
return 0;
}
// Compositor bind function
static void bind_compositor(struct wl_client *client, void *data, uint32_t version, uint32_t id)
{
struct wl_resource *resource = wl_resource_create(client, &wl_compositor_interface, version, id);
if (!resource) {
wl_client_post_no_memory(client);
return;
}
}
// Shell bind function
static void bind_shell(struct wl_client *client, void *data, uint32_t version, uint32_t id)
{
struct wl_resource *resource = wl_resource_create(client, &wl_shell_interface, version, id);
if (!resource) {
wl_client_post_no_memory(client);
return;
}
} the servers I tried are mutter and weston, both error the same way |
This is probably a result of #4718. The validation errors you are getting are expected as the OpenGL backend/driver are more limited. |
Does changing |
Im using the vulkan backend, Wayland clients looks for Wayland sockets in XDG_RUNTIME_DIR so when it's changed the apps fallback to xorg, this have no relation to opengl or backbends as far as I can tell |
Do you have multiple Vulkan drivers installed? Could you include the |
in version 0.19.0 wayland
xorg
so it seems like when I use wayland it indeed use opengl backend, and xorg it uses vulkan backend but with the cpu implementation so I guess I have a coupe of remarks/questions left
So indeed its because of the old cpu, though I think it would be great if the error message said your cpu is not supported |
also I want to try vulkan in wayland but this doesn't work (it still chooses gl)
|
I think the "MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete" message is printed by the driver itself which happens before we filter out the driver.
I think we do show a warning, make sure to set RUST_LOG to warn or lower.
The env var won't work unless you hook it up. You should set the |
context: denoland/deno#24857
This used to work with old versions of wgpu (the one thats used by deno 1.43.0 ) but I didn't search for the version yet
Problem:
Running the compute example fails with
the deafult value in fedora for XDG_RUNTIME_DIR is /run/user/1000
if I run with that variable unset or changed to another location it works
The text was updated successfully, but these errors were encountered: