Thinkpad T14(gen 2) Brave doesn't use intel graphics

Brave uses high CPU when interacting with it and youtube video’s are choppy. I think its because Brave isn’t using Intel Graphics. My CPU shows 30% while scrolling and 50% while watching youtube. Htop is showing that Xorg is the top resource-taking process while interacting with brave. I tried firefox and I get no issues with it but switching isn’t an option right now.

The command I use:

brave –ignore-gpu-blacklist –enable-gpu-rasterization --enable-zero-copy –enable-features=VaapiVideoDecoder –disable-features=UseOzonePlatform --use-gl=desktop 

I installed it today using:

yay -S mesa
yay -S vulkan-intel 
yay -S intel-media-driver
yay -S libva-vdpau-driver-chromium

yay -S brave-bin

Screenfetch:

 dan@remotestation
 OS: Manjaro 22.0.0 Sikaris
 Kernel: x86_64 Linux 5.15.78-1-MANJARO
 Uptime: 1h 37m
 Packages: 1539
 Shell: zsh 5.9
 Resolution: 1920x1080
 DE: GNOME
 WM: i3
 GTK Theme: Adwaita [GTK2/3]
 Icon Theme: Adwaita
 Font: Cantarell 11
 Disk: 97G / 489G (21%)
 CPU: 11th Gen Intel Core i7-1165G7 @ 8x 4.7GHz [70.0°C]
 GPU: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)
 RAM: 3826MiB / 39844MiB

lspci -k:

