VirtualGL / virtualgl

Main VirtualGL repository
https://VirtualGL.org
Other
690 stars 104 forks source link

Running chrome in docker container inside virtualgl results in core dumped #265

Open vlrevolution opened 1 week ago

vlrevolution commented 1 week ago

I'm trying to run chrome inside docker on top of the following image:

FROM nvidia/opengl:1.2-glvnd-runtime-ubuntu20.04
ARG DEBIAN_FRONTEND=noninteractive
ARG CHROME_VERSION=130.0.6723.58-1
# ARG CHROME_VERSION=129.0.6668.100-1

# Install system dependencies
# Install system dependencies
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    xvfb \
    x11vnc \
    libgconf-2-4 \
    libnss3 \
    libxss1 \
    libasound2 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libgtk-3-0 \
    libgbm1 \
    x11-xkb-utils \
    x11-apps \
    mesa-utils \
    libglu1-mesa \
    libegl1-mesa \
    libvulkan-dev \
    libvulkan1 \
    vulkan-utils \
    mesa-vulkan-drivers \
    dbus \
    dbus-x11 \
    sudo \
    software-properties-common \
    && add-apt-repository ppa:deadsnakes/ppa \
    && apt-get update \
    && apt-get install -y python3.9 python3.9-dev python3.9-distutils \
    && wget https://bootstrap.pypa.io/get-pip.py \
    && python3.9 get-pip.py \
    && rm get-pip.py \
    && wget https://github.com/VirtualGL/virtualgl/releases/download/3.1.1/virtualgl_3.1.1_amd64.deb -O virtualgl.deb \
    && apt-get install -y ./virtualgl.deb \
    && rm virtualgl.deb \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN /opt/VirtualGL/bin/vglserver_config -config +s +f -t

