You are not logged in.

#1101 2024-12-24 16:14:39

tekstryder
Member
Registered: 2013-02-14
Posts: 194

Re: chromium: hardware video acceleration with VA-API

Pearf wrote:

Working Wayland + Ozone + Vulkan + Vaapi decode and encode with AMD!

You sure that's really on Wayland and not Xwayland?

Enabling Vulkan on Wayland previously generated a ton of various errors and failed to render the browser window.

Still fails, but now gets straight to the point and says it ain't happening. I appreciated this!

[204262:204262:1224/110514.254392:ERROR:wayland_surface_factory.cc(241)] '--ozone-platform=wayland' is not compatible with Vulkan. Consider switching to '--ozone-platform=x11' or disabling Vulkan

EDIT: This appears to be yet another nVidia driver issue as Vulkan works fine with Wayland on my Intel-based graphics system.

Last edited by tekstryder (2024-12-25 14:23:46)

Offline

#1102 2024-12-25 00:11:08

Bzzz_56
Member
Registered: 2021-05-14
Posts: 37

Re: chromium: hardware video acceleration with VA-API

tekstryder wrote:

Still fails, but now gets straight to the point and says it ain't happening. I appreciated this!

[204262:204262:1224/110514.254392:ERROR:wayland_surface_factory.cc(241)] '--ozone-platform=wayland' is not compatible with Vulkan. Consider switching to '--ozone-platform=x11' or disabling Vulkan

Even it says not compatible, but vaapi is actually working..

Last edited by Bzzz_56 (2024-12-25 00:11:27)

Offline

#1103 2024-12-25 04:50:13

tekstryder
Member
Registered: 2013-02-14
Posts: 194

Re: chromium: hardware video acceleration with VA-API

Bzzz_56 wrote:

Even it says not compatible, but vaapi is actually working..

I now see you posted the very same error previously. I missed that.

Regardless, the application does not display a visible window with Vulkan enabled, so functional vaapi is rather moot.

EDIT: Oops, too many holiday libations yesterday... this appears to be yet another nVidia driver issue as Vulkan works fine with Wayland on my Intel-based graphics system.

Last edited by tekstryder (2024-12-25 14:25:57)

Offline

#1104 2025-01-05 23:48:59

extender
Member
Registered: 2021-01-26
Posts: 4

Re: chromium: hardware video acceleration with VA-API

Bad news bears. I have tested a bunch of the ungoogled chromium versions on my haswell system. The last version of chromium that works is 115. That seems to be when they disabled VDAVideoDecoder for the other options. On the latest 131 version it of course detects everything but then fails initializing the frame pool.

So now I have some computers that are torched. A T440P, some M73 thinkcentres, etc. Other than this they are fine to use. The firefox decoding "works" but drops frames and uses much more CPU. Is there some solution? On an even older T430 everything is fine in chromium for windows. I'm sure a few people are in my boat too.

Can chromium be compiled with VDAVideoDecoder re-enabled? Can some patch be done to the new iHD driver so that can be used instead of i965? From reading the bug reports, it doesn't look like google is interested in fixing this.

On newer systems everything seems fine for 131 chromium so of course they deprecate what can be corebooted and modded.

Offline

#1105 2025-01-06 11:50:30

seth
Member
Registered: 2012-09-03
Posts: 61,014

Re: chromium: hardware video acceleration with VA-API

Have you tried vivaldi?
https://archlinux.org/packages/extra/x86_64/vivaldi/
https://archlinux.org/packages/extra/x8 … eg-codecs/

You know that you don't have to watch videos in a browser? mpv + yt-dlp works fine for most cases.

Offline

#1106 2025-01-07 15:45:38

cataluna84
Member
From: Lucknow, India
Registered: 2025-01-07
Posts: 4
Website

Re: chromium: hardware video acceleration with VA-API

Hey Folks, Newbie here

CPU: AMD FX-8350
GPU: Nvidia RTX 2070 (8GB VRAM)
OS: Ubuntu 22.04.5 LTS
Google Chrome: Version 131.0.6778.204 (Official Build) (64-bit)

When I play a 4k-60FPS video on YouTube, I "Cannot select VaapiVideoDecoder for video decoding" via chrome://media-internals/

The video decodes via VpxVideoDecoder. I tried enabling some flags like "--enable-features=VaapiVideoDecoder,VaapiVideoEncoder --disable-features=UseChromeOSDirectVideoDecoder" but with no success.

Could you peeps help debug this issue?

Here is my full chrome://gpu/ report:

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

Version Information
===================
Data exported              : 2025-01-07T15:37:11.101Z
Chrome version             : Chrome/131.0.6778.204
Operating system           : Linux 6.8.0-51-generic
Software rendering list URL: [url]https://chromium.googlesource.com/chromium/src/+/52183f9e99a61056f9b78535f53d256f1516f2a0/gpu/config/software_rendering_list.json[/url]
Driver bug list URL        : [url]https://chromium.googlesource.com/chromium/src/+/52183f9e99a61056f9b78535f53d256f1516f2a0/gpu/config/gpu_driver_bug_list.json[/url]
ANGLE commit id            : ac6cda4cbd71
2D graphics backend        : Skia/131 f14f6b1ab7cf544c0190074488d17821281cfa4d
Command Line               : /usr/bin/google-chrome-stable --flag-switches-begin --flag-switches-end

Driver Information
==================
Initialization time             : 735
In-process GPU                  : false
Passthrough Command Decoder     : true
Sandboxed                       : true
GPU0                            : VENDOR= 0x10de [Google Inc. (NVIDIA Corporation)], DEVICE=0x1f07 [ANGLE (NVIDIA Corporation, NVIDIA GeForce RTX 2070/PCIe/SSE2, OpenGL 4.5.0 NVIDIA 565.77)], DRIVER_VENDOR=Nvidia, DRIVER_VERSION=565.77 *ACTIVE*
Optimus                         : false
AMD switchable                  : false
Pixel shader version            : 1.00
Vertex shader version           : 1.00
Max. MSAA samples               : 8
Machine model name              : 
Machine model version           : 
GL implementation parts         : (gl=egl-angle,angle=opengl)
Display type                    : ANGLE_OPENGL
GL_VENDOR                       : Google Inc. (NVIDIA Corporation)
GL_RENDERER                     : ANGLE (NVIDIA Corporation, NVIDIA GeForce RTX 2070/PCIe/SSE2, OpenGL 4.5.0 NVIDIA 565.77)
GL_VERSION                      : OpenGL ES 2.0.0 (ANGLE 2.1.24078 git hash: ac6cda4cbd71)
GL_EXTENSIONS                   : GL_AMD_performance_monitor GL_ANGLE_base_vertex_base_instance_shader_builtin GL_ANGLE_blob_cache GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_get_serialized_context_string GL_ANGLE_get_tex_level_parameter GL_ANGLE_instanced_arrays GL_ANGLE_logic_op GL_ANGLE_memory_size GL_ANGLE_polygon_mode GL_ANGLE_program_binary_readiness_query GL_ANGLE_program_cache_control GL_ANGLE_provoking_vertex GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_external_update GL_ANGLE_texture_rectangle GL_ANGLE_translated_shader_source GL_APPLE_clip_distance GL_ARB_sync 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_texture GL_CHROMIUM_framebuffer_mixed_samples GL_CHROMIUM_lose_context GL_CHROMIUM_sync_query GL_EXT_blend_func_extended GL_EXT_blend_minmax GL_EXT_clear_texture GL_EXT_clip_control GL_EXT_color_buffer_half_float GL_EXT_compressed_ETC1_RGB8_sub_texture 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_multisample_compatibility 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_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_blend_equation_advanced_coherent GL_KHR_debug GL_KHR_parallel_shader_compile GL_KHR_robustness 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_stencil GL_NV_robustness_video_memory_purge 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_depth24 GL_OES_depth32 GL_OES_depth_texture 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_rgb8_rgba8 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_WEBGL_video_texture
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    : Google Inc. (NVIDIA Corporation)
Window system binding version   : 1.5 (ANGLE 2.1.24078 git hash: ac6cda4cbd71)
Window system binding extensions: EGL_EXT_create_context_robustness EGL_KHR_create_context EGL_KHR_get_all_proc_addresses EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource 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_create_context_no_error EGL_NOK_texture_from_pixmap EGL_NV_robustness_video_memory_purge EGL_KHR_reusable_sync
XDG_CURRENT_DESKTOP             : ubuntu:GNOME
XDG_SESSION_TYPE                : x11
GDMSESSION                      : ubuntu
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: supported,  R_16: not supported,  RG_88: supported,  RG_1616: not supported,  BGR_565: supported,  RGBA_4444: not supported,  RGBX_8888: supported,  RGBA_8888: supported,  BGRX_8888: supported,  BGRA_1010102: supported,  RGBA_1010102: supported,  BGRA_8888: supported,  RGBA_F16: supported,  YVU_420: supported,  YUV_420_BIPLANAR: supported,  YUVA_420_TRIPLANAR: not supported,  P010: not supported

