kvark / vange-rs

Rusty Vangers clone
https://vange.rs
Apache License 2.0
427 stars 21 forks source link

GL graphic backend not working on GeForce 9600 #160

Closed DileSoft closed 2 years ago

DileSoft commented 2 years ago

Video: Nvidia GeForce 9600.

OS: Linux Mint

2021-11-30T08:39:19Z ERROR wgpu_hal::gles::egl] GLES: [API/Error] ID 1280 : GL_INVALID_ENUM error generated. <pname> operation is invalid because a required extension (OpenGL_3_1) is not supported.

kvark commented 2 years ago

Thank you for filing! It's very hard to fix without knowing the exact place where this happens. Would you be able to run this in gdb and break on egl_debug_proc function, where the message_type == EGL_DEBUG_MSG_ERROR_KHR? Getting the call stack from this would be very helpful.

kvark commented 2 years ago
wgpu_hal::gles::egl::gl_debug_message_callback (source=33350, gltype=33356, id=1280, severity=37190, message=...)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu-hal/src/gles/egl.rs:205
#1  0x0000555556354c26 in core::ops::function::FnMut::call_mut () at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35/library/core/src/ops/function.rs:150
#2  0x0000555556405395 in glow::native::raw_debug_message_callback::{{closure}} () at /home/dilesoft/.cargo/registry/src/github.com-1ecc6299db9ec823/glow-0.11.0/src/native.rs:2753
#3  0x0000555556467130 in std::panicking::try::do_call (data=0x7ffffffecc78 "\350\020\377\377\377\177\000")
    at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35/library/std/src/panicking.rs:403
#4  0x0000555556479c7b in __rust_try ()
#5  0x000055555646707b in std::panicking::try (f=...) at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35/library/std/src/panicking.rs:367
#6  0x0000555556391821 in std::panic::catch_unwind (f=...) at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35/library/std/src/panic.rs:129
#7  0x000055555640528d in glow::native::raw_debug_message_callback (source=33350, gltype=33356, id=1280, severity=37190, length=121, 
    message=0x7ffff720d5a0 "GL_INVALID_ENUM error generated. <pname> operation is invalid because a required extension (OpenGL_3_1) is not supported.", user_param=0x7fffffff10e8)
    at /home/dilesoft/.cargo/registry/src/github.com-1ecc6299db9ec823/glow-0.11.0/src/native.rs:2749
#8  0x00007ffff5a8c878 in ?? () from /lib/x86_64-linux-gnu/libnvidia-eglcore.so.340.108
#9  0x00007ffff5a8c9c0 in ?? () from /lib/x86_64-linux-gnu/libnvidia-eglcore.so.340.108
#10 0x00007ffff5a8cdb8 in ?? () from /lib/x86_64-linux-gnu/libnvidia-eglcore.so.340.108
#11 0x00007ffff5ab7486 in ?? () from /lib/x86_64-linux-gnu/libnvidia-eglcore.so.340.108
#12 0x0000555556728225 in glow::gl46::call_atomic_ptr_2arg (name=..., ptr=0x7fffffff3160, a=35380, b=0x7ffffffed8dc)
    at /home/dilesoft/.cargo/registry/src/github.com-1ecc6299db9ec823/glow-0.11.0/src/gl46.rs:4313
#13 glow::gl46::struct_commands::GlFns::GetIntegerv (self=0x7fffffff2a30, pname=35380, data=0x7ffffffed8dc)
    at /home/dilesoft/.cargo/registry/src/github.com-1ecc6299db9ec823/glow-0.11.0/src/gl46.rs:15502
#14 0x0000555556738d94 in <glow::native::Context as glow::HasContext>::get_parameter_i32 (self=0x7fffffff2a30, parameter=35380)
    at /home/dilesoft/.cargo/registry/src/github.com-1ecc6299db9ec823/glow-0.11.0/src/native.rs:1023
