microsoft / wslg

Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios
MIT License
9.95k stars 300 forks source link

Can't HW accelerate in edge (AMD GPU) #275

Open jamesfranklinnetsec opened 3 years ago

jamesfranklinnetsec commented 3 years ago

I think the source of this is my host windows driver remains at WDDM2.7, despite updating as per instructions on the README.MD, explained below

win+r->run->dxiag -> display tab: image image edge isn't detecting any HW acceleration ability image

I'm using this link to download the GPU windows host driver specified in the README.MD. It seems as far as I can tell to have installed correctly, aside from the not changing the WDDM version.

My GPU is integrated into my AMD Ryzen 5 Pro 4650U as an AMD Radeon RX Vega 6, which is listed as supported as "Radeon RX Vega Series Graphics". I hope I'm not grasping at straws questioning whether an AMD Radeon RX Vega 6 is in the category of 'series graphics' of the RX Vega line..?

Additionally, I followed the method to update MESA via this comment. Heres my glxinfo, which should say that the openGL renderer string is something like D3D12 and have my GPU name, which should say perhap AMD Vega Series GPU or something like that, instead it says llvmpipe (LLVM 11.0.0, 256 bits) , heres the relevant piece of glxinfo output:

james@james-t14:~$ cat glxinfo.txt | grep OpenGL
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 11.0.0, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 20.2.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 20.2.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
    GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
    GL_AMD_gpu_shader_int64, GL_AMD_multi_draw_indirect,
    GL_AMD_query_buffer_object, GL_AMD_seamless_cubemap_per_texture,
    GL_AMD_shader_stencil_export, GL_AMD_shader_trinary_minmax,
    GL_AMD_texture_texture4, GL_AMD_vertex_shader_layer,
    GL_AMD_vertex_shader_viewport_index, GL_ANGLE_texture_compression_dxt3,
    GL_ANGLE_texture_compression_dxt5, GL_ARB_ES2_compatibility,
    GL_ARB_ES3_1_compatibility, GL_ARB_ES3_2_compatibility,
    GL_ARB_ES3_compatibility, GL_ARB_arrays_of_arrays, GL_ARB_base_instance,
    GL_ARB_blend_func_extended, GL_ARB_buffer_storage,
    GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control,
    GL_ARB_compressed_texture_pixel_storage, GL_ARB_compute_shader,
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
    GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_cull_distance,
    GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp,
    GL_ARB_derivative_control, GL_ARB_direct_state_access,
    GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
    GL_ARB_draw_elements_base_vertex, GL_ARB_draw_indirect,
    GL_ARB_draw_instanced, GL_ARB_enhanced_layouts,
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport,
    GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments,
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
    GL_ARB_get_program_binary, GL_ARB_get_texture_sub_image,
    GL_ARB_gpu_shader5, GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64,
    GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
    GL_ARB_indirect_parameters, GL_ARB_instanced_arrays,
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2,
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
    GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect,
    GL_ARB_occlusion_query2, GL_ARB_parallel_shader_compile,
    GL_ARB_pipeline_statistics_query, GL_ARB_pixel_buffer_object,
    GL_ARB_point_sprite, GL_ARB_polygon_offset_clamp,
    GL_ARB_post_depth_coverage, GL_ARB_program_interface_query,
    GL_ARB_provoking_vertex, GL_ARB_query_buffer_object,
    GL_ARB_robust_buffer_access_behavior, GL_ARB_robustness,
    GL_ARB_sample_shading, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
    GL_ARB_seamless_cubemap_per_texture, GL_ARB_separate_shader_objects,
    GL_ARB_shader_atomic_counter_ops, GL_ARB_shader_atomic_counters,
    GL_ARB_shader_bit_encoding, GL_ARB_shader_draw_parameters,
    GL_ARB_shader_group_vote, GL_ARB_shader_image_load_store,
    GL_ARB_shader_image_size, GL_ARB_shader_objects, GL_ARB_shader_precision,
    GL_ARB_shader_stencil_export, GL_ARB_shader_storage_buffer_object,
    GL_ARB_shader_subroutine, GL_ARB_shader_texture_image_samples,
    GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack,
    GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
    GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader,
    GL_ARB_texture_barrier, GL_ARB_texture_buffer_object,
    GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range,
    GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
    GL_ARB_texture_cube_map_array, GL_ARB_texture_float,
    GL_ARB_texture_gather, GL_ARB_texture_mirror_clamp_to_edge,
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
    GL_ARB_texture_stencil8, GL_ARB_texture_storage,
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle,
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2,
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced,
    GL_ARB_transform_feedback_overflow_query, GL_ARB_uniform_buffer_object,
    GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object,
    GL_ARB_vertex_attrib_64bit, GL_ARB_vertex_attrib_binding,
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_shader,
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
    GL_ARB_viewport_array, GL_ATI_blend_equation_separate,
    GL_ATI_texture_float, GL_ATI_texture_mirror_once,
    GL_EXT_EGL_image_storage, GL_EXT_EGL_sync, GL_EXT_abgr,
    GL_EXT_blend_equation_separate, GL_EXT_draw_buffers2,
    GL_EXT_draw_instanced, GL_EXT_framebuffer_blit,
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float,
    GL_EXT_pixel_buffer_object, GL_EXT_polygon_offset_clamp,
    GL_EXT_provoking_vertex, GL_EXT_shader_framebuffer_fetch_non_coherent,
    GL_EXT_shader_integer_mix, GL_EXT_texture_array,
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc,
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_integer,
    GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_R8,
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_shadow_lod,
    GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm,
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback,
    GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit,
    GL_IBM_multimode_draw_arrays, GL_KHR_blend_equation_advanced,
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
    GL_KHR_parallel_shader_compile, GL_KHR_robust_buffer_access_behavior,
    GL_KHR_robustness, GL_KHR_texture_compression_astc_ldr,
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_framebuffer_flip_y,
    GL_MESA_pack_invert, GL_MESA_shader_integer_functions,
    GL_MESA_texture_signed_rgba, GL_MESA_ycbcr_texture,
    GL_NV_conditional_render, GL_NV_copy_image, GL_NV_depth_clamp,
    GL_NV_packed_depth_stencil, GL_NV_texture_barrier, GL_OES_EGL_image,
    GL_S3_s3tc

