Status Update
Comments
ja...@google.com <ja...@google.com> #2
[Monorail components: UI]
se...@gmail.com <se...@gmail.com> #3
se...@gmail.com <se...@gmail.com> #4
do...@chromium.org <do...@chromium.org> #5
[Monorail components: -UI Internals>Skia]
ro...@google.com <ro...@google.com> #6
[Monorail components: Blink>Compositing]
va...@chromium.org <va...@chromium.org> #7
ja...@google.com <ja...@google.com> #8
va...@chromium.org <va...@chromium.org> #9
+cc msisov@, thomasanderson@: Do you know if we can rely on window transparency in X11 (and so something is setup incorrectly in x11 code)? if not then browser compositor can't use context menus that doesn't cover the whole window
[Monorail components: -Blink>Compositing -Internals>Skia UI>Browser]
ma...@gmail.com <ma...@gmail.com> #10
If I turn off "Chrome Refresh 2023", the problem no longer occurs.
ma...@gmail.com <ma...@gmail.com> #11
It seems that "Chrome Refresh 2023" is presuming a compositor is available, but it is not necessarily so on X.org.
I normally keep the compositor off to reduce CPU and provide lower latency remote VNC desktop. In this case, the compositor is often in software and it can have a perceptible impact on performance to turn it on.
ms...@igalia.com <ms...@igalia.com> #12
zw...@google.com <zw...@google.com> #14
Upping to P2 because this makes the UI pretty ugly and we should actually prioritize fixing it. This is especially jarring if you're using a dark background (screenshot attached).
zw...@google.com <zw...@google.com> #15
se...@gmail.com <se...@gmail.com> #16
gi...@appspot.gserviceaccount.com <gi...@appspot.gserviceaccount.com> #17
commit 5e5752e036b7fc22bb7e79372603ed560db6e4e3
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Fri Dec 15 22:17:33 2023
[Refresh 2023] Don't render menu shadows when there's no compositor
This CL also adds OzonePlatform::IsWindowCompositingSupported()
as an alternative to Widget::IsTranslucentWindowOpacitySupported()
since the latter requires a native window which we don't have when
MenuConfig::InitPlatformCR2023() is called. A followup will remove
Widget::IsTranslucentWindowOpacitySupported() and it's associated
plumbing.
R=sky
Fixed: 1494394
Change-Id: If9c454347bf5a44c2824ea6de7a114185abadc55
Reviewed-on:
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1238284}
[modify]
[modify]
[modify]
[modify]
[modify]
th...@chromium.org <th...@chromium.org> #18
th...@chromium.org <th...@chromium.org> #19
pc...@google.com <pc...@google.com> #20
dp...@chromium.org <dp...@chromium.org> #21
se...@gmail.com <se...@gmail.com> #23
Note that this only works if the compositor is (or isn't) running at the point the browser starts up. If the compositor goes away after startup, the black shadows return. (If the compositor was originally not present but is started after Chrome, everything seems to work just fine! Perhaps that codepath could be used always?)
sp...@google.com <sp...@google.com> #24
Hi,
Just ran into the following on linux stable 123.0.6212.86 on i3wm on my personal laptop (see attached image)
Looks like nearly the same issue...
qu...@gmail.com <qu...@gmail.com> #25
Is there any news on this? On Xorg, if there is no compositor, it shows ugly black pixels on every native pop-up, such as context menus, menus, and bookmark dropdowns.
Firefox's rounded corners don't have this issue.
th...@google.com <th...@google.com> #26
c#24: That looks like a compositor configuration issue since the outer shadow isn't drawn by Chrome.
c#25: Can you explain how you're getting that UI? Chrome on desktop Linux should never round the bottom corners like in your image. Is that a custom rule you've set up in your compositor?
dp...@chromium.org <dp...@chromium.org> #27
c#24: That looks like a compositor configuration issue since the outer shadow isn't drawn by Chrome. c#25: Can you explain how you're getting that UI? Chrome on desktop Linux should never round the bottom corners like in your image. Is that a custom rule you've set up in your compositor?
FWIW, I use i3 and get the same results. I don't think there is anything special to reproduce, beyond using i3 and launching Chrome. See attached screenshots.
th...@google.com <th...@google.com>
ap...@google.com <ap...@google.com> #28
Branch: main
commit eb333704d978e204ff10ad515ba5610e8fe1bd77
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Jun 11 17:37:48 2024
Disable rounded corners on menus when compositing is not available
R=sky
Fixed: 40937108
Change-Id: I6be7799dd51a8c7dd6a9fb4d1c0d44e51ea1cbd9
Low-Coverage-Reason: HARD_TO_TEST: Would need to add new test infra where compositing is disabled
Reviewed-on:
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1313536}
M ui/views/controls/menu/menu_config_linux.cc
ap...@google.com <ap...@google.com> #29
Branch: main
commit 60fd468d7c2f2233a893c95ef3c42ee9532659d7
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Wed Jun 12 19:54:15 2024
Fix regression in shadow drawing on Linux Menus
This fixes a regression after r1313536. use_bubble_border must be set
to true for menu shadows. Changing the corner_radius* settings to 0
will also disable menu shadows.
Also, on X11, the compositor might start and stop. This CL handles
that case too.
R=sky
Bug: 40937108
Fixed: 346720240
Change-Id: I95e30619e5b0ce92eda3ed3d46a0ede52a845d50
Reviewed-on:
Reviewed-by: Scott Violet <sky@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1314193}
M ui/views/controls/menu/menu_config.cc
M ui/views/controls/menu/menu_config_linux.cc
Description
Chrome Version: 118.0.5993.88
OS: Linux running i3 (I think I'm not running a compositor that can do transparent windows)
What steps will reproduce the problem?
(1) Open some page with non-white background in Chrome
(2) Right-click in the middle
What happens instead?
The context menu appears with a drop shadow painted on an ugly white rectangle around it. See attachment.
about://gpu:
Graphics Feature Status
* Canvas: Hardware accelerated
* Canvas out-of-process rasterization: Disabled
* Direct Rendering Display Compositor: Disabled
* Compositing: Hardware accelerated
* Multiple Raster Threads: Enabled
* OpenGL: Enabled
* Rasterization: Hardware accelerated
* Raw Draw: Disabled
* Skia Graphite: Disabled
* Video Decode: Hardware accelerated
* Video Encode: Software only. Hardware acceleration disabled
* Vulkan: Disabled
* WebGL: Hardware accelerated
* WebGL2: Hardware accelerated
* WebGPU: Disabled
Driver Bug Workarounds
* adjust_src_dst_region_for_blitframebuffer
* clear_uniforms_before_first_program_use
* disable_discard_framebuffer
* enable_webgl_timer_query_extensions
* exit_on_context_lost
* force_cube_complete
* init_gl_position_in_vertex_shader
* init_vertex_attributes
* pack_parameters_workaround_with_pack_buffer
* reset_base_mipmap_level_before_texstorage
* unpack_alignment_workaround_with_unpack_buffer
* unpack_overlapping_rows_separately_unpack_buffer
* use_virtualized_gl_contexts
* 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:http://crbug.com/286468 )
(
Applied Workarounds: init_gl_position_in_vertex_shader
* Clear uniforms before first program use on all platforms:http://crbug.com/124764 ), (http://crbug.com/349137 )
(
Applied Workarounds: clear_uniforms_before_first_program_use
* Linux NVIDIA drivers don't have the correct defaults for vertex attributes:http://crbug.com/351528 )
(
Applied Workarounds: init_vertex_attributes
* MakeCurrent is slow on Linux with NVIDIA drivers:http://crbug.com/449150 ), (http://crbug.com/514510 )
(
Applied Workarounds: use_virtualized_gl_contexts
* NVIDIA fails glReadPixels from incomplete cube map texture:http://crbug.com/518889 )
(
Applied Workarounds: force_cube_complete
* Pack parameters work incorrectly with pack buffer bound:http://crbug.com/563714 )
(
Applied Workarounds: pack_parameters_workaround_with_pack_buffer
* Alignment works incorrectly with unpack buffer bound:http://crbug.com/563714 )
(
Applied Workarounds: unpack_alignment_workaround_with_unpack_buffer
* Framebuffer discarding can hurt performance on non-tilers:http://crbug.com/570897 )
(
Applied Workarounds: disable_discard_framebuffer
* Unpacking overlapping rows from unpack buffers is unstable on NVIDIA GL driver:http://crbug.com/596774 )
(
Applied Workarounds: unpack_overlapping_rows_separately_unpack_buffer
* Disable KHR_blend_equation_advanced until cc shaders are updated:http://crbug.com/661715 )
(
Applied Workarounds: disable(GL_KHR_blend_equation_advanced),
disable(GL_KHR_blend_equation_advanced_coherent)
* Expose WebGL's disjoint_timer_query extensions on platforms with site isolation:http://crbug.com/808744 ), (http://crbug.com/870491 )
(
Applied Workarounds: enable_webgl_timer_query_extensions
* glTexStorage* are buggy when base mipmap level is not 0:http://crbug.com/877874 )
(
Applied Workarounds: reset_base_mipmap_level_before_texstorage
* Some drivers can't recover after OUT_OF_MEM and context lost:http://crbug.com/893177 )
(
Applied Workarounds: exit_on_context_lost
* adjust src/dst region if blitting pixels outside framebuffer on Linux NVIDIA:http://crbug.com/830046 )
(
Applied Workarounds: adjust_src_dst_region_for_blitframebuffer
* Disable GL_MESA_framebuffer_flip_y for desktop GL:http://crbug.com/964010 )
(
Applied Workarounds: disable(GL_MESA_framebuffer_flip_y)
ANGLE Features
* allowCompressedFormats (Frontend workarounds): Enabled
condition: true
Allow compressed formats
* cacheCompiledShader (Frontend features) (http://anglebug.com/7036 ): Disabled
Enable to cache compiled shaders
* disableAnisotropicFiltering (Frontend workarounds): Disabled
Disable support for anisotropic filtering
* disableDrawBuffersIndexed (Frontend features) (http://anglebug.com/7724 ): Disabled
Disable support for OES_draw_buffers_indexed and EXT_draw_buffers_indexed
* disableProgramBinary (Frontend features) (http://anglebug.com/5007 ): Disabled
condition: IsPowerVrRogue(functions)
Disable support for GL_OES_get_program_binary
* disableProgramCaching (Frontend features) (http://anglebug.com/1423136 ): 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) (http://anglebug.com/7760 ): Disabled
Write shader source to temp directory
* dumpTranslatedShaders (Frontend features) (http://anglebug.com/8280 ): Disabled
Write translated shaders to temp directory
* emulatePixelLocalStorage (Frontend features) (http://anglebug.com/7279 ): Enabled
condition: true
Emulate ANGLE_shader_pixel_local_storage using shader images
* enableCaptureLimits (Frontend features) (http://anglebug.com/5750 ): Disabled
Set the context limits like frame capturing was enabled
* enableProgramBinaryForCapture (Frontend features) (http://anglebug.com/5658 ): Disabled
Even if FrameCapture is enabled, enable GL_OES_get_program_binary
* enableShaderSubstitution (Frontend workarounds) (http://anglebug.com/7761 ): Disabled
Check the filesystem for shaders to use instead of those provided through
glShaderSource
* enableTranslatedShaderSubstitution (Frontend workarounds) (http://anglebug.com/8280 ): Disabled
Check the filesystem for translated shaders to use instead of the shader
translator's
* forceDepthAttachmentInitOnClear (Frontend workarounds) (https://anglebug.com/7246 ): Disabled
Force depth attachment initialization on clear ops
* forceGlErrorChecking (Frontend features) ( https://issuetracker.google.com/220069903 ): Disabled
Force GL error checking (i.e. prevent applications from disabling error
checking
* forceInitShaderVariables (Frontend features): Disabled
Force-enable shader variable initialization
* forceRobustResourceInit (Frontend features) (http://anglebug.com/6041 ): Disabled
Force-enable robust resource init
* loseContextOnOutOfMemory (Frontend workarounds): Enabled
condition: true
Some users rely on a lost context notification if a GL_OUT_OF_MEMORY error
occurs
* singleThreadedTextureDecompression (Frontend workarounds): Disabled
Disables multi-threaded decompression of compressed texture formats
* RGBA4IsNotSupportedForColorRendering (OpenGL workarounds): Disabled
condition: functions->standard == STANDARD_GL_DESKTOP && isIntel
GL_RGBA4 is not color renderable
* RGBDXT1TexturesSampleZeroAlpha (OpenGL workarounds) (http://anglebug.com/3729 ): 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) (http://crbug.com/830046 ): 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 http://crbug.com/883276 ): 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) (http://crbug.com/110263 ): Enabled
condition: true
Always call useProgram after a successful link to avoid a driver bug
* alwaysUnbindFramebufferTexture2D (OpenGL workarounds) (https://anglebug.com/5536 ): 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
* bindCompleteFramebufferForTimerQueries (OpenGL workarounds) (https://crbug.com/1356053 ): Disabled
condition: isMali
Some drivers require a complete framebuffer when beginQuery for
TimeElapsed orTimestampis called.
* bindTransformFeedbackBufferBeforeBindBufferRange (OpenGL workarounds) (https://anglebug.com/5140 ): Disabled
condition: IsApple()
Bind transform feedback buffers to the generic binding point before
calling glBindBufferBase or glBindBufferRange.
* clampArrayAccess (OpenGL workarounds) (http://anglebug.com/2978 ): 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) (https://crbug.com/1042393 ): 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) (https://crbug.com/710443 ): Disabled
condition: IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 12, 6)
Clears when the clear color is all zeros or ones do not work.
* clipSrcRegionForBlitFramebuffer (OpenGL workarounds) (http://crbug.com/830046 ): Disabled
condition: IsApple() || (IsLinux() && isAMD)
Issues with blitFramebuffer when the parameters don't match the
framebuffer size.
* decodeEncodeSRGBForGenerateMipmap (OpenGL workarounds) (http://anglebug.com/4646 ): Disabled
condition: IsApple()
Decode and encode before generateMipmap for srgb format textures.
* disableBaseInstanceVertex (OpenGL workarounds) (http://anglebug.com/8172 ): Disabled
condition: IsMaliValhall(functions)
Some drivers have buggy implementations of glDraw*BaseVertex*.
* disableBlendFuncExtended (OpenGL workarounds) (http://anglebug.com/1085 ): Disabled
condition: (!isMesa && isQualcomm) || (IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 14, 0))
ARB_blend_func_extended does not pass the tests
* disableClipControl (OpenGL features) (http://crbug.com/1434317 ): 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) (https://crbug.com/1091824 ): Disabled
condition: isDualGPUMacWithNVIDIA
Disable GPU switching support (use only the low-power GPU) on older
MacBook Pros.
* disableMultisampledRenderToTexture (OpenGL workarounds) (http://anglebug.com/2894 ): Disabled
condition: isAdreno4xxOnAndroidLessThan51 || isAdreno4xxOnAndroid70 || isAdreno5xxOnAndroidLessThan70 || isAdreno5xxOnAndroid71 || isLinuxVivante || IsAndroid() || isWindowsNVIDIA
Many drivers have bugs when using GL_EXT_multisampled_render_to_texture
* disableNativeParallelCompile (OpenGL workarounds) (http://crbug.com/1094869 ): Disabled
condition: isTSANBuild && IsLinux() && isNvidia
Do not use native KHR_parallel_shader_compile even when available.
* disableRenderSnorm (OpenGL workarounds) (https://anglebug.com/8315 ): Disabled
condition: isMesa && (mesaVersion < (std::array<int, 3>{21, 3, 0}) || functions->standard == STANDARD_GL_ES)
Disable EXT_render_snorm extension.
* disableSemaphoreFd (OpenGL workarounds) (https://crbug.com/1046462 ): Disabled
condition: IsLinux() && isAMD && isMesa && mesaVersion < (std::array<int, 3>{19, 3, 5})
Disable GL_EXT_semaphore_fd extension
* disableSyncControlSupport (OpenGL workarounds) (https://crbug.com/1137851 ): 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) (https://anglebug.com/7405 ): Disabled
condition: isImagination
Imagination devices generate INVALID_ENUM when setting the texture border
color.
* disableTextureMirrorClampToEdge (OpenGL workarounds) (https://anglebug.com/8319 ): Disabled
condition: functions->standard == STANDARD_GL_ES && isMesa
Disable EXT_texture_mirror_clamp_to_edge extension.
* disableTimestampQueries (OpenGL workarounds) (https://crbug.com/811661 ): Disabled
condition: (IsLinux() && isVMWare) || (IsAndroid() && isNvidia) || (IsAndroid() && GetAndroidSdkLevel() < 27 && IsAdreno5xxOrOlder(functions)) || (!isMesa && IsMaliT8xxOrOlder(functions)) || (!isMesa && IsMaliG31OrOlder(functions))
Disable GL_EXT_disjoint_timer_query extension
* doWhileGLSLCausesGPUHang (OpenGL workarounds) (http://crbug.com/644669 ): 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) (http://anglebug.com/2046 ): Disabled
condition: !isMesa && isQualcomm
Initializing uninitialized locals caused odd behavior in a few WebGL 2
tests
* dontUseLoopsToInitializeVariables (OpenGL workarounds) (http://crbug.com/809422 ): Disabled
condition: (!isMesa && isQualcomm) || (isIntel && IsApple())
For loops used to initialize variables hit native GLSL compiler bugs
* emulateAbsIntFunction (OpenGL workarounds) (http://crbug.com/642227 ): Disabled
condition: IsApple() && isIntel
abs(i) where i is an integer returns unexpected result
* emulateAtan2Float (OpenGL workarounds) (http://crbug.com/672380 ): 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.
* emulateCopyTexImage2D (OpenGL workarounds): Disabled
condition: isApple
Replace CopyTexImage2D with TexImage2D + CopyTexSubImage2D.
* emulateCopyTexImage2DFromRenderbuffers (OpenGL workarounds) (https://anglebug.com/4674 ): Disabled
condition: IsApple() && functions->standard == STANDARD_GL_ES && !(isAMD && IsWindows())
CopyTexImage2D spuriously returns errors on iOS when copying from
renderbuffers.
* emulateImmutableCompressedTexture3D (OpenGL workarounds) (https://crbug.com/1060012 ): Disabled
condition: isQualcomm
Use non-immutable texture allocation to work around a driver bug.
* emulateIsnanFloat (OpenGL workarounds) (http://crbug.com/650547 ): Disabled
condition: isIntel && IsApple() && IsSkylake(device) && GetMacOSVersion() < OSVersion(10, 13, 2)
Using isnan() on highp float will get wrong answer
* emulateMaxVertexAttribStride (OpenGL workarounds) (http://anglebug.com/1936 ): Disabled
condition: IsLinux() && functions->standard == STANDARD_GL_DESKTOP && isAMD
Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried
* emulatePackSkipRowsAndPackSkipPixels (OpenGL workarounds) (https://anglebug.com/4849 ): Disabled
condition: IsApple()
GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL
driver.
* emulatePrimitiveRestartFixedIndex (OpenGL workarounds) (http://anglebug.com/3997 ): 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) (https://crbug.com/1300575 ): Enabled
condition: functions->standard == STANDARD_GL_DESKTOP
Emulate RGB10 support using RGB10_A2.
* ensureNonEmptyBufferIsBoundForDraw (OpenGL features) (http://crbug.com/1456243 ): Disabled
condition: IsApple() || IsAndroid()
Apple OpenGL drivers crash when drawing with a zero-sized buffer bound
using a non-zero divisor.
* explicitFragmentLocations (OpenGL workarounds) (https://anglebug.com/8308 ): 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) (http://anglebug.com/4267 ): Disabled
condition: IsApple() && isIntel
Some drivers track CopyTex{Sub}Image texture dependencies incorrectly.
Flush before glDeleteTextures in this case
* flushOnFramebufferChange (OpenGL workarounds) (http://crbug.com/1181068 ): Disabled
condition: IsApple() && Has9thGenIntelGPU(systemInfo)
Switching framebuffers without a flush can lead to crashes on Intel 9th
Generation GPU Macs.
* initFragmentOutputVariables (OpenGL workarounds) (http://crbug.com/1171371 ): 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) (http://crbug.com/927470 ): Disabled
condition: limitMaxTextureSize
Limit max 3d texture size and max array texture layers to 1024 to avoid
system hang
* limitMaxMSAASamplesTo4 (OpenGL workarounds) (http://crbug.com/797243 ): Disabled
condition: IsAndroid() || (IsApple() && (isIntel || isAMD || isNvidia))
Various rendering bugs have been observed when using higher MSAA counts
* limitWebglMaxTextureSizeTo4096 (OpenGL workarounds) (http://crbug.com/927470 ): Disabled
condition: IsAndroid() || limitMaxTextureSize
Limit webgl max texture size to 4096 to avoid frequent out-of-memory
errors
* packLastRowSeparatelyForPaddingInclusion (OpenGL workarounds) (http://anglebug.com/1512 ): 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) (http://anglebug.com/7527 ): Disabled
condition: isQualcomm
packUnorm4x8 fails on Pixel 4 if it is not passed a highp vec4.
* preAddTexelFetchOffsets (OpenGL workarounds) (http://crbug.com/642605 ): 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).
* promotePackedFormatsTo8BitPerChannel (OpenGL workarounds) (http://anglebug.com/5469 ): Disabled
condition: IsApple() && hasAMD
Packed color formats are buggy on Macs with AMD GPUs
* queryCounterBitsGeneratesErrors (OpenGL workarounds) (http://anglebug.com/3027 ): Disabled
condition: IsNexus5X(vendor, device)
Drivers generate errors when querying the number of bits in timer queries
* readPixelsUsingImplementationColorReadFormatForNorm16 (OpenGL workarounds) (http://anglebug.com/4214 ): 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) (http://anglebug.com/1637 ): Disabled
condition: isAMD || IsAndroid()
Some drivers forget about UBO bindings when using program binaries
* regenerateStructNames (OpenGL workarounds) (http://crbug.com/403957 ): Disabled
condition: IsApple()
All Mac drivers do not handle struct scopes correctly. This workaround
overwrites a structname with a unique prefix.
* removeDynamicIndexingOfSwizzledVector (OpenGL workarounds) (http://crbug.com/709351 ): 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) (https://crbug.com/705865 ): Disabled
condition: IsApple() && isIntel && GetMacOSVersion() >= OSVersion(10, 12, 4)
Reset texture base level before calling glTexImage2D to work around pixel
comparison failure.
* rewriteFloatUnaryMinusOperator (OpenGL workarounds) (http://crbug.com/308366 ): 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) (http://anglebug.com/2273 ): Disabled
condition: false
Rewrite row major matrices in shaders as column major as a driver bug
workaround
* sanitizeAMDGPURendererString (OpenGL workarounds) (http://crbug.com/1181193 ): Disabled
condition: IsLinux() && hasAMD
Strip precise kernel and DRM version information from amdgpu renderer
strings.
* scalarizeVecAndMatConstructorArgs (OpenGL workarounds) (http://crbug.com/1420130 ): Disabled
condition: isMali
Rewrite vec/mat constructors to work around driver bugs
* setPrimitiveRestartFixedIndexForDrawArrays (OpenGL workarounds) (http://anglebug.com/3997 ): 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) (http://crbug.com/1144207 ): Disabled
condition: IsApple() && IsIntel(vendor) && !IsHaswell(device)
glDrawArraysInstanced is buggy on certain new Mac Intel GPUs
* supportsFragmentShaderInterlockARB (OpenGL features) (http://anglebug.com/7279 ): 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) (http://anglebug.com/7279 ): 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) (http://anglebug.com/7279 ): 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) (http://anglebug.com/7279 ): Disabled
condition: functions->hasGLESExtension("GL_EXT_shader_framebuffer_fetch")
Backend GL context supports EXT_shader_framebuffer_fetch extension
* supportsShaderFramebufferFetchNonCoherentEXT (OpenGL features) (http://anglebug.com/7279 ): Disabled
condition: functions->hasGLESExtension("GL_EXT_shader_framebuffer_fetch_non_coherent")
Backend GL context supports EXT_shader_framebuffer_fetch_non_coherent
extension
* supportsShaderPixelLocalStorageEXT (OpenGL features) (http://anglebug.com/7279 ): Disabled
condition: functions->hasGLESExtension("GL_EXT_shader_pixel_local_storage")
Backend GL context supports EXT_shader_pixel_local_storage extension
* syncVertexArraysToDefault (OpenGL workarounds) (http://anglebug.com/5577 ): Disabled
condition: !nativegl::SupportsVertexArrayObjects(functions)
Only use the default VAO because of missing support or driver bugs
* unbindFBOBeforeSwitchingContext (OpenGL workarounds) (http://crbug.com/1181193 ): Disabled
condition: IsPowerVR(vendor)
Imagination GL drivers are buggy with context switching.
* unfoldShortCircuits (OpenGL workarounds) (http://anglebug.com/482 ): Disabled
condition: IsApple()
Mac incorrectly executes both sides of && and || expressions when they
should short-circuit.
* unpackLastRowSeparatelyForPaddingInclusion (OpenGL workarounds) (http://anglebug.com/1512 ): 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 http://crbug.com/565179 ): Disabled
condition: !isMesa && isQualcomm
Drivers returning raw sRGB values instead of linearized values when
calling glReadPixels on unsized sRGB texture formats
* uploadTextureDataInChunks (OpenGL workarounds) (http://crbug.com/1181068 ): Disabled
condition: IsApple()
Upload texture data in <120kb chunks to work around Mac driver hangs and
crashes.
* 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
[Default Toggle Names]
* lazy_clear_resource_on_first_use:https://crbug.com/dawn/145 ):
(
Clears resource to zero on first usage. This initializes the resource so
that no dirty bits from recycled memory is present in the new resource.
* use_temporary_buffer_in_texture_to_texture_copy:https://crbug.com/dawn/42 ):https://github.com/KhronosGroup/Vulkan-Docs/issues/1005 ) for more
(
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
(
details.
* vulkan_use_d32s8:https://crbug.com/dawn/286 ):
(
Vulkan mandates support of either D32_FLOAT_S8 or D24_UNORM_S8. When
available the backend will use D32S8 (toggle to on) but setting the toggle
to off will make it use the D24S8 format when possible.
* vulkan_use_s8:https://crbug.com/dawn/666 ):
(
Vulkan has a pure stencil8 format but it is not universally available.
When this toggle is on, the backend will use S8 for the stencil8 format,
otherwise it will fallback to D32S8 or D24S8.
* use_placeholder_fragment_in_vertex_only_pipeline:https://crbug.com/dawn/136 ):
(
Use a placeholder empty fragment shader in vertex only render pipeline.
This toggle must be enabled for OpenGL ES backend, the Vulkan Backend, and
serves as a workaround by default enabled on some Metal devices with Intel
GPU to ensure the depth result is correct.
* use_vulkan_zero_initialize_workgroup_memory_extension:https://crbug.com/dawn/1302 ):
(
Initialize workgroup memory with OpConstantNull on Vulkan when the Vulkan
extension VK_KHR_zero_initialize_workgroup_memory is supported.
[WebGPU Forced Toggles - enabled]
* disallow_spirv:https://crbug.com/1214923 ):
(
Disallow usage of SPIR-V completely so that only WGSL is used for shader
modules. This is useful to prevent a Chromium renderer process from
successfully sending SPIR-V code to be compiled in the GPU process.
[Default Supported Features]
* depth_clip_control
* depth32_float_stencil8
* texture_compression_BC
* texture_compression_ETC2
* texture_compression_ASTC
* indirect_first_instance
* RG11B10_ufloat_renderable
* BGRA8_unorm_storage
* dawn_internal_usages
* dawn_multi_planar_formats
* dawn_native
* implicit_device_synchronization
* surface_capabilities
* transient_attachments
Version Information
Data exported : 2023-10-20T14:57:20.897Zhttps://chromium.googlesource.com/chromium/src/+/1d05652f52a55dcf9a7905af94949f2bc3a66306/gpu/config/software_rendering_list.json https://chromium.googlesource.com/chromium/src/+/1d05652f52a55dcf9a7905af94949f2bc3a66306/gpu/config/gpu_driver_bug_list.json
Chrome version : Chrome/118.0.5993.88
Operating system : {...}
Software rendering list URL:
Driver bug list URL :
ANGLE commit id : 05f45adc1473
2D graphics backend : Skia/118 bd56a010b6941116cd1900276bf5201f9a9c73da
Command Line : /usr/bin/google-chrome --desktop-startup-id=i3/|h|bin|dmenu_run/13068-2-{...} --disable-nacl --origin-trial-disabled-features=WebGPU --restart --restart --flag-switches-begin --flag-switches-end
Driver Information
Initialization time : 330
In-process GPU : false
Passthrough Command Decoder : true
Sandboxed : true
GPU0 : VENDOR= 0x10de [Google Inc. (NVIDIA Corporation)], DEVICE=0x1430 [ANGLE (NVIDIA Corporation, Quadro M2000/PCIe/SSE2, OpenGL 4.5.0 NVIDIA 525.125.06)], DRIVER_VENDOR=Nvidia, DRIVER_VERSION=525.125.06 *ACTIVE*
Optimus : false
AMD switchable : false
GPU CUDA compute capability major version: 0
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, Quadro M2000/PCIe/SSE2, OpenGL 4.5.0 NVIDIA 525.125.06)
GL_VERSION : OpenGL ES 2.0.0 (ANGLE 2.1.21845 git hash: 05f45adc1473)
GL_EXTENSIONS : GL_AMD_performance_monitor GL_ANGLE_base_vertex_base_instance GL_ANGLE_base_vertex_base_instance_shader_builtin 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_multi_draw GL_ANGLE_polygon_mode 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_base_instance GL_EXT_blend_func_extended GL_EXT_blend_minmax 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_multi_draw_indirect 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_debug GL_KHR_parallel_shader_compile 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.21845 git hash: 05f45adc1473)
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_SESSION_TYPE : x11
GDMSESSION : goobuntu-custom
Ozone platform : x11
Direct rendering version : unknown
Reset notification strategy : 0x8252
GPU process crash count : 0
gfx::BufferFormats supported for allocation and texturing: R_8: not supported, R_16: not supported, RG_88: not supported, RG_1616: not supported, BGR_565: not supported, RGBA_4444: not supported, RGBX_8888: not supported, RGBA_8888: not supported, BGRX_8888: not supported, BGRA_1010102: not supported, RGBA_1010102: not supported, BGRA_8888: not supported, RGBA_F16: not supported, YVU_420: not supported, YUV_420_BIPLANAR: not supported, YUVA_420_TRIPLANAR: not supported, P010: not supported
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[4] bounds=[2560,0 2560x1440], workarea=[2560,0 2560x1440], scale=1, rotation=0, panel_rotation=0 external detected
Color space (all) : {primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}
Buffer format (all) : BGRA_8888
Color volume : {name:'srgb', r:[0.6400, 0.3300], g:[0.3000, 0.6000], b:[0.1500, 0.3300], w:[0.3127, 0.3290]}
SDR white level in nits : 203
HDR relative maximum luminance: 1
Bits per color component : 8
Bits per pixel : 24
Refresh Rate in Hz : 59
Info : Display[6] bounds=[0,0 1440x2560], workarea=[0,0 1440x2560], scale=1, rotation=90, panel_rotation=90 external detected
Color space (all) : {primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}
Buffer format (all) : BGRA_8888
Color volume : {name:'srgb', r:[0.6400, 0.3300], g:[0.3000, 0.6000], b:[0.1500, 0.3300], w:[0.3127, 0.3290]}
SDR white level in nits : 203
HDR relative maximum luminance: 1
Bits per color component : 8
Bits per pixel : 24
Refresh Rate in Hz : 59
Video Acceleration Information
Decoding:
Encoding:
Vulkan Information
Device Performance Information
Log Messages
[222541:222541:1020/150140.198538:ERROR:shared_image_manager.cc(220)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.
[222541:222541:1020/150140.203673:ERROR:shared_image_manager.cc(220)] : SharedImageManager::ProduceSkia: Trying to Produce a Skia representation from a non-existent mailbox.