#15 0x00005555564e81de in wgpu_hal::gles::adapter::<impl wgpu_hal::gles::Adapter>::expose (context=...)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu-hal/src/gles/adapter.rs:323
#16 0x00005555564d1d95 in <wgpu_hal::gles::egl::Instance as wgpu_hal::Instance<wgpu_hal::gles::Api>>::enumerate_adapters (self=0x555556d08df0)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu-hal/src/gles/egl.rs:716
#17 0x0000555556077823 in wgpu_core::instance::<impl wgpu_core::hub::Global<G>>::request_adapter::gather (instance=..., inputs=0x7fffffff8f28, compatible_surface=..., force_software=false, 
    device_types=0x7fffffff6f20) at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu-core/src/instance.rs:570
#18 0x0000555555fc066e in wgpu_core::instance::<impl wgpu_core::hub::Global<G>>::request_adapter (self=0x555556d08db0, desc=0x7fffffff8f18, inputs=...)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu-core/src/instance.rs:636
#19 0x000055555614818c in <wgpu::backend::direct::Context as wgpu::Context>::instance_request_adapter (self=0x555556d08db0, options=0x7fffffffa098)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu/src/backend/direct.rs:794
#20 0x0000555555fe057d in wgpu::Instance::request_adapter (self=0x7fffffff93e0, options=0x7fffffffa098)
    at /home/dilesoft/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/b32dcbb/wgpu/src/lib.rs:1461
kvark commented 2 years ago

Could you please also post the output of a run with RUST_LOG=wgpu_hal=debug environment?

kvark commented 2 years ago
[2021-11-30T17:20:26Z DEBUG wgpu_hal::gles::egl] Client extensions: [
        "EGL_KHR_client_get_all_proc_addresses",
        "EGL_EXT_client_extensions",
        "EGL_EXT_platform_base",
        "EGL_EXT_platform_x11",
    ]
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl] Loading X11 library to get the current display
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl] Using default platform
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl] Display vendor "NVIDIA", version (1, 4)
[2021-11-30T17:20:26Z DEBUG wgpu_hal::gles::egl] Display extensions: [
        "EGL_NV_system_time",
        "EGL_KHR_surfaceless_context",
        "EGL_KHR_image",
        "EGL_KHR_image_base",
        "EGL_KHR_gl_texture_2D_image",
        "EGL_KHR_gl_texture_cubemap_image",
        "EGL_KHR_gl_renderbuffer_image",
        "EGL_KHR_config_attribs",
        "EGL_KHR_fence_sync",
        "EGL_NV_sync",
        "EGL_KHR_reusable_sync",
        "EGL_KHR_create_context",
        "EGL_EXT_create_context_robustness",
        "EGL_KHR_stream",
        "EGL_KHR_stream_fifo",
        "EGL_KHR_stream_producer_eglsurface",
        "EGL_KHR_stream_consumer_gltexture",
        "EGL_NV_stream_sync",
        "EGL_KHR_get_all_proc_addresses",
        "EGL_IMG_context_priority",
        "EGL_NV_post_sub_buffer",
        "EGL_KHR_image_pixmap",
        "EGL_EXT_buffer_age",
    ]