Some questions:

onomatopellan commented 3 years ago

For HW acceleration in Edge you need:

BTW if you already can see the /dev/dxg device from the terminal, you don't need WDDM3.0 although AMD will need to release it in a near future.

jamesfranklinnetsec commented 3 years ago

For HW acceleration in Edge you need:

  • update your Mesa to at least version 21.0:
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt-get update
  • Enable Override software rendering list in Edge flags (not sure if needed in latest edge-dev builds) --ignore-gpu-blocklist

BTW if you already can see the /dev/dxg device from the terminal, you don't need WDDM3.0 although AMD will need to release it in a near future.

ok i can see /dev/dxg how do i use that edge flag? do i just do something like microsoft-edge --ignore-gpu-blocklist or do I stick it in a config file somewhere?

jamesfranklinnetsec commented 3 years ago

For HW acceleration in Edge you need:

  • update your Mesa to at least version 21.0:
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt-get update
  • Enable Override software rendering list in Edge flags (not sure if needed in latest edge-dev builds) --ignore-gpu-blocklist

BTW if you already can see the /dev/dxg device from the terminal, you don't need WDDM3.0 although AMD will need to release it in a near future.


james@james-t14:~/python/shellAPI/pipeline2$ microsoft-edge --ignore-gpu-blo
cklist
[32468:32528:0611/012756.120701:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32598:0611/012756.337910:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[32468:32598:0611/012756.337951:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[32594:32594:0611/012756.371728:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
[32468:32598:0611/012756.428322:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[32468:32598:0611/012756.428382:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[32468:32468:0611/012756.518019:ERROR:campaign_history_manager.cc(111)] max_element called on emtpy vector
[32468:32468:0611/012756.518073:ERROR:campaign_history_manager.cc(126)] max_element called on emtpy vector
[32468:32700:0611/012756.674385:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32700:0611/012756.674668:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32700:0611/012756.674884:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32700:0611/012756.675771:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32700:0611/012756.676203:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[32468:32468:0611/012757.712018:ERROR:CONSOLE(1)] "PSL: window.chrome.ntpSettingsPrivate.getPref does not have campaigns. [object Object] Fri Jun 11 2021 01:27:57 GMT+1000 (Australian Eastern Standard Time)", source: https://assets.msn.com/bundles/v1/edgeChromium/staging/vendors.75f4411cef43db1eb41a.js (1)
[32468:32468:0611/012757.720294:ERROR:CONSOLE(1569)] "Fri Jun 11 2021 01:27:57 GMT+1000 (Australian Eastern Standard Time): 1623338877718 {"id":35129,"source":"SubscriberValidator.ts","severity":1,"pb":{"build":"20210609.48","appType":"edgeChromium","pcsVersion":"20210608.6_master","buildAlias":"staging","customMessage":"parameters AREF,ISU,APRIMB,poptin,UITHEME for subscriber MSNAnaheimNewsNTPImages"},"message":"Missing parameters for subscriber"}", source: https://assets.msn.com/bundles/v1/edgeChromium/staging/common.9153446fa016fbfe3cbe.js (1569)
[32468:32468:0611/012800.726660:ERROR:CONSOLE(1)] "Request has failed. [object Object] Fri Jun 11 2021 01:28:00 GMT+1000 (Australian Eastern Standard Time)", source: https://assets.msn.com/bundles/v1/edgeChromium/staging/vendors.75f4411cef43db1eb41a.js (1)
[32468:32468:0611/012800.726740:ERROR:CONSOLE(1)] " [object Object] Fri Jun 11 2021 01:28:00 GMT+1000 (Australian Eastern Standard Time)", source: https://assets.msn.com/bundles/v1/edgeChromium/staging/vendors.75f4411cef43db1eb41a.js (1)
``` it opens up in my taskbar but theres no window
onomatopellan commented 3 years ago

When that happens run wsl.exe --shutdown and launch WSL2 again. If still doesn't show anything launch it like this microsoft-edge --enable-features=UseOzonePlatform --ozone-platform=wayland.

After updating mesa to version 21.x, what's the output of glxinfo -B?