00:00.0 Host bridge: Intel Corporation 11th Gen Core Processor Host Bridge/DRAM Registers (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel modules: igen6_edac
00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: i915
	Kernel modules: i915
00:04.0 Signal processing controller: Intel Corporation TigerLake-LP Dynamic Tuning Processor Participant (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: proc_thermal
	Kernel modules: processor_thermal_device_pci_legacy
00:06.0 PCI bridge: Intel Corporation 11th Gen Core Processor PCIe Controller (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: pcieport
00:07.0 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: pcieport
00:07.2 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2 (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: pcieport
00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci
00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: thunderbolt
	Kernel modules: thunderbolt
00:0d.3 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #1 (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: thunderbolt
	Kernel modules: thunderbolt
00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci
00:14.2 RAM memory: Intel Corporation Tiger Lake-LP Shared SRAM (rev 20)
	Subsystem: Lenovo Device 22c9
00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20)
	Subsystem: Intel Corporation Device 0070
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
00:16.0 Communication controller: Intel Corporation Tiger Lake-LP Management Engine Interface (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: mei_me
	Kernel modules: mei_me
00:1c.0 PCI bridge: Intel Corporation Device a0b8 (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: pcieport
00:1c.7 PCI bridge: Intel Corporation Tiger Lake-LP PCI Express Root Port #8 (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: pcieport
00:1f.0 ISA bridge: Intel Corporation Tiger Lake-LP LPC Controller (rev 20)
	Subsystem: Lenovo Device 22c9
00:1f.3 Audio device: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: sof-audio-pci-intel-tgl
	Kernel modules: snd_hda_intel, snd_sof_pci_intel_tgl
00:1f.4 SMBus: Intel Corporation Tiger Lake-LP SMBus Controller (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801
00:1f.5 Serial bus controller: Intel Corporation Tiger Lake-LP SPI Controller (rev 20)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: intel-spi
	Kernel modules: intel_spi_pci
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 980
	Subsystem: Samsung Electronics Co Ltd Device a801
	Kernel driver in use: nvme
0a:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)
	Subsystem: Lenovo Device 22c9
	Kernel driver in use: rtsx_pci
	Kernel modules: rtsx_pci

Brave version:

Brave Browser 108.1.46.134

brave://gpu

Graphics Feature Status
Canvas: Hardware accelerated
Canvas out-of-process rasterization: Disabled
Direct Rendering Display Compositor: Disabled
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
OpenGL: Enabled
Rasterization: Hardware accelerated
Raw Draw: Disabled
Video Decode: Hardware accelerated
Video Encode: Software only. Hardware acceleration disabled
Vulkan: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
WebGPU: Disabled
Driver Bug Workarounds
adjust_src_dst_region_for_blitframebuffer
clear_uniforms_before_first_program_use
count_all_in_varyings_packing
disable_post_sub_buffers_for_onscreen_surfaces
enable_webgl_timer_query_extensions
exit_on_context_lost
msaa_is_slow
rely_on_implicit_sync_for_swap_buffers
disabled_extension_GL_KHR_blend_equation_advanced
disabled_extension_GL_KHR_blend_equation_advanced_coherent
disabled_extension_GL_MESA_framebuffer_flip_y
Problems Detected
WebGPU has been disabled via blocklist or the command line.
Disabled Features: webgpu
Accelerated video encode has been disabled, either via blocklist, about:flags or the command line.
Disabled Features: video_encode
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Mesa drivers in Linux handle varyings without static use incorrectly: 333885
Applied Workarounds: count_all_in_varyings_packing
Disable partial swaps on Mesa drivers (detected with GL_RENDERER): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces
On Intel GPUs MSAA performance is not acceptable for GPU rasterization: 527565, 1298585
Applied Workarounds: msaa_is_slow
Disable partial swaps on Mesa drivers (detected with GL_VERSION): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces
adjust src/dst region if blitting pixels outside framebuffer on Linux Intel: 664740
Applied Workarounds: adjust_src_dst_region_for_blitframebuffer
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Applied Workarounds: disable(GL_KHR_blend_equation_advanced), disable(GL_KHR_blend_equation_advanced_coherent)
Expose WebGL's disjoint_timer_query extensions on platforms with site isolation: 808744, 870491
Applied Workarounds: enable_webgl_timer_query_extensions
Some drivers can't recover after OUT_OF_MEM and context lost: 893177
Applied Workarounds: exit_on_context_lost
Avoid waiting on a egl fence before swapping buffers and rely on implicit sync on Intel GPUs: 938286
Applied Workarounds: rely_on_implicit_sync_for_swap_buffers
Disable GL_MESA_framebuffer_flip_y for desktop GL: 964010
Applied Workarounds: disable(GL_MESA_framebuffer_flip_y)
DAWN Info

<Integrated GPU> Vulkan backend - Intel(R) Xe Graphics (TGL GT2)
[Default 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_unsafe_apis: http://crbug.com/1138528: Produces validation errors on API entry points or parameter combinations that aren't considered secure yet.
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 Forced 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.
[Supported Features]
texture-compression-bc
texture-compression-etc2
texture-compression-astc
pipeline-statistics-query
timestamp-query
depth-clip-control
depth32float-stencil8
chromium-experimental-dp4a
indirect-first-instance
rg11b10ufloat-renderable
dawn-internal-usages
dawn-native

<CPU> Vulkan backend - SwiftShader Device (Subzero)
[Default 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_unsafe_apis: http://crbug.com/1138528: Produces validation errors on API entry points or parameter combinations that aren't considered secure yet.
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 Forced 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.
[Supported Features]
texture-compression-bc
texture-compression-etc2
texture-compression-astc
timestamp-query
depth-clip-control
depth32float-stencil8
indirect-first-instance
rg11b10ufloat-renderable
dawn-internal-usages
dawn-native
Version Information
Data exported
2022-12-04T05:01:06.089Z
Chrome version
Chrome/108.0.5359.94
Operating system
Linux 5.15.78-1-MANJARO
Software rendering list URL
https://chromium.googlesource.com/chromium/src/+/713576b895246504ccc6b92c2fb8ce2d60194074/gpu/config/software_rendering_list.json
Driver bug list URL
https://chromium.googlesource.com/chromium/src/+/713576b895246504ccc6b92c2fb8ce2d60194074/gpu/config/gpu_driver_bug_list.json
ANGLE commit id
ceec659ac60b
2D graphics backend
Skia/108 7c55be996a81ff9c5c66984c9d4ef85d12a44c8c
Command Line
/usr/lib/brave-bin/brave --use-gl=desktop --disable-domain-reliability --enable-dom-distiller --component-updater=url-source=https://go-updater.brave.com/extensions --origin-trial-public-key=bYUKPJoPnCxeNvu72j4EmPuK7tr1PAC7SHh8ld9Mw3E=,fMS4mpO6buLQ/QMd+zJmxzty/VQ6B1EUZqoCU04zoRU= --sync-url=https://sync-v2.brave.com/v2 --lso-url=https://no-thanks.invalid --variations-server-url=https://variations.brave.com/seed --variations-insecure-server-url=https://variations.brave.com/seed --flag-switches-begin --flag-switches-end --desktop-startup-id=i3/brave/1167-42-remotestation_TIME4825670
Driver Information
Initialization time
50
In-process GPU
false
Passthrough Command Decoder
false
Sandboxed
false
GPU0
VENDOR= 0x8086 [Intel], DEVICE=0x9a49 [Mesa Intel(R) Xe Graphics (TGL GT2)], DRIVER_VENDOR=Mesa, DRIVER_VERSION=22.2.3 *ACTIVE*
Optimus
false
AMD switchable
false
GPU CUDA compute capability major version
0
Pixel shader version
4.60
Vertex shader version
4.60
Max. MSAA samples
16
Machine model name
Machine model version
GL_VENDOR
Intel
GL_RENDERER
Mesa Intel(R) Xe Graphics (TGL GT2)
GL_VERSION
4.6 (Core Profile) Mesa 22.2.3
GL_EXTENSIONS
GL_3DFX_texture_compression_FXT1 GL_AMD_conservative_depth GL_AMD_depth_clamp_separate GL_AMD_draw_buffers_blend GL_AMD_gpu_shader_int64 GL_AMD_multi_draw_indirect GL_AMD_performance_monitor GL_AMD_pinned_memory 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_compute_variable_group_size 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_fragment_shader_interlock 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_gl_spirv 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_ballot GL_ARB_shader_bit_encoding GL_ARB_shader_clock 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_shader_viewport_layer_array GL_ARB_shading_language_420pack GL_ARB_shading_language_include GL_ARB_shading_language_packing GL_ARB_spirv_extensions 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_filter_anisotropic 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_EXT_EGL_image_storage GL_EXT_EGL_sync GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_demote_to_helper_invocation GL_EXT_depth_bounds_test 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_memory_object GL_EXT_memory_object_fd 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_semaphore GL_EXT_semaphore_fd GL_EXT_shader_framebuffer_fetch GL_EXT_shader_framebuffer_fetch_non_coherent GL_EXT_shader_integer_mix GL_EXT_shader_samples_identical GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer 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_INTEL_blackhole_render GL_INTEL_conservative_rasterization GL_INTEL_performance_query GL_INTEL_shader_atomic_float_minmax GL_INTEL_shader_integer_functions2 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent 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_NV_compute_shader_derivatives GL_NV_conditional_render GL_NV_copy_image GL_NV_depth_clamp GL_NV_fragment_shader_interlock GL_NV_packed_depth_stencil GL_NV_texture_barrier GL_OES_EGL_image GL_S3_s3tc
Disabled Extensions
GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_MESA_framebuffer_flip_y
Disabled WebGL Extensions
Window system binding vendor
SGI
Window system binding version
1.4
Window system binding extensions
GLX_ARB_context_flush_control GLX_ARB_create_context GLX_ARB_create_context_no_error GLX_ARB_create_context_profile GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_buffer_age GLX_EXT_create_context_es2_profile GLX_EXT_create_context_es_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_no_config_context GLX_EXT_swap_control GLX_EXT_swap_control_tear GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_SGI_make_current_read GLX_SGI_video_sync
XDG_CURRENT_DESKTOP
i3
XDG_SESSION_TYPE
x11
GDMSESSION
i3
Ozone platform
x11
Direct rendering version
DRI3
Reset notification strategy
0x8261
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, P010: not supported
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
P010
Software only
Display(s) Information
Info
Display[2785062953156675] bounds=[0,0 1920x1080], workarea=[0,0 1920x1080], scale=1, rotation=0, panel_rotation=0 internal.
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
Refresh Rate in Hz
60
Video Acceleration Information
Decoding
Decode h264 baseline
16x16 to 4096x4096 pixels
Decode h264 main
16x16 to 4096x4096 pixels
Decode h264 high
16x16 to 4096x4096 pixels
Decode vp8
16x16 to 4096x4096 pixels
Decode vp9 profile0
16x16 to 16384x16384 pixels
Decode vp9 profile2
16x16 to 16384x16384 pixels
Decode hevc main
16x16 to 16384x16384 pixels
Decode hevc main 10
16x16 to 16384x16384 pixels
Decode hevc main still-picture
16x16 to 16384x16384 pixels
Decode av1 profile main
16x16 to 16384x16384 pixels
Encoding
Vulkan Information
Device Performance Information
Log Messages
[236626:236626:1203/233612.461916:ERROR:gpu_init.cc(523)] : Passthrough is not supported, GL is desktop, ANGLE is
[236626:236626:1203/233612.470794:WARNING:sandbox_linux.cc(380)] : InitializeSandbox() called with multiple threads in process gpu-process.
[236626:236626:1203/234049.319647:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 250, .bad_value = 54525958, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/234051.520497:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 261, .bad_value = 54525959, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/234058.532809:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/234058.535465:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/234129.303818:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 283, .bad_value = 54525961, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/234308.479777:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 310, .bad_value = 54525963, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/234516.018655:ERROR:shared_image_factory.cc(575)] : Could not find SharedImageBackingFactory with params: usage: DisplayRead|Scanout, format: YUV_420_BIPLANAR, share_between_threads: 0, gmb_type: platform
[236626:236626:1203/234516.018849:ERROR:shared_image_stub.cc(147)] : SharedImageStub: Unable to create shared image
[236626:236626:1203/234522.269960:ERROR:shared_image_factory.cc(575)] : Could not find SharedImageBackingFactory with params: usage: DisplayRead|Scanout, format: YUV_420_BIPLANAR, share_between_threads: 0, gmb_type: platform
[236626:236626:1203/234522.270135:ERROR:shared_image_stub.cc(147)] : SharedImageStub: Unable to create shared image
[236626:236626:1203/234522.272984:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/234522.274961:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/234522.276021:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/234522.355573:ERROR:shared_image_manager.cc(202)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[236626:236626:1203/235127.933334:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 350, .bad_value = 54525966, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/235135.647548:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 361, .bad_value = 54525967, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/235143.632330:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 372, .bad_value = 54525968, .minor_opcode = 0, .major_opcode = 4}
[236626:236626:1203/235212.139692:ERROR:shared_image_factory.cc(575)] : Could not find SharedImageBackingFactory with params: usage: DisplayRead|Scanout, format: YUV_420_BIPLANAR, share_between_threads: 0, gmb_type: platform
[236626:236626:1203/235212.139805:ERROR:shared_image_stub.cc(147)] : SharedImageStub: Unable to create shared image
[236626:236626:1203/235931.375454:ERROR:shared_image_factory.cc(575)] : Could not find SharedImageBackingFactory with params: usage: DisplayRead|Scanout, format: YUV_420_BIPLANAR, share_between_threads: 0, gmb_type: platform
[236626:236626:1203/235931.375537:ERROR:shared_image_stub.cc(147)] : SharedImageStub: Unable to create shared image
[236626:236626:1204/000007.644354:WARNING:connection.cc(41)] : X error received. Request: DestroyWindowRequest, Error: WindowError{.sequence = 393, .bad_value = 54525969, .minor_opcode = 0, .major_opcode = 4}

Any help would be greatly appreciated, I kinda need this for work. Also please ask me for more information and I will respond as promptly as I can.

Forgot to mention that it helps when I force my CPUs frequency higher… not that elagant of a solution but it works.

Good news! It looks like you’ve got an Intel Tiger Lake iGPU, which should support many codecs. You can verify whether VAAPI is working via vainfo and checking for codec support listed.

  • VAEntrypointEncSlice means encode is supported for the codec
  • VAEntrypointVLD means decode is supported for the codec

There are others such as:

Depending on your hardware, the list of supported codecs may be different. If you do not see a full list as expected, you will need to enable the Graphics microController and HEVC/H.265 microController firmware because the patent-encumbered codecs are disabled by default unless HuC/GuC are loaded during kernel boot. Also, for your Tiger Lake chip, use the intel-media-driver / a.k.a. iHD instead of the libva-intel-driver / a.k.a. i965. To check that it’s loaded you can search sudo dmesg -H output for lines such as:

[  +0.000549] Setting dangerous option enable_guc - tainting kernel
[  +0.000003] Setting dangerous option enable_fbc - tainting kernel

[...SNIP...]

[  +0.004422] i915 0000:00:02.0: [drm] GuC firmware i915/kbl_guc_70.1.1.bin version 70.1.1
[  +0.000004] i915 0000:00:02.0: [drm] HuC firmware i915/kbl_huc_4.0.0.bin version 4.0.0

Testing VA-API

VA-API supported codecs and driver load can be tested with vainfo
VA-API decode can be tested with ffmpeg and mpv. Encode can be tested with ffmpeg. You could test both decode & encode with only ffmpeg if you choose. In a second terminal, watch the display of sudo intel_gpu_top. If VA-API decode/encode is working, you should see Video and/or VideoEnhance engine classes running at some level above 0%.

libva-vdpau-driver* Translation Layers

As far as the libva-vdpau-driver-chromium, and libva-vdpau-driver and libva-vdpau* drivers in general… these are translation layers. They are also older and not well-maintained (last update for libva-vdpau-driver-chromium package was 2021-01-09, last commit for libva-vdpau-driver was 2012-10-05 ). I’d recommend you stay away from using VDPAU unless you really need video decode/encode hardware acceleration for Nvidia cards that do not support NVDEC/NVENC, or if you really need VA-API support backed by VDPAU and are willing to deal with the lack of codec support using libva-vdpau-driver.

Chromium & apps based on Chromium

Google has some docs about how to verify & test VA-API support in Chromium, and apps based on Chromium including Brave, Opera, Electron-based apps, (theoretically even MSEdge), etc…

Unfortunately with Intel libva there have been some recent changes relating to DRI3 vs. DRI2 driver breakages. Additionally, changes in Chromium and the plethora of flags relating to video acceleration makes getting it to work a bit complicated. Add into the mix X11 vs. Wayland / XWayland support, and things get even more tricky.

I haven’t been successful yet in getting Google Chrome to actually use the video decoder hardware through VA-API yet myself on Wayland. Even with all the flags to forcibly enable it plus Vulkan, chrome://media-internals page reports logs such as:

"Cannot select VDAVideoDecoder for video decoding"
kVideoDecoderName	"VpxVideoDecoder"
info	"Selected VpxVideoDecoder for video decoding, config: codec: vp9, profile: vp9 profile0, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"

So, Chrome was still falling back to the internal software decoder, although Firefox was able to decode the same 4k VP9 YouTube video with VA-API properly & was verified in intel_gpu_top that hardware acceleration was working.

Here’s where the path to proper working VA-API support in Chrome / Chromium / Electron-based apps led me so far:

So far no set of flags has been able to get proper VA-API support for me running google-chrome in both Wayland and XWayland modes. The closest I’ve gotten is in XWayland with the following flags:

export LIBVA_DRIVER_NAME=iHD ;  /opt/google/chrome/chrome --gpu-testing-vendor-id=0x8086 --gpu-testing-device-id=0x5912  --force-dark-mode  --enable-features=WebRTCPipeWireCapturer --disable-features=UseChrom
eOSDirectVideoDecoder,UseSkiaRenderer --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,VaapiIgnoreDriverChecks  --ignore-gpu-blocklist --use-vulkan

Note: The --gpu-testing-*-id flags are set to select my particular Intel HD 630 / Kaby Lake GPU. They may or may not be necessary, but would need to be changed to match other GPU IDs on a different system.

It does appear to initialize libva + iHD_drv_video.so properly, and displays supported codec profiles in chrome://gpu under “Video Acceleration Information”. Additionally, google-chrome was showing up under xlsclients to verify it was running under XWayland, and Vulkan was showing as enabled. However, every time I tried to play a test 4k VP9 video such as this one Chrome outputs the following error, and falls back to software decoding via VpxVideoDecoder:

Error: eglChooseConfig returned zero configs
    at Create (../../third_party/dawn/src/dawn/native/opengl/ContextEGL.cpp:53)

[2049863:2049863:0803/205001.161813:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
[2049863:2049863:0803/205004.559355:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
[2049863:2049863:0803/205004.572795:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!
libva info: Open new log file /tmp/libva.025335.thd-0x001f4747 for the thread 0x001f4747
libva info: LIBVA_TRACE is on, save log into /tmp/libva.025335.thd-0x001f4747
libva info: VA-API version 1.19.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_19
libva info: va_openDriver() returns 0
libva info: Save context 0x10000000 into log file /tmp/libva.025335.thd-0x001f4747
libva info: Open new log file /tmp/libva.025335.thd-0x001f4f4c for the thread 0x001f4f4c
[2049863:2049863:0803/205335.051345:ERROR:vaapi_wrapper.cc(2822)] vaPutSurface failed, VA error: invalid parameter
[2049863:2049863:0803/205335.051419:ERROR:vaapi_video_decode_accelerator.cc(287)] Failed putting surface into pixmap

In chrome://media-internals it shows:

00:00:00.649	kVideoDecoderName	"VDAVideoDecoder"
00:00:00.649	kIsPlatformVideoDecoder	true
00:00:00.649	info	"Selected VDAVideoDecoder for video decoding, config: codec: vp9, profile: vp9 profile0, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
00:00:00.649	pipeline_state	"kPlaying"
00:00:00.671	error	"VDA Error 4"
00:00:00.671	warning	"video decoder fallback after initial decode error."
00:00:00.672	kIsVideoDecryptingDemuxerStream	false
00:00:00.672	kVideoDecoderName	"VpxVideoDecoder"

So far it’s not working for me with google-chrome 115.0.5790.102-1, libva 2.19.0-1, + intel-media-driver 23.3.0-1. Maybe if some of those fixes to libva mentioned above get released, or if chrome is updated, then I’ll try again.