[2021-11-30T17:20:26Z WARN  wgpu_hal::gles::egl]   EGL surface: -srgb
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl]   Trying native-render
[2021-11-30T17:20:26Z WARN  wgpu_hal::gles::egl] No config found!
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl]   Trying presentation
[2021-11-30T17:20:26Z WARN  wgpu_hal::gles::egl] EGL says it can present to the window but not natively. This has been confirmed to malfunction on Intel+NV laptops.
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl]   EGL context: +debug KHR
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl]   EGL context: +robust access EXT
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl]   EGL context: +surfaceless
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl] Max label length: 256
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::egl] Enabling GLES debug output
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::adapter] Vendor: NVIDIA Corporation
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::adapter] Renderer: GeForce 9600 GT/PCIe/SSE2
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::adapter] Version: OpenGL ES 2.0 340.108
[2021-11-30T17:20:26Z DEBUG wgpu_hal::gles::adapter] Extensions: {
        "GL_OES_fbo_render_mipmap",
        "GL_NV_timer_query",
        "GL_EXT_occlusion_query_boolean",
        "GL_NV_texture_compression_s3tc_update",
        "GL_OES_packed_depth_stencil",
        "GL_OES_vertex_array_object",
        "",
        "GL_NV_texture_compression_latc",
        "GL_OES_surfaceless_context",
        "GL_EXT_blend_minmax",
        "GL_OES_rgb8_rgba8",
        "GL_EXT_unpack_subimage",
        "GL_NV_copy_image",
        "GL_EXT_separate_shader_objects",
        "GL_EXT_texture_compression_dxt1",
        "GL_NV_copy_buffer",
        "GL_NV_texture_border_clamp",
        "GL_EXT_texture_sRGB_decode",
        "GL_EXT_sRGB",
        "GL_NV_EGL_stream_consumer_external",
        "GL_NV_occlusion_query_samples",
        "GL_OES_standard_derivatives",
        "GL_OES_texture_npot",
        "GL_OES_depth_texture",
        "GL_OES_texture_half_float_linear",
        "GL_EXT_map_buffer_range",
        "GL_OES_vertex_half_float",
        "GL_OES_element_index_uint",
        "GL_NV_draw_instanced",
        "GL_NV_framebuffer_multisample",
        "GL_OES_EGL_image",
        "GL_NV_read_depth",
        "GL_OES_EGL_sync",
        "GL_NV_pixel_buffer_object",
        "GL_NV_read_depth_stencil",
        "GL_NV_texture_compression_s3tc",
        "GL_OES_get_program_binary",
        "GL_OES_depth_texture_cube_map",
        "GL_EXT_texture_rg",
        "GL_EXT_color_buffer_half_float",
        "GL_EXT_shadow_samplers",
        "GL_NV_bgr",

        "GL_NV_generate_mipmap_sRGB",
        "GL_NV_non_square_matrices",
        "GL_NV_framebuffer_blit",
        "GL_EXT_frag_depth",
        "GL_NV_shadow_samplers_array",
        "GL_NV_draw_buffers",
        "GL_EXT_shader_integer_mix",
        "GL_EXT_robustness",
        "GL_OES_mapbuffer",
        "GL_OES_texture_half_float",
        "GL_NV_sRGB_formats",
        "GL_EXT_texture_format_BGRA8888",
        "GL_NV_instanced_arrays",
        "GL_NV_read_stencil",
        "GL_NV_pack_subimage",
        "GL_NV_packed_float_linear",
        "GL_NV_texture_array",
        "GL_KHR_debug",
        "GL_NV_shadow_samplers_cube",
        "GL_NV_explicit_attrib_location",
        "GL_EXT_texture_filter_anisotropic",
        "GL_EXT_debug_label",
        "GL_NV_packed_float",
        "GL_NV_fbo_color_attachments",
        "GL_EXT_sRGB_write_control",
        "GL_OES_compressed_ETC1_RGB8_texture",
        "GL_OES_depth24",
        "GL_OES_depth32",
        "GL_EXT_texture_compression_s3tc",
        "GL_EXT_texture_storage",
        "GL_NV_read_buffer",
    }
[2021-11-30T17:20:26Z INFO  wgpu_hal::gles::adapter] SL version: OpenGL ES GLSL ES 1.00
[2021-11-30T17:20:26Z ERROR wgpu_hal::gles::egl] GLES: [API/Error] ID 1280 : GL_INVALID_ENUM error generated. <pname> operation is invalid because a required extension (OpenGL_3_1) is not supported.
kvark commented 2 years ago

Unfortunately, what we have here is GLES-2.0 context given to us, even though we asked for GLES-3.0. I added a bit of code in https://github.com/gfx-rs/wgpu/pull/2237 to check that and not bother exposing such adapters. So this machine can't run wgpu's GLES backend :(