# Install Google Chrome {CHROME_VERSION}
RUN wget -q -O google-chrome-stable_${CHROME_VERSION}_amd64.deb "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION}_amd64.deb" && \
    apt-get update && \
    apt-get install -y ./google-chrome-stable_${CHROME_VERSION}_amd64.deb && \
    rm google-chrome-stable_${CHROME_VERSION}_amd64.deb && \
    rm -rf /var/lib/apt/lists/*

However running chrome results in core dumped: vglrun -d egl google-chrome --in-process-gpu --use-angle=gl-egl --no-sandbox

ERROR:             vkGetInstanceProcAddr: Invalid instance [VUID-vkGetInstanceProcAddr-instance-parameter]
[1018/125125.080343:ERROR:elf_dynamic_array_reader.h(64)] tag not found
[1018/125125.088249:ERROR:file_io_posix.cc(145)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq: No such file or directory (2)
[1018/125125.088280:ERROR:file_io_posix.cc(145)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq: No such file or directory (2)
Aborted (core dumped)

Removing --in-process-gpu no longer crashes but gpu is not working, chrome://gpu shows:

Graphics Feature Status
=======================
*   Canvas: Software only, hardware acceleration unavailable
*   Canvas out-of-process rasterization: Disabled
*   Direct Rendering Display Compositor: Disabled
*   Compositing: Software only. Hardware acceleration disabled
*   Multiple Raster Threads: Enabled
*   OpenGL: Disabled
*   Rasterization: Software only. Hardware acceleration disabled
*   Raw Draw: Disabled
*   Skia Graphite: Disabled
*   Video Decode: Software only. Hardware acceleration disabled
*   Video Encode: Software only. Hardware acceleration disabled
*   Vulkan: Disabled
*   WebGL: Software only, hardware acceleration unavailable
*   WebGL2: Software only, hardware acceleration unavailable
*   WebGPU: Disabled
*   WebNN: Software only, hardware acceleration unavailable

Version Information
===================
Data exported              : 2024-10-18T12:52:17.176Z
Chrome version             : Chrome/130.0.6723.58
Operating system           : Linux 5.15.153.1-microsoft-standard-WSL2
Software rendering list URL: https://chromium.googlesource.com/chromium/src/+/3a50e012e4c9b8a410a4e2b12bf577e69ee8f755/gpu/config/software_rendering_list.json
Driver bug list URL        : https://chromium.googlesource.com/chromium/src/+/3a50e012e4c9b8a410a4e2b12bf577e69ee8f755/gpu/config/gpu_driver_bug_list.json
ANGLE commit id            : 21e4b689c009
2D graphics backend        : Skia/130 3c64459d5df2fa9794b277f0959ed8a92552bf4c
Command Line               : /usr/bin/google-chrome --use-angle=gl-egl --no-sandbox --flag-switches-begin --flag-switches-end

Driver Information
==================
Initialization time             : 42
In-process GPU                  : false
Passthrough Command Decoder     : true
Sandboxed                       : false
GPU0                            : VENDOR= 0xffff [Google Inc. (Google)], DEVICE=0xffff [ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0)], DRIVER_VENDOR=SwANGLE, DRIVER_VERSION=5.0.0 *ACTIVE*
Optimus                         : false
AMD switchable                  : false
Pixel shader version            : 1.00
Vertex shader version           : 1.00
Max. MSAA samples               : 4
Machine model name              : 
Machine model version           : 
GL implementation parts         : (gl=egl-angle,angle=swiftshader)
Display type                    : ANGLE_SWIFTSHADER
GL_VENDOR                       : Google Inc. (Google)
GL_RENDERER                     : ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0)
GL_VERSION                      : OpenGL ES 2.0.0 (ANGLE 2.1.23875 git hash: 21e4b689c009)
GL_EXTENSIONS                   : GL_AMD_performance_monitor GL_ANGLE_base_vertex_base_instance_shader_builtin GL_ANGLE_client_arrays GL_ANGLE_compressed_texture_etc GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_get_image GL_ANGLE_get_serialized_context_string GL_ANGLE_get_tex_level_parameter GL_ANGLE_instanced_arrays GL_ANGLE_memory_object_flags GL_ANGLE_memory_size GL_ANGLE_pack_reverse_row_order GL_ANGLE_polygon_mode GL_ANGLE_program_binary_readiness_query GL_ANGLE_program_cache_control GL_ANGLE_read_only_depth_stencil_feedback_loops GL_ANGLE_relaxed_vertex_attribute_type GL_ANGLE_request_extension GL_ANGLE_rgbx_internal_format GL_ANGLE_robust_client_memory GL_ANGLE_robust_fragment_shader_output GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_ANGLE_vulkan_image GL_APPLE_clip_distance GL_ARM_shader_framebuffer_fetch GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_lose_context GL_EXT_EGL_image_external_wrap_modes GL_EXT_blend_minmax GL_EXT_buffer_storage GL_EXT_clip_control GL_EXT_color_buffer_half_float GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_clamp GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_draw_elements_base_vertex GL_EXT_float_blend GL_EXT_frag_depth GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_memory_object GL_EXT_memory_object_fd GL_EXT_occlusion_query_boolean GL_EXT_polygon_offset_clamp GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_semaphore GL_EXT_semaphore_fd GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_framebuffer_fetch_non_coherent GL_EXT_shader_non_constant_global_initializers GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_texture_border_clamp GL_EXT_texture_compression_bptc GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_mirror_clamp_to_edge GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_type_2_10_10_10_REV GL_EXT_unpack_subimage GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_NV_depth_buffer_float2 GL_NV_fence GL_NV_framebuffer_blit GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_NV_polygon_mode GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_compressed_EAC_R11_signed_texture GL_OES_compressed_EAC_R11_unsigned_texture GL_OES_compressed_EAC_RG11_signed_texture GL_OES_compressed_EAC_RG11_unsigned_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_ETC2_RGB8_texture GL_OES_compressed_ETC2_RGBA8_texture GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture GL_OES_compressed_ETC2_sRGB8_alpha8_texture GL_OES_compressed_ETC2_sRGB8_texture GL_OES_copy_image GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_draw_elements_base_vertex GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_primitive_bounding_box GL_OES_rgb8_rgba8 GL_OES_sample_shading GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_3D GL_OES_texture_border_clamp GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float
Disabled Extensions             : 
Disabled WebGL Extensions       : 
Window system binding vendor    : Google Inc. (Google)
Window system binding version   : 1.5 (ANGLE 2.1.23875 git hash: 21e4b689c009)
Window system binding extensions: EGL_EXT_create_context_robustness EGL_ANGLE_surface_orientation EGL_KHR_create_context EGL_KHR_image EGL_KHR_image_base EGL_EXT_image_gl_colorspace EGL_KHR_gl_colorspace EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_display_semaphore_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_ANGLE_robust_resource_initialization EGL_ANGLE_create_context_extensions_enabled EGL_ANDROID_blob_cache EGL_ANDROID_recordable EGL_ANGLE_create_context_backwards_compatible EGL_KHR_no_config_context EGL_IMG_context_priority EGL_KHR_create_context_no_error EGL_KHR_reusable_sync EGL_EXT_buffer_age EGL_ANGLE_create_surface_swap_interval EGL_ANGLE_vulkan_image EGL_KHR_partial_update EGL_ANGLE_global_fence_sync
Ozone platform                  : x11
Direct rendering version        : unknown
Reset notification strategy     : 0x8252
GPU process crash count         : 0
gfx::BufferFormats supported for allocation and texturing: R_8: not supported,  R_16: not supported,  RG_88: not supported,  RG_1616: not supported,  BGR_565: not supported,  RGBA_4444: not supported,  RGBX_8888: not supported,  RGBA_8888: not supported,  BGRX_8888: not supported,  BGRA_1010102: not supported,  RGBA_1010102: not supported,  BGRA_8888: not supported,  RGBA_F16: not supported,  YVU_420: not supported,  YUV_420_BIPLANAR: not supported,  YUVA_420_TRIPLANAR: not supported,  P010: not supported

Problems Detected
=================
*   WebGPU has been disabled via blocklist or the command line.
    Disabled Features: webgpu

*   WebGL2 has been disabled via blocklist or the command line.
    Disabled Features: webgl2

*   Accelerated rasterization has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: rasterization

*   Accelerated video encode has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: video_encode

*   Accelerated video decode has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: video_decode

*   WebGL has been disabled via blocklist or the command line.
    Disabled Features: webgl

*   Gpu compositing has been disabled, either via blocklist, about:flags or the command line. The browser will fall back to software compositing and hardware acceleration will be unavailable.
    Disabled Features: gpu_compositing

*   Accelerated 2D canvas is unavailable: either disabled via blocklist or the command line.
    Disabled Features: 2d_canvas

ANGLE Features
==============
...

Dawn Info
=========

<CPU>  Vulkan backend - llvmpipe (LLVM 12.0.0, 256 bits)
--------------------------------------------------------

[WebGPU Status]
---------------
*   Blocklisted - crbug.com/40057808: CPU adapters not fully tested or conformant.

[Adapter Supported Features]
----------------------------
*   depth-clip-control
*   depth32float-stencil8
*   timestamp-query
*   texture-compression-bc
*   indirect-first-instance
*   rg11b10ufloat-renderable
*   float32filterable
*   dawn-internal-usages
*   dawn-native
*   implicit-device-synchronization
*   surface-capabilities
*   transient-attachments
*   dual-source-blending
*   unorm16texture-formats
*   adapter-properties-memory-heaps
*   adapter-properties-vk
*   format-capabilities
*   dawn-load-resolve-texture

[Enabled Toggle Names]
----------------------
*   lazy_clear_resource_on_first_use: 
    (https://crbug.com/dawn/145):
    Clears resource to zero on first usage. This initializes the resource so
    that no dirty bits from recycled memory is present in the new resource.

*   use_temporary_buffer_in_texture_to_texture_copy: 
    (https://crbug.com/dawn/42):
    Split texture-to-texture copy into two copies: copy from source texture
    into a temporary buffer, and copy from the temporary buffer into the
    destination texture when copying between compressed textures that don't
    have block-aligned sizes. This workaround is enabled by default on all
    Vulkan drivers to solve an issue in the Vulkan SPEC about the
    texture-to-texture copies with compressed formats. See #1005
    (https://github.com/KhronosGroup/Vulkan-Docs/issues/1005) for more
    details.

*   vulkan_use_d32s8: 
    (https://crbug.com/dawn/286):
    Vulkan mandates support of either D32_FLOAT_S8 or D24_UNORM_S8. When
    available the backend will use D32S8 (toggle to on) but setting the toggle
    to off will make it use the D24S8 format when possible.

*   vulkan_use_s8: 
    (https://crbug.com/dawn/666):
    Vulkan has a pure stencil8 format but it is not universally available.
    When this toggle is on, the backend will use S8 for the stencil8 format,
    otherwise it will fallback to D32S8 or D24S8.

*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   use_placeholder_fragment_in_vertex_only_pipeline: 
    (https://crbug.com/dawn/136):
    Use a placeholder empty fragment shader in vertex only render pipeline.
    This toggle must be enabled for OpenGL ES backend, the Vulkan Backend, and
    serves as a workaround by default enabled on some Metal devices with Intel
    GPU to ensure the depth result is correct.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

*   polyfill_packed_4x8_dot_product: 
    (https://crbug.com/tint/1497):
    Always use the polyfill version of dot4I8Packed() and dot4U8Packed().

[WebGPU Required Toggles - enabled]
-----------------------------------
*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

<CPU>  Vulkan backend - SwiftShader Device (Subzero)
----------------------------------------------------

[WebGPU Status]
---------------
*   Blocklisted - crbug.com/40057808: CPU adapters not fully tested or conformant.

[Adapter Supported Features]
----------------------------
*   depth-clip-control
*   depth32float-stencil8
*   timestamp-query
*   texture-compression-bc
*   texture-compression-etc2
*   texture-compression-astc
*   indirect-first-instance
*   rg11b10ufloat-renderable
*   bgra8unorm-storage
*   float32filterable
*   subgroups
*   dawn-internal-usages
*   dawn-multi-planar-formats
*   dawn-native
*   implicit-device-synchronization
*   surface-capabilities
*   transient-attachments
*   unorm16texture-formats
*   adapter-properties-memory-heaps
*   adapter-properties-vk
*   format-capabilities
*   shared-texture-memory-opaque-fd
*   shared-fence-vk-semaphore-opaque-fd
*   dawn-load-resolve-texture

[Enabled Toggle Names]
----------------------
*   lazy_clear_resource_on_first_use: 
    (https://crbug.com/dawn/145):
    Clears resource to zero on first usage. This initializes the resource so
    that no dirty bits from recycled memory is present in the new resource.

*   use_temporary_buffer_in_texture_to_texture_copy: 
    (https://crbug.com/dawn/42):
    Split texture-to-texture copy into two copies: copy from source texture
    into a temporary buffer, and copy from the temporary buffer into the
    destination texture when copying between compressed textures that don't
    have block-aligned sizes. This workaround is enabled by default on all
    Vulkan drivers to solve an issue in the Vulkan SPEC about the
    texture-to-texture copies with compressed formats. See #1005
    (https://github.com/KhronosGroup/Vulkan-Docs/issues/1005) for more
    details.

*   vulkan_use_d32s8: 
    (https://crbug.com/dawn/286):
    Vulkan mandates support of either D32_FLOAT_S8 or D24_UNORM_S8. When
    available the backend will use D32S8 (toggle to on) but setting the toggle
    to off will make it use the D24S8 format when possible.

*   vulkan_use_s8: 
    (https://crbug.com/dawn/666):
    Vulkan has a pure stencil8 format but it is not universally available.
    When this toggle is on, the backend will use S8 for the stencil8 format,
    otherwise it will fallback to D32S8 or D24S8.

*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   use_placeholder_fragment_in_vertex_only_pipeline: 
    (https://crbug.com/dawn/136):
    Use a placeholder empty fragment shader in vertex only render pipeline.
    This toggle must be enabled for OpenGL ES backend, the Vulkan Backend, and
    serves as a workaround by default enabled on some Metal devices with Intel
    GPU to ensure the depth result is correct.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

*   use_vulkan_zero_initialize_workgroup_memory_extension: 
    (https://crbug.com/dawn/1302):
    Initialize workgroup memory with OpConstantNull on Vulkan when the Vulkan
    extension VK_KHR_zero_initialize_workgroup_memory is supported.

[WebGPU Required Toggles - enabled]
-----------------------------------
*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

<CPU>  OpenGLES backend - ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0) (Compatibility Mode)
-------------------------------------------------------------------------------------------------------------------------------------------------

[WebGPU Status]
---------------
*   Blocklisted - crbug.com/40057808: CPU adapters not fully tested or conformant.

[Adapter Supported Features]
----------------------------
*   texture-compression-bc
*   texture-compression-etc2
*   texture-compression-astc
*   dawn-internal-usages
*   dawn-native
*   implicit-device-synchronization
*   angle-texture-sharing
*   unorm16texture-formats
*   snorm16texture-formats
*   format-capabilities
*   norm16texture-formats

[Enabled Toggle Names]
----------------------
*   lazy_clear_resource_on_first_use: 
    (https://crbug.com/dawn/145):
    Clears resource to zero on first usage. This initializes the resource so
    that no dirty bits from recycled memory is present in the new resource.

*   disable_indexed_draw_buffers: 
    (https://crbug.com/dawn/582):
    Disables the use of indexed draw buffer state which is unsupported on some
    platforms.

*   flush_before_client_wait_sync: 
    (https://crbug.com/dawn/633):
    Call glFlush before glClientWaitSync to work around bugs in the latter

*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   use_placeholder_fragment_in_vertex_only_pipeline: 
    (https://crbug.com/dawn/136):
    Use a placeholder empty fragment shader in vertex only render pipeline.
    This toggle must be enabled for OpenGL ES backend, the Vulkan Backend, and
    serves as a workaround by default enabled on some Metal devices with Intel
    GPU to ensure the depth result is correct.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

*   use_blit_for_buffer_to_stencil_texture_copy: 
    (https://crbug.com/dawn/1389):
    Use a blit instead of a copy command to copy buffer data to the stencil
    aspect of a texture. Works around an issue where stencil writes by copy
    commands are not visible to a render or compute pass.

*   use_blit_for_depth16unorm_texture_to_buffer_copy: 
    (https://crbug.com/dawn/1782):
    Use a blit instead of a copy command to copy depth aspect of a texture to
    a buffer.Workaround for OpenGL and OpenGLES.

*   use_blit_for_depth32float_texture_to_buffer_copy: 
    (https://crbug.com/dawn/1782):
    Use a blit instead of a copy command to copy depth aspect of a texture to
    a buffer.Workaround for OpenGLES.

*   use_blit_for_stencil_texture_to_buffer_copy: 
    (https://crbug.com/dawn/1782):
    Use a blit instead of a copy command to copy stencil aspect of a texture
    to a buffer.Workaround for OpenGLES.

*   use_blit_for_snorm_texture_to_buffer_copy: 
    (https://crbug.com/dawn/1781):
    Use a blit instead of a copy command to copy snorm texture to a
    buffer.Workaround for OpenGLES.

*   use_blit_for_rgb9e5ufloat_texture_copy: 
    (https://crbug.com/dawn/2079):
    Use a blit instead of a copy command to copy rgb9e5ufloat texture to a
    texture or a buffer.Workaround for OpenGLES.

*   use_t2b2t_for_srgb_texture_copy: 
    (https://crbug.com/dawn/2362):
    Use T2B and B2T copies to emulate a T2T copy between sRGB and non-sRGB
    textures.Workaround for OpenGLES.

[WebGPU Required Toggles - enabled]
-----------------------------------
*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

Compositor Information
======================
Tile Update Mode: One-copy
Partial Raster  : Enabled

GpuMemoryBuffers Status
=======================
R_8               : Software only
R_16              : Software only
RG_88             : Software only
RG_1616           : Software only
BGR_565           : Software only
RGBA_4444         : Software only
RGBX_8888         : Software only
RGBA_8888         : Software only
BGRX_8888         : Software only
BGRA_1010102      : Software only
RGBA_1010102      : Software only
BGRA_8888         : Software only
RGBA_F16          : Software only
YVU_420           : Software only
YUV_420_BIPLANAR  : Software only
YUVA_420_TRIPLANAR: Software only
P010              : Software only

Display(s) Information
======================
Info                          : Display[61] bounds=[0,0 1920x1080], workarea=[0,0 1920x1080], scale=1, rotation=0, panel_rotation=0 external detected
Color space (all)             : {primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}
Buffer format (all)           : BGRA_8888
Color volume                  : {name:'srgb', r:[0.6400, 0.3300], g:[0.3000, 0.6000], b:[0.1500, 0.3300], w:[0.3127, 0.3290]}
SDR white level in nits       : 203
HDR relative maximum luminance: 1
Bits per color component      : 8
Bits per pixel                : 24

Video Acceleration Information
==============================
Decoding: 
Encoding:

Vulkan Information
==================

Device Performance Information
==============================

Log Messages
============
[937:937:1018/125208.331285:WARNING:angle_platform_impl.cc(49)] : renderergl_utils.cpp:2098 (GenerateCaps): Disabling GL_EXT_clip_cull_distance because only 8 clip distances, 0 cull distances and 0 combined clip/cull distances are supported by the driver.
[937:937:1018/125208.352223:WARNING:viz_main_impl.cc(85)] : VizNullHypothesis is disabled (not a warning)
[937:937:1018/125208.352714:ERROR:viz_main_impl.cc(181)] : Exiting GPU process due to errors during initialization
GpuProcessHost: The GPU process exited normally. Everything is okay.
[1074:1074:1018/125208.401291:WARNING:gpu_memory_buffer_support_x11.cc(49)] : dri3 extension not supported.
[1074:1074:1018/125208.402076:WARNING:sandbox_linux.cc(430)] : InitializeSandbox() called with multiple threads in process gpu-process.
[1074:1074:1018/125208.402792:WARNING:viz_main_impl.cc(85)] : VizNullHypothesis is disabled (not a warning)

nvidia-smi inside the container shows:

^Croot@21412cb984b1:/app# nvidia-smi
Fri Oct 18 12:53:28 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03              Driver Version: 561.09         CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 2080 Ti     On  |   00000000:0B:00.0  On |                  N/A |
|  0%   29C    P8             32W /  260W |    2626MiB /  11264MiB |      1%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A       348      G   /Xwayland                                   N/A      |
+-----------------------------------------------------------------------------------------+

Any help would be highly appreciated!

dcommander commented 1 week ago

Likely duplicate of #264. I haven't yet established that it is possible to run Chrome v129+ with VirtualGL at all. Google unfortunately does not develop Chrome in a remote-display-friendly manner, and every time I come up with a recipe for it (which always requires many hours of labor, usually uncompensated), the recipe seems to break after a few more releases of Chrome. If you are using an X proxy such as TurboVNC, then nVidia's Vulkan drivers should do something VirtualGL-like. Since Chrome uses Vulkan by default, you may be able to get GPU acceleration in Chrome without using VirtualGL.

vlrevolution commented 1 week ago

Likely duplicate of #264. I haven't yet established that it is possible to run Chrome v129+ with VirtualGL at all. Google unfortunately does not develop Chrome in a remote-display-friendly manner, and every time I come up with a recipe for it (which always requires many hours of labor, usually uncompensated), the recipe seems to break after a few more releases of Chrome. If you are using an X proxy such as TurboVNC, then nVidia's Vulkan drivers should do something VirtualGL-like. Since Chrome uses Vulkan by default, you may be able to get GPU acceleration in Chrome without using VirtualGL.

Yeah, the fact that they are breaking it sucks quite a lot... also I don't think I have GPU acceleration with without VirtualGL.. only software acceleration..

Graphics Feature Status
=======================
*   Canvas: Software only, hardware acceleration unavailable
*   Canvas out-of-process rasterization: Disabled
*   Direct Rendering Display Compositor: Disabled
*   Compositing: Software only. Hardware acceleration disabled
*   Multiple Raster Threads: Enabled
*   OpenGL: Disabled
*   Rasterization: Software only. Hardware acceleration disabled
*   Raw Draw: Disabled
*   Skia Graphite: Disabled
*   Video Decode: Software only. Hardware acceleration disabled
*   Video Encode: Software only. Hardware acceleration disabled
*   Vulkan: Disabled
*   WebGL: Software only, hardware acceleration unavailable
*   WebGL2: Software only, hardware acceleration unavailable
*   WebGPU: Disabled
*   WebNN: Software only, hardware acceleration unavailable

Version Information
===================
Data exported              : 2024-10-18T15:11:44.396Z
Chrome version             : Chrome/129.0.6668.100
Operating system           : Linux 5.15.153.1-microsoft-standard-WSL2
Software rendering list URL: https://chromium.googlesource.com/chromium/src/+/cf58cba358d31ce285c1970a79a9411d0fb381a5/gpu/config/software_rendering_list.json
Driver bug list URL        : https://chromium.googlesource.com/chromium/src/+/cf58cba358d31ce285c1970a79a9411d0fb381a5/gpu/config/gpu_driver_bug_list.json
ANGLE commit id            : 1b71a29fea97
2D graphics backend        : Skia/129 dda581d538cb6532cda841444e7b4ceacde01ec9
Command Line               : /usr/bin/google-chrome --no-first-run --no-service-autorun --disable-auto-reload --disable-backgrounding-occluded-windows --disable-renderer-backgrounding --disable-background-timer-throttling --disable-background-networking --no-pings --disable-infobars --disable-breakpad --no-default-browser-check --homepage=about:blank--wm-window-animations-disabled --animation-duration-scale=0 --enable-privacy-sandbox-ads-apis --password-store=basic --disable-dev-shm-usage --display=:100 --remote-debugging-port=52747 --user-data-dir=/tmp/selenium_driverless_6j7s_kam/data_dir --load-extension=/usr/local/lib/python3.9/site-packages/selenium_driverless/files/mv3_extension --flag-switches-begin --flag-switches-end about:blank

Driver Information
==================
Initialization time             : 15
In-process GPU                  : false
Passthrough Command Decoder     : true
Sandboxed                       : false
GPU0                            : VENDOR= 0xffff [Google Inc. (Google)], DEVICE=0xffff [ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0)], DRIVER_VENDOR=SwANGLE, DRIVER_VERSION=5.0.0 *ACTIVE*
Optimus                         : false
AMD switchable                  : false
Pixel shader version            : 1.00
Vertex shader version           : 1.00
Max. MSAA samples               : 4
Machine model name              : 
Machine model version           : 
GL implementation parts         : (gl=egl-angle,angle=swiftshader)
Display type                    : ANGLE_SWIFTSHADER
GL_VENDOR                       : Google Inc. (Google)
GL_RENDERER                     : ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver-5.0.0)
GL_VERSION                      : OpenGL ES 2.0.0 (ANGLE 2.1.23691 git hash: 1b71a29fea97)
GL_EXTENSIONS                   : GL_AMD_performance_monitor GL_ANGLE_base_vertex_base_instance_shader_builtin GL_ANGLE_client_arrays GL_ANGLE_compressed_texture_etc GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_get_image GL_ANGLE_get_serialized_context_string GL_ANGLE_get_tex_level_parameter GL_ANGLE_instanced_arrays GL_ANGLE_memory_object_flags GL_ANGLE_memory_size GL_ANGLE_pack_reverse_row_order GL_ANGLE_polygon_mode GL_ANGLE_program_binary_readiness_query GL_ANGLE_program_cache_control GL_ANGLE_read_only_depth_stencil_feedback_loops GL_ANGLE_relaxed_vertex_attribute_type GL_ANGLE_request_extension GL_ANGLE_rgbx_internal_format GL_ANGLE_robust_client_memory GL_ANGLE_robust_fragment_shader_output GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_ANGLE_vulkan_image GL_APPLE_clip_distance GL_ARM_shader_framebuffer_fetch GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_lose_context GL_EXT_EGL_image_external_wrap_modes GL_EXT_blend_minmax GL_EXT_buffer_storage GL_EXT_clip_control GL_EXT_color_buffer_half_float GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_clamp GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_draw_elements_base_vertex GL_EXT_float_blend GL_EXT_frag_depth GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_memory_object GL_EXT_memory_object_fd GL_EXT_occlusion_query_boolean GL_EXT_polygon_offset_clamp GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_semaphore GL_EXT_semaphore_fd GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_framebuffer_fetch_non_coherent GL_EXT_shader_non_constant_global_initializers GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_texture_border_clamp GL_EXT_texture_compression_bptc GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_mirror_clamp_to_edge GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_type_2_10_10_10_REV GL_EXT_unpack_subimage GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_NV_depth_buffer_float2 GL_NV_fence GL_NV_framebuffer_blit GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_NV_polygon_mode GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_compressed_EAC_R11_signed_texture GL_OES_compressed_EAC_R11_unsigned_texture GL_OES_compressed_EAC_RG11_signed_texture GL_OES_compressed_EAC_RG11_unsigned_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_ETC2_RGB8_texture GL_OES_compressed_ETC2_RGBA8_texture GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture GL_OES_compressed_ETC2_sRGB8_alpha8_texture GL_OES_compressed_ETC2_sRGB8_texture GL_OES_copy_image GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_draw_elements_base_vertex GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_primitive_bounding_box GL_OES_rgb8_rgba8 GL_OES_sample_shading GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_3D GL_OES_texture_border_clamp GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float
Disabled Extensions             : 
Disabled WebGL Extensions       : 
Window system binding vendor    : Google Inc. (Google)
Window system binding version   : 1.5 (ANGLE 2.1.23691 git hash: 1b71a29fea97)
Window system binding extensions: EGL_EXT_create_context_robustness EGL_ANGLE_surface_orientation EGL_KHR_create_context EGL_KHR_image EGL_KHR_image_base EGL_EXT_image_gl_colorspace EGL_KHR_gl_colorspace EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_display_semaphore_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_ANGLE_robust_resource_initialization EGL_ANGLE_create_context_extensions_enabled EGL_ANDROID_blob_cache EGL_ANDROID_recordable EGL_ANGLE_create_context_backwards_compatible EGL_KHR_no_config_context EGL_IMG_context_priority EGL_KHR_create_context_no_error EGL_KHR_reusable_sync EGL_EXT_buffer_age EGL_ANGLE_create_surface_swap_interval EGL_ANGLE_vulkan_image EGL_KHR_partial_update EGL_ANGLE_global_fence_sync
Ozone platform                  : x11
Direct rendering version        : unknown
Reset notification strategy     : 0x8252
GPU process crash count         : 0
gfx::BufferFormats supported for allocation and texturing: R_8: not supported,  R_16: not supported,  RG_88: not supported,  RG_1616: not supported,  BGR_565: not supported,  RGBA_4444: not supported,  RGBX_8888: not supported,  RGBA_8888: not supported,  BGRX_8888: not supported,  BGRA_1010102: not supported,  RGBA_1010102: not supported,  BGRA_8888: not supported,  RGBA_F16: not supported,  YVU_420: not supported,  YUV_420_BIPLANAR: not supported,  YUVA_420_TRIPLANAR: not supported,  P010: not supported

Problems Detected
=================
*   WebGPU has been disabled via blocklist or the command line.
    Disabled Features: webgpu

*   WebGL2 has been disabled via blocklist or the command line.
    Disabled Features: webgl2

*   Accelerated rasterization has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: rasterization

*   Accelerated video encode has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: video_encode

*   Accelerated video decode has been disabled, either via blocklist, about:flags or the command line.
    Disabled Features: video_decode

*   WebGL has been disabled via blocklist or the command line.
    Disabled Features: webgl

*   Gpu compositing has been disabled, either via blocklist, about:flags or the command line. The browser will fall back to software compositing and hardware acceleration will be unavailable.
    Disabled Features: gpu_compositing

*   Accelerated 2D canvas is unavailable: either disabled via blocklist or the command line.
    Disabled Features: 2d_canvas

ANGLE Features
==============
...

[WebGPU Required Toggles - enabled]
-----------------------------------
*   disallow_spirv: 
    (https://crbug.com/1214923):
    Disallow usage of SPIR-V completely so that only WGSL is used for shader
    modules. This is useful to prevent a Chromium renderer process from
    successfully sending SPIR-V code to be compiled in the GPU process.

*   timestamp_quantization: 
    (https://crbug.com/dawn/1800):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

Compositor Information
======================
Tile Update Mode: One-copy
Partial Raster  : Enabled

GpuMemoryBuffers Status
=======================
R_8               : Software only
R_16              : Software only
RG_88             : Software only
RG_1616           : Software only
BGR_565           : Software only
RGBA_4444         : Software only
RGBX_8888         : Software only
RGBA_8888         : Software only
BGRX_8888         : Software only
BGRA_1010102      : Software only
RGBA_1010102      : Software only
BGRA_8888         : Software only
RGBA_F16          : Software only
YVU_420           : Software only
YUV_420_BIPLANAR  : Software only
YUVA_420_TRIPLANAR: Software only
P010              : Software only

Display(s) Information
======================
Info                          : Display[61] bounds=[0,0 1920x1080], workarea=[0,0 1920x1080], scale=1, rotation=0, panel_rotation=0 external detected
Color space (all)             : {primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}
Buffer format (all)           : BGRA_8888
Color volume                  : {name:'srgb', r:[0.6400, 0.3300], g:[0.3000, 0.6000], b:[0.1500, 0.3300], w:[0.3127, 0.3290]}
SDR white level in nits       : 203
HDR relative maximum luminance: 1
Bits per color component      : 8
Bits per pixel                : 24

Video Acceleration Information
==============================
Decoding: 
Encoding:

Vulkan Information
==================

Device Performance Information
==============================

Log Messages
============
GpuProcessHost: The GPU process exited normally. Everything is okay.
[828:828:1018/181126.094148:WARNING:viz_main_impl.cc(85)] : VizNullHypothesis is disabled (not a warning)
[828:828:1018/181126.094543:ERROR:viz_main_impl.cc(179)] : Exiting GPU process due to errors during initialization
GpuProcessHost: The GPU process exited normally. Everything is okay.
[874:874:1018/181126.115039:WARNING:gpu_memory_buffer_support_x11.cc(49)] : dri3 extension not supported.
[874:874:1018/181126.115829:WARNING:sandbox_linux.cc(430)] : InitializeSandbox() called with multiple threads in process gpu-process.
[874:874:1018/181126.117031:WARNING:viz_main_impl.cc(85)] : VizNullHypothesis is disabled (not a warning)
dcommander commented 1 week ago

I have not yet confirmed a recipe for Chrome v129+. My home office/lab has been without Internet access for three weeks since Hurricane Helene, so please be patient. I have been able to cobble together enough bandwidth to use GitHub and push small commits but not enough to download Chrome, much less the multiple Chrome versions I would need to download in order to test this.

vlrevolution commented 1 week ago

I have not yet confirmed a recipe for Chrome v129+. My home office/lab has been without Internet access for three weeks since Hurricane Helene, so please be patient. I have been able to cobble together enough bandwidth to use GitHub and push small commits but not enough to download Chrome, much less the multiple Chrome versions I would need to download in order to test this.

Sorry to hear that, sending hope & bandwidth 💯 Don't stress about it.. I'm exploring the issue as well from my side, as my issue could be related to WSL2 + docker and not directly the fault of the library, because I was also testing with chrome v126 and still it didn't work with any of the recipes I could find :(