Driver Bug Workarounds
======================
*   disable_discard_framebuffer
*   enable_webgl_timer_query_extensions
*   exit_on_context_lost
*   force_cube_complete
*   init_gl_position_in_vertex_shader
*   unpack_overlapping_rows_separately_unpack_buffer
*   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

*   Program link fails in NVIDIA Linux if gl_Position is not set:
    ([url]http://crbug.com/286468[/url])
    Applied Workarounds: init_gl_position_in_vertex_shader

*   NVIDIA fails glReadPixels from incomplete cube map texture:
    ([url]http://crbug.com/518889[/url])
    Applied Workarounds: force_cube_complete

*   Framebuffer discarding can hurt performance on non-tilers:
    ([url]http://crbug.com/570897[/url])
    Applied Workarounds: disable_discard_framebuffer

*   Unpacking overlapping rows from unpack buffers is unstable on NVIDIA GL driver:
    ([url]http://crbug.com/596774[/url])
    Applied Workarounds: unpack_overlapping_rows_separately_unpack_buffer

*   Disable KHR_blend_equation_advanced until cc shaders are updated:
    ([url]http://crbug.com/661715[/url])
    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:
    ([url]http://crbug.com/808744[/url]), ([url]http://crbug.com/870491[/url])
    Applied Workarounds: enable_webgl_timer_query_extensions

*   Some drivers can't recover after OUT_OF_MEM and context lost:
    ([url]http://crbug.com/893177[/url])
    Applied Workarounds: exit_on_context_lost

*   Disable GL_MESA_framebuffer_flip_y for desktop GL:
    ([url]http://crbug.com/964010[/url])
    Applied Workarounds: disable(GL_MESA_framebuffer_flip_y)

ANGLE Features
==============
*   allowCompressedFormats (Frontend workarounds): Enabled
    condition: true
    Allow compressed formats

*   alwaysEnableEmulatedMultidrawExtensions (Frontend workarounds) ([url]http://anglebug.com/355645824[/url]): Disabled
    Enable multi-draw and base vertex base instance extensions for non-WebGL
    contexts if they are emulated.

*   alwaysRunLinkSubJobsThreaded (Frontend features) ([url]http://anglebug.com/42266842[/url]): Disabled
    If true, sub tasks of the link job are always threaded, regardless of
    GL_KHR_parallel_shader_compile

*   cacheCompiledShader (Frontend features) ([url]http://anglebug.com/42265509[/url]): Enabled
    condition: true
    Enable to cache compiled shaders

*   compileJobIsThreadSafe (Frontend features) ([url]http://anglebug.com/41488637[/url]): Disabled
    condition: false
    If false, parts of the compile job cannot be parallelized

*   disableAnisotropicFiltering (Frontend workarounds): Disabled
    Disable support for anisotropic filtering

*   disableDrawBuffersIndexed (Frontend features) ([url]http://anglebug.com/42266194[/url]): Disabled
    Disable support for OES_draw_buffers_indexed and EXT_draw_buffers_indexed

*   disableProgramBinary (Frontend features) ([url]http://anglebug.com/42263580[/url]): Disabled
    condition: IsPowerVrRogue(functions)
    Disable support for GL_OES_get_program_binary

*   disableProgramCaching (Frontend features) ([url]http://anglebug.com/1423136[/url]): Disabled
    Disables saving programs to the cache

*   disableProgramCachingForTransformFeedback (Frontend workarounds): Disabled
    condition: !isMesa && isQualcomm
    On some GPUs, program binaries don't contain transform feedback varyings

*   dumpShaderSource (Frontend features) ([url]http://anglebug.com/42266231[/url]): Disabled
    Write shader source to temp directory

*   dumpTranslatedShaders (Frontend features) ([url]http://anglebug.com/40644912[/url]): Disabled
    Write translated shaders to temp directory

*   emulatePixelLocalStorage (Frontend features) ([url]http://anglebug.com/40096838[/url]): Enabled
    condition: true
    Emulate ANGLE_shader_pixel_local_storage using shader images

*   enableCaptureLimits (Frontend features) ([url]http://anglebug.com/42264287[/url]): Disabled
    Set the context limits like frame capturing was enabled

*   enableProgramBinaryForCapture (Frontend features) ([url]http://anglebug.com/42264193[/url]): Disabled
    Even if FrameCapture is enabled, enable GL_OES_get_program_binary

*   enableShaderSubstitution (Frontend workarounds) ([url]http://anglebug.com/42266232[/url]): Disabled
    Check the filesystem for shaders to use instead of those provided through
    glShaderSource

*   enableTranslatedShaderSubstitution (Frontend workarounds) ([url]http://anglebug.com/40644912[/url]): Disabled
    Check the filesystem for translated shaders to use instead of the shader
    translator's

*   forceDepthAttachmentInitOnClear (Frontend workarounds) ([url]https://anglebug.com/42265720[/url]): Disabled
    Force depth attachment initialization on clear ops

*   forceFlushAfterDrawcallUsingShadowmap (Frontend workarounds) ([url]https://issuetracker.google.com/349489248[/url]): Disabled
    Force flush after drawcall use shadow map for intel device.

*   forceGlErrorChecking (Frontend features) ([url]https://issuetracker.google.com/220069903[/url]): Disabled
    Force GL error checking (i.e. prevent applications from disabling error
    checking

*   forceInitShaderVariables (Frontend features): Disabled
    Force-enable shader variable initialization

*   forceMinimumMaxVertexAttributes (Frontend features): Disabled
    condition: false
    Force the minimum GL_MAX_VERTEX_ATTRIBS that the context's client version
    allows.

*   forceRobustResourceInit (Frontend features) ([url]http://anglebug.com/42264571[/url]): Disabled
    Force-enable robust resource init

*   linkJobIsThreadSafe (Frontend features) ([url]http://anglebug.com/41488637[/url]): Disabled
    condition: false
    If false, parts of the link job cannot be parallelized

*   loseContextOnOutOfMemory (Frontend workarounds): Enabled
    condition: true
    Some users rely on a lost context notification if a GL_OUT_OF_MEMORY error
    occurs

*   rejectWebglShadersWithUndefinedBehavior (Frontend workarounds) ([url]http://crbug.com/350528343[/url]): Enabled
    condition: true
    Attempts to detect undefined behavior when in WebGL mode and reject
    shaders if any detected.

*   singleThreadedTextureDecompression (Frontend workarounds): Disabled
    Disables multi-threaded decompression of compressed texture formats

*   uncurrentEglSurfaceUponSurfaceDestroy (Frontend workarounds) ([url]https://issuetracker.google.com/292285899[/url]): Disabled
    Make egl surface uncurrent when calling eglDestroySurface(), if the
    surface is still bound by the context of current render thread

*   RGBA4IsNotSupportedForColorRendering (OpenGL workarounds): Disabled
    condition: functions->standard == STANDARD_GL_DESKTOP && isIntel
    GL_RGBA4 is not color renderable

*   RGBDXT1TexturesSampleZeroAlpha (OpenGL workarounds) ([url]http://anglebug.com/42262386[/url]): Disabled
    condition: IsApple()
    Sampling BLACK texels from RGB DXT1 textures returns transparent black on
    Mac.

*   addAndTrueToLoopCondition (OpenGL workarounds): Disabled
    condition: IsApple() && isIntel
    Calculation of loop conditions in for and while loop has bug

*   adjustSrcDstRegionForBlitFramebuffer (OpenGL workarounds) ([url]http://crbug.com/830046[/url]): Enabled
    condition: IsLinux() || (IsAndroid() && isNvidia) || (IsWindows() && isNvidia) || (IsApple() && functions->standard == STANDARD_GL_ES)
    Many platforms have issues with blitFramebuffer when the parameters are
    large.

*   allowAstcFormats (OpenGL workarounds): Enabled
    condition: !isMesa || isIntel && (Is9thGenIntel(device) || IsGeminiLake(device) || IsCoffeeLake(device) || Is11thGenIntel(device) || Is12thGenIntel(device))
    Enable ASTC on desktop OpenGL

*   allowClearForRobustResourceInit (OpenGL workarounds) (https://crbug.com/848952 [url]http://crbug.com/883276)[/url]: Disabled
    condition: IsApple()
    Using glClear for robust resource initialization is buggy on some drivers
    and leads to texture corruption. Default to data uploads except on MacOS
    where it is very slow.

*   allowETCFormats (OpenGL workarounds): Disabled
    condition: isIntel && !IsSandyBridge(device) && !IsIvyBridge(device) && !IsHaswell(device)
    Enable ETC2/EAC on desktop OpenGL

*   alwaysCallUseProgramAfterLink (OpenGL workarounds) ([url]http://crbug.com/110263[/url]): Enabled
    condition: true
    Always call useProgram after a successful link to avoid a driver bug

*   alwaysUnbindFramebufferTexture2D (OpenGL workarounds) ([url]https://anglebug.com/42264072[/url]): Enabled
    condition: isNvidia && (IsWindows() || IsLinux())
    Force unbind framebufferTexture2D before binding renderbuffer to work
    around driver bug.

*   avoid1BitAlphaTextureFormats (OpenGL workarounds): Disabled
    condition: functions->standard == STANDARD_GL_DESKTOP && isAMD
    Issue with 1-bit alpha framebuffer formats

*   avoidBindFragDataLocation (OpenGL workarounds) ([url]https://anglebug.com/8646[/url]): Disabled
    condition: !isMesa && isQualcomm
    Qualcomm drivers fail to link after binding fragment data locations.

*   bgraTexImageFormatsBroken (OpenGL workarounds) ([url]https://anglebug.com/40096376[/url]): Disabled
    condition: IsQualcomm(vendor)
    BGRA formats do not appear to be accepted by some qualcomm despite the
    extension being exposed.

*   bindCompleteFramebufferForTimerQueries (OpenGL workarounds) ([url]https://crbug.com/1356053[/url]): Disabled
    condition: isMali
    Some drivers require a complete framebuffer when beginQuery for
    TimeElapsed orTimestampis called.

*   bindTransformFeedbackBufferBeforeBindBufferRange (OpenGL workarounds) ([url]https://anglebug.com/42263702[/url]): Disabled
    condition: IsApple()
    Bind transform feedback buffers to the generic binding point before
    calling glBindBufferBase or glBindBufferRange.

*   clampArrayAccess (OpenGL workarounds) ([url]http://anglebug.com/40096539[/url]): Disabled
    condition: IsAndroid() || isAMD || !functions->hasExtension("GL_KHR_robust_buffer_access_behavior")
    Clamp uniform array access to avoid reading invalid memory.

*   clampFragDepth (OpenGL workarounds): Enabled
    condition: isNvidia
    gl_FragDepth is not clamped correctly when rendering to a floating point
    depth buffer

*   clampMscRate (OpenGL workarounds) ([url]https://crbug.com/1042393[/url]): Disabled
    condition: IsLinux() && IsWayland()
    Some drivers return bogus values for GetMscRate, so we clamp it to 30Hz

*   clampPointSize (OpenGL workarounds): Enabled
    condition: IsAndroid() || isNvidia
    The point size range reported from the API is inconsistent with the actual
    behavior

*   clearToZeroOrOneBroken (OpenGL workarounds) ([url]https://crbug.com/710443[/url]): Disabled
    condition: IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 12, 6)
    Clears when the clear color is all zeros or ones do not work.

*   clearsWithGapsNeedFlush (OpenGL workarounds): Disabled
    condition: !isMesa && isQualcomm && qualcommVersion < 490
    Clearing an FBO with multiple attachments may need a flush to avoid race
    conditions

*   clipSrcRegionForBlitFramebuffer (OpenGL workarounds) ([url]http://crbug.com/830046[/url]): Disabled
    condition: IsApple() || (IsLinux() && isAMD)
    Issues with blitFramebuffer when the parameters don't match the
    framebuffer size.

*   corruptProgramBinaryForTesting (OpenGL workarounds) ([url]https://anglebug.com/41488638[/url]): Disabled
    Corrupt the program binary retrieved from the driver for testing purposes.

*   decodeEncodeSRGBForGenerateMipmap (OpenGL workarounds) ([url]http://anglebug.com/40644730[/url]): Disabled
    condition: IsApple()
    Decode and encode before generateMipmap for srgb format textures.

*   disableBaseInstanceVertex (OpenGL workarounds) ([url]http://anglebug.com/42266610[/url]): Disabled
    condition: IsMaliValhall(functions)
    Some drivers have buggy implementations of glDraw*BaseVertex*.

*   disableBlendEquationAdvanced (OpenGL workarounds) ([url]https://anglebug.com/42267098[/url]): Disabled
    condition: (isIntel && IsWindows()) || IsAdreno4xx(functions) || IsAdreno5xx(functions) || isMali
    Disable GL_KHR_blend_equation_advanced due to various driver issues.

*   disableBlendFuncExtended (OpenGL workarounds) ([url]http://anglebug.com/40644593[/url]): Disabled
    condition: IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 14, 0)
    ARB_blend_func_extended does not pass the tests

*   disableClipControl (OpenGL features) ([url]http://crbug.com/1434317[/url]): Disabled
    condition: IsMaliG72OrG76OrG51(functions)
    Some devices genenerate errors when querying the clip control state

*   disableDrawBuffersIndexed (OpenGL workarounds): Disabled
    condition: IsWindows() && isAMD
    Disable OES_draw_buffers_indexed extension.

*   disableGPUSwitchingSupport (OpenGL workarounds) ([url]https://crbug.com/1091824[/url]): Disabled
    condition: isDualGPUMacWithNVIDIA
    Disable GPU switching support (use only the low-power GPU) on older
    MacBook Pros.

*   disableMultisampledRenderToTexture (OpenGL workarounds) ([url]http://anglebug.com/40096530[/url]): Disabled
    condition: isAdreno4xxOnAndroidLessThan51 || isAdreno4xxOnAndroid70 || isAdreno5xxOnAndroidLessThan70 || isAdreno5xxOnAndroid71 || isLinuxVivante || isWindowsNVIDIA
    Many drivers have bugs when using GL_EXT_multisampled_render_to_texture

*   disableNativeParallelCompile (OpenGL workarounds) ([url]http://crbug.com/1094869[/url]): Disabled
    condition: isTSANBuild && IsLinux() && isNvidia
    Do not use native KHR_parallel_shader_compile even when available.

*   disableRenderSnorm (OpenGL workarounds) ([url]https://anglebug.com/42266745[/url]): Disabled
    condition: isMesa && (mesaVersion < (std::array<int, 3>{21, 3, 0}) || (mesaVersion < (std::array<int, 3>{23, 3, 0}) && functions->standard == STANDARD_GL_ES))
    Disable EXT_render_snorm extension.

*   disableSemaphoreFd (OpenGL workarounds) ([url]https://crbug.com/1046462[/url]): Disabled
    condition: IsLinux() && isAMD && isMesa && mesaVersion < (std::array<int, 3>{19, 3, 5})
    Disable GL_EXT_semaphore_fd extension

*   disableSyncControlSupport (OpenGL workarounds) ([url]https://crbug.com/1137851[/url]): Disabled
    condition: IsLinux() && isIntel && isMesa && mesaVersion[0] == 20
    Speculative fix for issues on Linux/Wayland where exposing
    GLX_OML_sync_control renders Chrome unusable

*   disableTextureClampToBorder (OpenGL workarounds) ([url]https://anglebug.com/42265877[/url]): Disabled
    condition: false
    Imagination devices generate INVALID_ENUM when setting the texture border
    color.

*   disableTextureMirrorClampToEdge (OpenGL workarounds) ([url]https://anglebug.com/42266748[/url]): Disabled
    condition: functions->standard == STANDARD_GL_ES && isMesa && mesaVersion < (std::array<int, 3>{23, 1, 7})
    Disable EXT_texture_mirror_clamp_to_edge extension.

*   disableTiledRendering (OpenGL workarounds) (http://skbug.com/9491 [url]https://github.com/flutter/flutter/issues/47164[/url] [url]https://github.com/flutter/flutter/issues/47804)[/url]: Disabled
    condition: missingTilingEntryPoints || IsAdreno3xx(functions)
    Disable QCOM_tiled_rendering on devices with rendering artifacts or which
    improperly expose the extension.

*   disableTimestampQueries (OpenGL workarounds) ([url]https://crbug.com/811661[/url]): Disabled
    condition: (IsLinux() && isVMWare) || (IsAndroid() && isNvidia) || (IsAndroid() && GetAndroidSDKVersion() < 27 && IsAdreno5xxOrOlder(functions)) || (!isMesa && IsMaliT8xxOrOlder(functions)) || (!isMesa && IsMaliG31OrOlder(functions))
    Disable GL_EXT_disjoint_timer_query extension

*   doWhileGLSLCausesGPUHang (OpenGL workarounds) ([url]http://crbug.com/644669[/url]): Disabled
    condition: IsApple() && functions->standard == STANDARD_GL_DESKTOP && GetMacOSVersion() < OSVersion(10, 11, 0)
    Some GLSL constructs involving do-while loops cause GPU hangs

*   doesSRGBClearsOnLinearFramebufferAttachments (OpenGL workarounds): Disabled
    condition: isIntel || isAMD
    Issue clearing framebuffers with linear attachments when
    GL_FRAMEBUFFER_SRGB is enabled

*   dontInitializeUninitializedLocals (OpenGL workarounds) ([url]http://anglebug.com/40096454[/url]): Disabled
    condition: !isMesa && isQualcomm
    Initializing uninitialized locals caused odd behavior in a few WebGL 2
    tests

*   dontUseLoopsToInitializeVariables (OpenGL workarounds) ([url]http://crbug.com/809422[/url]): Disabled
    condition: (!isMesa && isQualcomm) || (isIntel && IsApple())
    For loops used to initialize variables hit native GLSL compiler bugs

*   emulateAbsIntFunction (OpenGL workarounds) ([url]http://crbug.com/642227[/url]): Disabled
    condition: IsApple() && isIntel
    abs(i) where i is an integer returns unexpected result

*   emulateAtan2Float (OpenGL workarounds) ([url]http://crbug.com/672380[/url]): Enabled
    condition: isNvidia
    atan(y, x) may return a wrong answer

*   emulateClipDistanceState (OpenGL workarounds): Disabled
    condition: isQualcomm
    Some drivers ignore GL_CLIP_DISTANCEi_EXT state.

*   emulateClipOrigin (OpenGL workarounds): Disabled
    condition: !isMesa && isQualcomm && qualcommVersion < 490 && functions->hasGLESExtension("GL_EXT_clip_control")
    Some drivers incorrectly apply GL_CLIP_ORIGIN_EXT state.

*   emulateCopyTexImage2D (OpenGL workarounds): Disabled
    condition: isApple
    Replace CopyTexImage2D with TexImage2D + CopyTexSubImage2D.

*   emulateCopyTexImage2DFromRenderbuffers (OpenGL workarounds) ([url]https://anglebug.com/42263273[/url]): Disabled
    condition: IsApple() && functions->standard == STANDARD_GL_ES && !(isAMD && IsWindows())
    CopyTexImage2D spuriously returns errors on iOS when copying from
    renderbuffers.

*   emulateImmutableCompressedTexture3D (OpenGL workarounds) ([url]https://crbug.com/1060012[/url]): Disabled
    condition: isQualcomm
    Use non-immutable texture allocation to work around a driver bug.

*   emulateIsnanFloat (OpenGL workarounds) ([url]http://crbug.com/650547[/url]): Disabled
    condition: isIntel && IsApple() && IsSkylake(device) && GetMacOSVersion() < OSVersion(10, 13, 2)
    Using isnan() on highp float will get wrong answer

*   emulateMaxVertexAttribStride (OpenGL workarounds) ([url]http://anglebug.com/42260722[/url]): Disabled
    condition: IsLinux() && functions->standard == STANDARD_GL_DESKTOP && isAMD
    Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried

*   emulatePackSkipRowsAndPackSkipPixels (OpenGL workarounds) ([url]https://anglebug.com/40096712[/url]): Disabled
    condition: IsApple()
    GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL
    driver.

*   emulatePrimitiveRestartFixedIndex (OpenGL workarounds) ([url]http://anglebug.com/40096648[/url]): Disabled
    condition: functions->standard == STANDARD_GL_DESKTOP && functions->isAtLeastGL(gl::Version(3, 1)) && !functions->isAtLeastGL(gl::Version(4, 3))
    When GL_PRIMITIVE_RESTART_FIXED_INDEX is not available, emulate it with
    GL_PRIMITIVE_RESTART and glPrimitiveRestartIndex.

*   emulateRGB10 (OpenGL workarounds) ([url]https://crbug.com/1300575[/url]): Enabled
    condition: functions->standard == STANDARD_GL_DESKTOP
    Emulate RGB10 support using RGB10_A2.

*   ensureNonEmptyBufferIsBoundForDraw (OpenGL features) ([url]http://crbug.com/1456243[/url]): Disabled
    condition: IsApple() || IsAndroid()
    Apple OpenGL drivers crash when drawing with a zero-sized buffer bound
    using a non-zero divisor.

*   explicitFragmentLocations (OpenGL workarounds) ([url]https://anglebug.com/42266740[/url]): Disabled
    condition: isQualcomm
    Always write explicit location layout qualifiers for fragment outputs.

*   finishDoesNotCauseQueriesToBeAvailable (OpenGL workarounds): Enabled
    condition: functions->standard == STANDARD_GL_DESKTOP && isNvidia
    glFinish doesn't cause all queries to report available result

*   flushBeforeDeleteTextureIfCopiedTo (OpenGL workarounds) ([url]http://anglebug.com/40644715[/url]): Disabled
    condition: IsApple() && isIntel
    Some drivers track CopyTex{Sub}Image texture dependencies incorrectly.
    Flush before glDeleteTextures in this case

*   flushOnFramebufferChange (OpenGL workarounds) ([url]http://crbug.com/1181068[/url]): Disabled
    condition: IsApple() && Has9thGenIntelGPU(systemInfo)
    Switching framebuffers without a flush can lead to crashes on Intel 9th
    Generation GPU Macs.

*   initFragmentOutputVariables (OpenGL workarounds) ([url]http://crbug.com/1171371[/url]): Disabled
    condition: IsAdreno42xOr3xx(functions)
    No init gl_FragColor causes context lost

*   initializeCurrentVertexAttributes (OpenGL workarounds): Enabled
    condition: isNvidia
    During initialization, assign the current vertex attributes to the
    spec-mandated defaults

*   keepBufferShadowCopy (OpenGL workarounds): Disabled
    condition: !CanMapBufferForRead(functions)
    Maintain a shadow copy of buffer data when the GL API does not permit
    reading data back.

*   limitMax3dArrayTextureSizeTo1024 (OpenGL workarounds) ([url]http://crbug.com/927470[/url]): Disabled
    condition: isIntelLinuxLessThanKernelVersion5
    Limit max 3d texture size and max array texture layers to 1024 to avoid
    system hang

*   limitMaxMSAASamplesTo4 (OpenGL workarounds) ([url]http://crbug.com/797243[/url]): Disabled
    condition: IsAndroid() || (IsApple() && (isIntel || isAMD || isNvidia))
    Various rendering bugs have been observed when using higher MSAA counts

*   limitWebglMaxTextureSizeTo4096 (OpenGL workarounds) ([url]http://crbug.com/927470[/url]): Disabled
    condition: isAndroidLessThan14 || isIntelLinuxLessThanKernelVersion5
    Limit webgl max texture size to 4096 to avoid frequent out-of-memory
    errors

*   limitWebglMaxTextureSizeTo8192 (OpenGL workarounds) ([url]http://anglebug.com/42267045[/url]): Disabled
    condition: isAndroidAtLeast14
    Limit webgl max texture size to 8192 to avoid frequent out-of-memory
    errors

*   packLastRowSeparatelyForPaddingInclusion (OpenGL workarounds) ([url]http://anglebug.com/42260492[/url]): Enabled
    condition: IsApple() || isNvidia
    When uploading textures from an pack buffer, some drivers count an extra
    row padding

*   packOverlappingRowsSeparatelyPackBuffer (OpenGL workarounds): Enabled
    condition: isNvidia
    In the case of packing to a pixel pack buffer, pack overlapping rows row
    by row

*   passHighpToPackUnormSnormBuiltins (OpenGL workarounds) ([url]http://anglebug.com/42265995[/url]): Disabled
    condition: isQualcomm
    packUnorm4x8 fails on Pixel 4 if it is not passed a highp vec4.

*   preAddTexelFetchOffsets (OpenGL workarounds) ([url]http://crbug.com/642605[/url]): Disabled
    condition: IsApple() && isIntel
    Intel Mac drivers mistakenly consider the parameter position of nagative
    vaule as invalid even if the sum of position and offset is in range, so we
    need to add workarounds by rewriting texelFetchOffset(sampler, position,
    lod, offset) into texelFetch(sampler, position + offset, lod).

*   preTransformTextureCubeGradDerivatives (OpenGL workarounds): Disabled
    condition: isApple
    Apply a vendor-specific transformation to explicit cubemap derivatives

*   promotePackedFormatsTo8BitPerChannel (OpenGL workarounds) ([url]http://anglebug.com/42264008[/url]): Disabled
    condition: IsApple() && hasAMD
    Packed color formats are buggy on Macs with AMD GPUs

*   queryCounterBitsGeneratesErrors (OpenGL workarounds) ([url]http://anglebug.com/42261713[/url]): Disabled
    condition: IsNexus5X(vendor, device)
    Drivers generate errors when querying the number of bits in timer queries

*   readPixelsUsingImplementationColorReadFormatForNorm16 (OpenGL workarounds) ([url]http://anglebug.com/40096661[/url]): Disabled
    condition: !isIntel && functions->standard == STANDARD_GL_ES && functions->isAtLeastGLES(gl::Version(3, 1)) && functions->hasGLESExtension("GL_EXT_texture_norm16")
    Quite some OpenGL ES drivers don't implement readPixels for
    RGBA/UNSIGNED_SHORT from EXT_texture_norm16 correctly

*   reapplyUBOBindingsAfterUsingBinaryProgram (OpenGL workarounds) ([url]http://anglebug.com/42260591[/url]): Disabled
    condition: isAMD || IsAndroid()
    Some drivers forget about UBO bindings when using program binaries

*   regenerateStructNames (OpenGL workarounds) ([url]http://crbug.com/403957[/url]): Disabled
    condition: IsApple()
    All Mac drivers do not handle struct scopes correctly. This workaround
    overwrites a structname with a unique prefix.

*   removeDynamicIndexingOfSwizzledVector (OpenGL workarounds) ([url]http://crbug.com/709351[/url]): Disabled
    condition: IsApple() || IsAndroid() || IsWindows()
    Dynamic indexing of swizzled l-values doesn't work correctly on various
    platforms.

*   removeInvariantAndCentroidForESSL3 (OpenGL workarounds): Disabled
    condition: functions->isAtMostGL(gl::Version(4, 1)) || (functions->standard == STANDARD_GL_DESKTOP && isAMD)
    Fix spec difference between GLSL 4.1 or lower and ESSL3

*   resetTexImage2DBaseLevel (OpenGL workarounds) ([url]https://crbug.com/705865[/url]): Disabled
    condition: IsApple() && isIntel && GetMacOSVersion() >= OSVersion(10, 12, 4)
    Reset texture base level before calling glTexImage2D to work around pixel
    comparison failure.

*   resyncDepthRangeOnClipControl (OpenGL workarounds) ([url]https://anglebug.com/42266811[/url]): Disabled
    condition: !isMesa && isQualcomm
    Resync depth range to apply clip control updates.

*   rewriteFloatUnaryMinusOperator (OpenGL workarounds) ([url]http://crbug.com/308366[/url]): Disabled
    condition: IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 12, 0)
    Using '-<float>' will get wrong answer

*   rewriteRepeatedAssignToSwizzled (OpenGL workarounds): Enabled
    condition: isNvidia
    Repeated assignment to swizzled values inside a GLSL user-defined function
    have incorrect results

*   rewriteRowMajorMatrices (OpenGL workarounds) ([url]http://anglebug.com/40096480[/url]): Disabled
    condition: false
    Rewrite row major matrices in shaders as column major as a driver bug
    workaround

*   sanitizeAMDGPURendererString (OpenGL workarounds) ([url]http://crbug.com/1181193[/url]): Disabled
    condition: IsLinux() && hasAMD
    Strip precise kernel and DRM version information from amdgpu renderer
    strings.

*   scalarizeVecAndMatConstructorArgs (OpenGL workarounds) ([url]http://crbug.com/1420130[/url]): Enabled
    condition: isMali || isNvidia
    Rewrite vec/mat constructors to work around driver bugs

*   setPrimitiveRestartFixedIndexForDrawArrays (OpenGL workarounds) ([url]http://anglebug.com/40096648[/url]): Disabled
    condition: features->emulatePrimitiveRestartFixedIndex.enabled && IsApple() && isIntel
    Some drivers discard vertex data in DrawArrays calls when the fixed
    primitive restart index is within the number of primitives being drawn.

*   setZeroLevelBeforeGenerateMipmap (OpenGL workarounds): Disabled
    condition: IsApple()
    glGenerateMipmap fails if the zero texture level is not set on some Mac
    drivers.

*   shiftInstancedArrayDataWithOffset (OpenGL workarounds) ([url]http://crbug.com/1144207[/url]): Disabled
    condition: IsApple() && IsIntel(vendor) && !IsHaswell(device)
    glDrawArraysInstanced is buggy on certain new Mac Intel GPUs

*   srgbBlendingBroken (OpenGL workarounds) ([url]https://crbug.com/40488750[/url]): Disabled
    condition: IsQualcomm(vendor)
    SRGB blending does not appear to work correctly on the some Qualcomm
    devices. Writing to an SRGB framebuffer with GL_FRAMEBUFFER_SRGB enabled
    and then reading back returns the same value. Disabling
    GL_FRAMEBUFFER_SRGB will then convert in the wrong direction.

*   supportsFragmentShaderInterlockARB (OpenGL features) ([url]http://anglebug.com/40096838[/url]): Enabled
    condition: functions->isAtLeastGL(gl::Version(4, 5)) && functions->hasGLExtension("GL_ARB_fragment_shader_interlock")
    Backend GL context supports ARB_fragment_shader_interlock extension

*   supportsFragmentShaderInterlockNV (OpenGL features) ([url]http://anglebug.com/40096838[/url]): Enabled
    condition: functions->isAtLeastGL(gl::Version(4, 3)) && functions->hasGLExtension("GL_NV_fragment_shader_interlock")
    Backend GL context supports NV_fragment_shader_interlock extension

*   supportsFragmentShaderOrderingINTEL (OpenGL features) ([url]http://anglebug.com/40096838[/url]): Disabled
    condition: functions->isAtLeastGL(gl::Version(4, 4)) && functions->hasGLExtension("GL_INTEL_fragment_shader_ordering")
    Backend GL context supports GL_INTEL_fragment_shader_ordering extension

*   supportsShaderFramebufferFetchEXT (OpenGL features) ([url]http://anglebug.com/40096838[/url]): Disabled
    condition: functions->hasGLESExtension("GL_EXT_shader_framebuffer_fetch")
    Backend GL context supports EXT_shader_framebuffer_fetch extension

*   supportsShaderFramebufferFetchNonCoherentEXT (OpenGL features) ([url]http://anglebug.com/40096838[/url]): Disabled
    condition: functions->hasGLESExtension("GL_EXT_shader_framebuffer_fetch_non_coherent")
    Backend GL context supports EXT_shader_framebuffer_fetch_non_coherent
    extension

*   syncAllVertexArraysToDefault (OpenGL workarounds) ([url]http://anglebug.com/40096758[/url]): Disabled
    condition: !nativegl::SupportsVertexArrayObjects(functions)
    Only use the default VAO because of missing support or driver bugs

*   syncDefaultVertexArraysToDefault (OpenGL workarounds) ([url]http://anglebug.com/355034686[/url]): Disabled
    condition: nativegl::CanUseDefaultVertexArrayObject(functions) && !isNvidia
    Sync all frontend vertex array objects to the driver default vertex array

*   unbindFBOBeforeSwitchingContext (OpenGL workarounds) ([url]http://crbug.com/1181193[/url]): Disabled
    condition: IsPowerVR(vendor)
    Imagination GL drivers are buggy with context switching.

*   unfoldShortCircuits (OpenGL workarounds) ([url]http://anglebug.com/42263407[/url]): Disabled
    condition: IsApple()
    Mac incorrectly executes both sides of && and || expressions when they
    should short-circuit.

*   unpackLastRowSeparatelyForPaddingInclusion (OpenGL workarounds) ([url]http://anglebug.com/42260492[/url]): Enabled
    condition: IsApple() || isNvidia
    When uploading textures from an unpack buffer, some drivers count an extra
    row padding

*   unpackOverlappingRowsSeparatelyUnpackBuffer (OpenGL workarounds): Enabled
    condition: isNvidia
    In the case of unpacking from a pixel unpack buffer, unpack overlapping
    rows row by row

*   unsizedSRGBReadPixelsDoesntTransform (OpenGL workarounds) (http://crbug.com/550292 [url]http://crbug.com/565179)[/url]: Disabled
    condition: !isMesa && isQualcomm
    Drivers returning raw sRGB values instead of linearized values when
    calling glReadPixels on unsized sRGB texture formats

*   uploadTextureDataInChunks (OpenGL workarounds) ([url]http://crbug.com/1181068[/url]): Disabled
    condition: IsApple()
    Upload texture data in <120kb chunks to work around Mac driver hangs and
    crashes.

*   useIntermediateTextureForGenerateMipmap (OpenGL workarounds) ([url]https://crbug.com/40279678[/url]): Disabled
    condition: IsPixel7OrPixel8(functions)
    Some drivers lose context when repeatedly generating mipmaps on textures
    that were used as framebuffers.

*   useUnusedBlocksWithStandardOrSharedLayout (OpenGL workarounds): Disabled
    condition: (IsApple() && functions->standard == STANDARD_GL_DESKTOP) || (IsLinux() && isAMD)
    Unused std140 or shared uniform blocks will be treated as inactive

*   vertexIDDoesNotIncludeBaseVertex (OpenGL workarounds): Disabled
    condition: IsApple() && isAMD
    gl_VertexID in GLSL vertex shader doesn't include base vertex value

Dawn Info
=========

<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
*   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
*   clip-distances

[Enabled Toggle Names]
----------------------
*   lazy_clear_resource_on_first_use: 
    ([url]https://crbug.com/dawn/145[/url]):
    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: 
    ([url]https://crbug.com/dawn/42[/url]):
    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
    ([url]https://github.com/KhronosGroup/Vulkan-Docs/issues/1005[/url]) for more
    details.

*   vulkan_use_d32s8: 
    ([url]https://crbug.com/dawn/286[/url]):
    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: 
    ([url]https://crbug.com/dawn/666[/url]):
    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: 
    ([url]https://crbug.com/1214923[/url]):
    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: 
    ([url]https://crbug.com/dawn/136[/url]):
    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: 
    ([url]https://crbug.com/dawn/1800[/url]):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

*   use_vulkan_zero_initialize_workgroup_memory_extension: 
    ([url]https://crbug.com/dawn/1302[/url]):
    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: 
    ([url]https://crbug.com/1214923[/url]):
    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: 
    ([url]https://crbug.com/dawn/1800[/url]):
    Enable timestamp queries quantization to reduce the precision of timers
    that can be created with timestamp queries.

<Unknown GPU>  OpenGLES backend - ANGLE (NVIDIA Corporation, NVIDIA GeForce RTX 2070/PCIe/SSE2, OpenGL 4.5.0 NVIDIA 565.77) (Compatibility Mode)
------------------------------------------------------------------------------------------------------------------------------------------------

[WebGPU Status]
---------------
*   Available

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

[Enabled Toggle Names]
----------------------
*   lazy_clear_resource_on_first_use: 
    ([url]https://crbug.com/dawn/145[/url]):
    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: 
    ([url]https://crbug.com/dawn/582[/url]):
    Disables the use of indexed draw buffer state which is unsupported on some
    platforms.

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

*   disallow_spirv: 
    ([url]https://crbug.com/1214923[/url]):
    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: 
    ([url]https://crbug.com/dawn/136[/url]):
    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: 
    ([url]https://crbug.com/dawn/1800[/url]):
    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: 
    ([url]https://crbug.com/dawn/1389[/url]):
    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: 
    ([url]https://crbug.com/dawn/1782[/url]):
    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: 
    ([url]https://crbug.com/dawn/1782[/url]):
    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: 
    ([url]https://crbug.com/dawn/1782[/url]):
    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: 
    ([url]https://crbug.com/dawn/1781[/url]):
    Use a blit instead of a copy command to copy snorm texture to a
    buffer.Workaround for OpenGLES.

*   use_blit_for_rgb9e5ufloat_texture_copy: 
    ([url]https://crbug.com/dawn/2079[/url]):
    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: 
    ([url]https://crbug.com/dawn/2362[/url]):
    Use T2B and B2T copies to emulate a T2T copy between sRGB and non-sRGB
    textures.Workaround for OpenGLES.

*   gl_depth_bias_modifier: 
    ([url]https://crbug.com/42241017[/url]):
    Empirically some GL drivers select n+1 when a depth value lies between 2^n
    and 2^(n+1), while the WebGPU CTS is expecting n. Scale the depth bias
    value by multiple 0.5 on certain backends to achieve conformant result.

[WebGPU Required Toggles - enabled]
-----------------------------------
*   disallow_spirv: 
    ([url]https://crbug.com/1214923[/url]):
    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: 
    ([url]https://crbug.com/dawn/1800[/url]):
    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[0] 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.0600], 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
Info                          : Display[2] bounds=[1920,0 2560x1440], workarea=[1920,27 2560x1413], 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.0600], 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            : 143.99830627441406

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

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

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

Log Messages
============
[3416:3416:0107/194758.777145:WARNING:vaapi_wrapper.cc(1534)] : Skipping nVidia device named: nvidia-drm
[3416:3416:0107/194758.853481:WARNING:viz_main_impl.cc(85)] : VizNullHypothesis is disabled (not a warning)
[3416:3416:0107/202525.649946:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/202722.438705:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/202855.709184:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/203316.182111:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204014.839146:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204023.215458:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204136.602817:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204137.113272:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204828.716118:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/204928.612476:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/205405.016212:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/205407.535931:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/205635.518176:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/205839.207745:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/205839.941870:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210136.454239:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210416.281281:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210418.597794:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210419.007015:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210449.614193:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210519.003992:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210701.675659:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[3416:3416:0107/210710.502452:ERROR:shared_image_manager.cc(250)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.

I started my Chrome with the following flags -

google-chrome-stable --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL --disable-features=UseChromeOSDirectVideoDecoder --enable-gpu-rasterization --enable-zero-copy

Here is my log of playing a 4k-60FPS YouTube video after starting with the above flags - chrome://media-internals/

Log of Stuttering and Decoder https://postimg.cc/64qZryMB

Last edited by cataluna84 (2025-01-07 18:21:37)

Offline

#1107 2025-01-07 16:26:29

cataluna84
Member
From: Lucknow, India
Registered: 2025-01-07
Posts: 4
Website

Re: chromium: hardware video acceleration with VA-API

Merged in previous post

Last edited by cataluna84 (2025-01-07 18:22:35)

Offline

#1108 2025-01-07 16:55:57

seth
Member
Registered: 2012-09-03
Posts: 61,014

Re: chromium: hardware video acceleration with VA-API

Please replace the oversized image w/ a link, don't post pictures of text, post the text, and don't bump - edit your previous post to mend it if nobody has yet replied.
Also avoid mindless full quotes - notably of yourself.


Also

OS: Ubuntu 22.04.5 LTS

https://bbs.archlinux.org/misc.php?action=rules

The most important information would probably be vainfo and try to play the video w/ "mpv --hwdec=vaapi https://…" because you'll likely need a shim for nviida/vaapi

Offline

#1109 2025-01-07 19:32:20

cataluna84
Member
From: Lucknow, India
Registered: 2025-01-07
Posts: 4
Website

Re: chromium: hardware video acceleration with VA-API

My bad, I thought this forum was for Linux. Many folks have referenced this problem and have failed to get a solution for X11. Refer https://github.com/elFarto/nvidia-vaapi-driver/issues/5

I will have to try on Firefox next as there is a VA-API implementation that uses NVDEC as a backend.

Using these, I got some way of disabling the annoying log message of [3416:3416:0107/194758.777145:WARNING:vaapi_wrapper.cc(1534)] : Skipping nVidia device named: nvidia-drm:

google-chrome-stable --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxGL,VaapiOnNvidiaGPUs,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecode,UseMultiPlaneFormatForHardwareVideo --disable-features=UseChromeOSDirectVideoDecoder --enable-gpu-rasterization --enable-zero-copy --ozone-platform=x11

vainfo

libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.14 (libva 2.12.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG4Simple            :	VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
      <unknown profile>               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD

Moreover, mpv already supports using nvdec directly, so not sure playing a video w/ "mpv --hwdec=vaapi https://…" will accomplish.

Last edited by cataluna84 (2025-01-07 19:34:05)

Offline

#1110 2025-01-07 20:05:22

seth
Member
Registered: 2012-09-03
Posts: 61,014

Re: chromium: hardware video acceleration with VA-API

not sure playing a video w/ "mpv --hwdec=vaapi https://…" will accomplish

The point is to check whether your setup allows the playback via VAAPI at all, because the browser won't use nvdec.

You're using some vaapi/vdpau shim, https://wiki.archlinux.org/title/Hardwa … ion_layers but - if that's the entire output, no VP9 - what youtube will most likely throw at you.
There're extensions force youtube to use h26, but I'm not sure 4k is available in h264 at all.

Offline

#1111 2025-01-07 20:10:21

moturhead
Member
Registered: 2021-10-31
Posts: 18

Re: chromium: hardware video acceleration with VA-API

@Xephon

libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 22.3.6 for AMD Radeon Graphics (renoir, LLVM 15.0.6, DRM 3.49, 6.1.0-28-amd64)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

Looks like my Mesa version is too old to use these flags.

Offline

#1112 2025-01-07 21:02:56

Xephon
Member
Registered: 2024-12-22
Posts: 23

Re: chromium: hardware video acceleration with VA-API

moturhead wrote:

Looks like my Mesa version is too old to use these flags

Yep. Mesa version >= 24.1 is required.
Is there a particular reason you use that outdated version?

Offline

#1113 2025-01-07 22:09:30

Covkie
Member
Registered: 2024-04-28
Posts: 1

Re: chromium: hardware video acceleration with VA-API

Has anyone been able to get acceleration working on a dual GPU system? I'm on a laptop with AMD integrated and Nvidia dedicated. With the Vulkan flags and my dGPU fully disabled it works fine but having it enabled causes chromium to freak out and attempt to use my dGPU solely and claim it as the drivers for both GPU0 and GPU1

[39636:39636:0107/163827.101840:ERROR:vulkan_swap_chain.cc(400)] vkQueuePresentKHR() failed: -1000001004
[39636:39636:0107/163827.102318:ERROR:gpu_service_impl.cc(1154)] Exiting GPU process because some drivers can't recover from errors. GPU process will restart shortly.
[39589:39589:0107/163827.189746:ERROR:gpu_process_host.cc(982)] GPU process exited unexpectedly: exit_code=8704
Driver Information
==================
Initialization time             : 419
In-process GPU                  : false
Passthrough Command Decoder     : true
Sandboxed                       : false
GPU0                            : VENDOR= 0x1002, DEVICE=0x1636, DRIVER_VENDOR=NVIDIA, DRIVER_VERSION=565.77.0.0
GPU1                            : VENDOR= 0x10de, DEVICE=0x1f15, DRIVER_VENDOR=NVIDIA, DRIVER_VERSION=565.77.0.0 *ACTIVE*
Optimus                         : false
AMD switchable                  : false
Pixel shader version            : 1.00
Vertex shader version           : 1.00
Max. MSAA samples               : 8
Machine model name              : 
Machine model version           : 
GL implementation parts         : (gl=egl-angle,angle=vulkan)
Display type                    : ANGLE_VULKAN
GL_VENDOR                       : Google Inc. (NVIDIA)
GL_RENDERER                     : ANGLE (NVIDIA, Vulkan 1.3.289 (NVIDIA NVIDIA GeForce RTX 2060 (0x00001F15)), NVIDIA-565.77.0.0)
GL_VERSION                      : OpenGL ES 2.0.0 (ANGLE 2.1.1 git hash: fffbc739779a)

dgpu off:

Driver Information
==================
Initialization time             : 108
In-process GPU                  : false
Passthrough Command Decoder     : true
Sandboxed                       : false
GPU0                            : VENDOR= 0x1002 [Google Inc. (AMD)], DEVICE=0x1636 [ANGLE (AMD, Vulkan 1.3.296 (AMD Radeon Graphics (RADV RENOIR) (0x00001636)), radv-24.3.3)], DRIVER_VENDOR=AMD, DRIVER_VERSION=24.3.3 *ACTIVE*
Optimus                         : false
AMD switchable                  : false
Pixel shader version            : 1.00
Vertex shader version           : 1.00
Max. MSAA samples               : 8
Machine model name              : 
Machine model version           : 
GL implementation parts         : (gl=egl-angle,angle=vulkan)
Display type                    : ANGLE_VULKAN
GL_VENDOR                       : Google Inc. (AMD)
GL_RENDERER                     : ANGLE (AMD, Vulkan 1.3.296 (AMD Radeon Graphics (RADV RENOIR) (0x00001636)), radv-24.3.3)
GL_VERSION                      : OpenGL ES 2.0.0 (ANGLE 2.1.1 git hash: fffbc739779a)

Gpu info with no flags

GPU0                            : VENDOR= 0x1002, DEVICE=0x1636, DRIVER_VENDOR=Mesa, DRIVER_VERSION=24.3.3 *ACTIVE*
GPU1                            : VENDOR= 0x10de, DEVICE=0x1f15

I can only assume this is a chromium bug?

Offline

#1114 2025-01-07 22:42:13

seth
Member
Registered: 2012-09-03
Posts: 61,014

Re: chromium: hardware video acceleration with VA-API

https://bbs.archlinux.org/viewtopic.php?id=302138 (but you card order isn't flipped, so that answers that…)
Since it's angle/vulkan, have you tried

VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json chromium

Offline

#1115 2025-01-10 20:21:26

moturhead
Member
Registered: 2021-10-31
Posts: 18

Re: chromium: hardware video acceleration with VA-API

Xephon wrote:

Is there a particular reason you use that outdated version?

Nope. Updated that, and now getting hardware decoding on AMDGPU using these flags:

--use-gl=angle --use-angle=vulkan --enable-features=Vulkan,DefaultANGLEVulkan,VulkanFromANGLE,VaapiVideoDecodeLinuxGL,VaapiIgnoreDriverChecks,VaapiVideoEncoder

Last edited by moturhead (2025-01-10 20:33:21)

Offline

#1116 2025-01-11 15:00:36

cataluna84
Member
From: Lucknow, India
Registered: 2025-01-07
Posts: 4
Website

Re: chromium: hardware video acceleration with VA-API

seth wrote:

not sure playing a video w/ "mpv --hwdec=vaapi https://…" will accomplish

The point is to check whether your setup allows the playback via VAAPI at all, because the browser won't use nvdec.

You're using some vaapi/vdpau shim, https://wiki.archlinux.org/title/Hardwa … ion_layers but - if that's the entire output, no VP9 - what youtube will most likely throw at you.
There're extensions force youtube to use h26, but I'm not sure 4k is available in h264 at all.

Yeah, my setup allows the playback via VAAPI.

The https://github.com/elFarto/nvidia-vaapi-driver shim works for Firefox. I can see 'Compute' type besides the firefox process when the 2160p 60 FPS, VP9 YouTube video is playing and the CPU utilization is minimal on nvtop and nvidia-smi.

Here is the video I tested on https://youtu.be/dQ8gSV_KyDw?si=sbP9YZ1_NFkUACPq

If you folks have found a way to do the same for Google Chrome on Ubuntu, I would be forever grateful! smile

Offline

#1117 2025-01-11 20:49:53

seth
Member
Registered: 2012-09-03
Posts: 61,014

Re: chromium: hardware video acceleration with VA-API

VP9 YouTube video is playing and the CPU utilization is minimal

Did you then shortcut the output in #1109 ? Because according to that list VP9 isn't supported (it's not in there) - or did you install https://github.com/elFarto/nvidia-vaapi-driver/ only now?

nb. that google-chrome isn't the same as chromium, you should maybe try the latter first (it's also what this thread is about)

Offline

#1118 2025-01-18 11:29:24

yuvrajtalukdar
Member
Registered: 2024-01-17
Posts: 2

Re: chromium: hardware video acceleration with VA-API

Pearf wrote:

Working Wayland + Ozone + Vulkan + Vaapi decode and encode with AMD!

--use-gl=angle
--use-angle=vulkan
--enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder,VaapiIgnoreDriverChecks,UseMultiPlaneFormatForHardwareVideo
--ozone-platform-hint=auto

Tested on brave/chromium with 7900XTX and Radeon 880M (Strix Point) and RX Vega 7 (Renoir) fully working. On the first two 8k@60fps (AV1) Youtube with no dropped frames. It is imho a really big leap for Linux desktop since hardware acceleration increases performance and lowers power comsumption on a laptop in a BIG way!

Let's hope it will not break again and will be activated by default soon.

Got hardware accelerated decoding working on chromium running on amd igpu under vulkan wayland using the following:-

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json chromium --use-gl=angle --use-angle=vulkan --enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder,VaapiIgnoreDriverChecks,UseMultiPlaneFormatForHardwareVideo --ozone-platform-hint=auto

My system is a dual gpu amg (igpu + nvidia) vulkan by default selects nvidia , and vulkan + wayland + nvidia fails to even render the browser. But vulkan + radeon + wayland does.

And yes i verified using xeyes, that chromium is indeed running under wayland. And verified gpu usage (decode) using nvtop.

And thanks to @Pearf for the hint.

Last edited by yuvrajtalukdar (2025-01-18 11:29:59)

Offline

#1119 2025-01-28 23:00:57

adolfotregosa
Member
Registered: 2025-01-23
Posts: 4

Re: chromium: hardware video acceleration with VA-API

Intel UHD 770: Only Firefox enables "Video" while monitoring with intel_gpu_top. I have tried every command-line option mentioned in this thread. Despite Brave showing "Video Decode: Hardware accelerated" in brave://gpu, there is no video acceleration in any Chromium-based browser.

However, when using mpv to play a YouTube URL, hardware acceleration works perfectly.

What am I missing, guys?

Brave version → Chromium 132.0.6834.111 ,  KDE 6.2.5 + wayland

vainfo
Trying display: wayland
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.4.4 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointFEI
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointFEI
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointFEI
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointFEI
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain12             : VAEntrypointEncSlice
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointEncSlice
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointEncSlice
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

Offline

#1120 2025-01-29 06:51:49

Xephon
Member
Registered: 2024-12-22
Posts: 23

Re: chromium: hardware video acceleration with VA-API

adolfotregosa wrote:

I have tried every command-line option mentioned in this thread

This is not helpful. What combination of flags do you use exactly?
See any error messages at the very bottom of brave://gpu while playing videos?

Possible causes why video acceleration might not work in a chromium-based browser

vainfo tells you which codecs are supported, but Chromium will only support VP9 and h264

Chromium on desktop will only accelerate videos larger than 720p

Offline

#1121 2025-01-29 19:01:14

adolfotregosa
Member
Registered: 2025-01-23
Posts: 4

Re: chromium: hardware video acceleration with VA-API

to make it work on chrome based browsers AFTER and STARTING with version 131

https://issues.chromium.org/issues/40225939#comment54

"""
From my observation you may need:

--enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL on intel
--enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL,VaapiIgnoreDriverChecks,VaapiOnNvidiaGPUs on AMD or NVIDIA
--ozone-platform-hint=auto for wayland
"""

EDIT: With brave://flags -> ozone set to default, and after closing and opening the browser both video and videoenhance work. With ozone set to auto , only video works.
I have no idea what video enhance does when ozone is set to default.

Last edited by adolfotregosa (2025-01-29 20:14:05)

Offline

Board footer

Powered by FluxBB