Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Issues with chrome/chromium VA-API
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Multimedia
View previous topic :: View next topic  
Author Message
freaky
n00b
n00b


Joined: 05 Jan 2003
Posts: 23

PostPosted: Tue Mar 12, 2024 9:18 am    Post subject: Issues with chrome/chromium VA-API Reply with quote

Hi,

for quite some time I've been hoping to get VA-API (for hardware video decode) working in my browser, as that would allow HEVC playback and I have a lot of HEVC videos hosted on nextcloud.

From what I got it should finally be supported under wayland now. At least on chromium >= 122 (see here for example: https://www.phoronix.com/news/Google-Chrome-Wayland-VA-API)

For a very long time I see under chrome://gpu that hardware video decoding is enabled, but no codecs are listed at all.

I'm on a Dell XPS laptop with a Intel GPU and nVidea card. It's mostly using the Intel GPU as far as I'm aware.

Any ideas on how to get this working? I had it working under X11 at some point, but that's been showing these issues for quite some time now as well. Think something in the VA-API configuration is broken or something.


Relevant chrome://gpu info:

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
* Skia Graphite: Disabled
* Video Decode: Hardware accelerated
* Video Encode: Software only. Hardware acceleration disabled
* Vulkan: Disabled
* WebGL: Hardware accelerated
* WebGL2: Hardware accelerated
* WebGPU: Disabled

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





VA-API seems fine:

~ $ vainfo
Trying display: wayland
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib64/va/drivers/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.20.1)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.1.3 ()
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
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointVLD
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
Back to top
View user's profile Send private message
jazkie
n00b
n00b


Joined: 08 Apr 2024
Posts: 3

PostPosted: Mon Apr 08, 2024 9:43 am    Post subject: Reply with quote

Hi,

It's been working for me since 121 or 122. I run Chromium (ungoogled-chromium) with following parameters:

Code:
--enable-features=VaapiVideoDecodeLinuxGL,UseChromeOSDirectVideoDecoder
--enable-zero-copy
--enable-gpu-rasterization
--disable-gpu-driver-bug-workaround
--disable-gpu-driver-bug-workarounds
--ignore-gpu-blocklist
--ozone-platform=wayland


Some of the flags are redundant and unnecessary nowadays, just haven't had time to clean up. You most likely only need the first line. I've set them in ~/.config/chromium-flags.conf, which is a symlink of ~/.var/app/com.github.Eloston.UngoogledChromium/config/chromium-flags.conf (running in flatpak, ymmv).

Some of the flags can also be toggled in chrome://flags, such as --ignore-gpu-blocklist, which is named "Override software rendering list" under the flags settings.

Hope this helps.
Back to top
View user's profile Send private message
freaky
n00b
n00b


Joined: 05 Jan 2003
Posts: 23

PostPosted: Thu Jun 20, 2024 6:56 am    Post subject: Reply with quote

Hi,

thanks for the reply. The options don't seem to make much difference for me. Whilst it says hardware decoding is enabled the list with codecs at the bottom remains empty.

Hope anyone has other ideas, would really like to get this working.

On Google Chrome 126 by now. Just updated to KDE/Plasma 6 yesterday. All doesn't seem to make much difference.


Code:
~ $ google-chrome-stable --enable-features=VaapiVideoDecodeLinuxGL,UseChromeOSDirectVideoDecoder --enable-zero-copy --enable-gpu-rasterization --disable-gpu-driver-bug-workaround --disable-gpu-driver-bug-workarounds --ignore-gpu-blocklist --ozone-platform=wayland
Created TensorFlow Lite XNNPACK delegate for CPU.
Warning: loader_scanned_icd_add: Could not get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD libGLX_nvidia.so.0
[17197:17197:0620/085259.722740:ERROR:shared_image_representation.cc(325)] Unable to initialize SkSurface
[17197:17197:0620/085259.722769:ERROR:raster_decoder.cc(2945)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: failed to create surface
[17197:17197:0620/085259.722836:ERROR:raster_decoder.cc(3012)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722874:ERROR:raster_decoder.cc(3101)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722893:ERROR:raster_decoder.cc(2864)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: SharedImage not cleared before use.
[17197:17197:0620/085259.722957:ERROR:raster_decoder.cc(3012)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722976:ERROR:raster_decoder.cc(3101)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722996:ERROR:shared_image_representation.cc(483)] Attempt to read from an uninitialized SharedImage. Initialized region: (0, 0, 0, 0) Size: (64, 64)
[17197:17197:0620/085259.723016:ERROR:raster_decoder.cc(2459)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_VALUE : glReadbackImagePixels: Source shared image is not accessible
[17197:17197:0620/085259.723207:ERROR:angle_platform_impl.cc(44)] SyncEGL.cpp:63 (operator()): eglCreateSync failed with 0x00003009
ERR: SyncEGL.cpp:63 (operator()): eglCreateSync failed with 0x00003009
[17197:17197:0620/085259.723238:ERROR:gl_display.cc(497)] EGL Driver message (Error) eglDestroySyncKHR: sync object is not valid.
[17231:10:0620/085300.204083:ERROR:command_buffer_proxy_impl.cc(325)] GPU state invalid after WaitForGetOffsetInRange.
[17140:17140:0620/085300.207698:ERROR:gpu_process_host.cc(1002)] GPU process exited unexpectedly: exit_code=139
[17613:1:0620/085302.347756:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
Fontconfig error: Cannot load default config file: No such file: (null)
[17450:1:0620/085311.716850:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[17586:1:0620/085319.356040:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
Back to top
View user's profile Send private message
jazkie
n00b
n00b


Joined: 08 Apr 2024
Posts: 3

PostPosted: Thu Jul 18, 2024 9:25 am    Post subject: Reply with quote

freaky wrote:
Hi,

thanks for the reply. The options don't seem to make much difference for me. Whilst it says hardware decoding is enabled the list with codecs at the bottom remains empty.

Hope anyone has other ideas, would really like to get this working.

On Google Chrome 126 by now. Just updated to KDE/Plasma 6 yesterday. All doesn't seem to make much difference.


Code:
~ $ google-chrome-stable --enable-features=VaapiVideoDecodeLinuxGL,UseChromeOSDirectVideoDecoder --enable-zero-copy --enable-gpu-rasterization --disable-gpu-driver-bug-workaround --disable-gpu-driver-bug-workarounds --ignore-gpu-blocklist --ozone-platform=wayland
Created TensorFlow Lite XNNPACK delegate for CPU.
Warning: loader_scanned_icd_add: Could not get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD libGLX_nvidia.so.0
[17197:17197:0620/085259.722740:ERROR:shared_image_representation.cc(325)] Unable to initialize SkSurface
[17197:17197:0620/085259.722769:ERROR:raster_decoder.cc(2945)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: failed to create surface
[17197:17197:0620/085259.722836:ERROR:raster_decoder.cc(3012)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722874:ERROR:raster_decoder.cc(3101)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722893:ERROR:raster_decoder.cc(2864)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: SharedImage not cleared before use.
[17197:17197:0620/085259.722957:ERROR:raster_decoder.cc(3012)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722976:ERROR:raster_decoder.cc(3101)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM
[17197:17197:0620/085259.722996:ERROR:shared_image_representation.cc(483)] Attempt to read from an uninitialized SharedImage. Initialized region: (0, 0, 0, 0) Size: (64, 64)
[17197:17197:0620/085259.723016:ERROR:raster_decoder.cc(2459)] [.WebGL-0xd78004f1500]GL ERROR :GL_INVALID_VALUE : glReadbackImagePixels: Source shared image is not accessible
[17197:17197:0620/085259.723207:ERROR:angle_platform_impl.cc(44)] SyncEGL.cpp:63 (operator()): eglCreateSync failed with 0x00003009
ERR: SyncEGL.cpp:63 (operator()): eglCreateSync failed with 0x00003009
[17197:17197:0620/085259.723238:ERROR:gl_display.cc(497)] EGL Driver message (Error) eglDestroySyncKHR: sync object is not valid.
[17231:10:0620/085300.204083:ERROR:command_buffer_proxy_impl.cc(325)] GPU state invalid after WaitForGetOffsetInRange.
[17140:17140:0620/085300.207698:ERROR:gpu_process_host.cc(1002)] GPU process exited unexpectedly: exit_code=139
[17613:1:0620/085302.347756:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
Fontconfig error: Cannot load default config file: No such file: (null)
[17450:1:0620/085311.716850:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[17586:1:0620/085319.356040:ERROR:command_buffer_proxy_impl.cc(132)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.


Looks like Chrome is trying to use nvidia with vulkan backend? Maybe try
Code:
--gpu-active-vendor-id
and
Code:
--gpu-active-device-id
to force iGPU and disable Vulkan under chrome://flags
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Multimedia All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum