New issue
Advanced search Search tips

Issue 769222 link

Starred by 1 user

Issue metadata

Status: Archived
Owner: ----
Closed: Oct 22
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Corruptions on evdi atomic gpu driver.

Reported by lukasz.s...@displaylink.com, Sep 27 2017

Issue description

Chrome Version: <From about:version: Google Chrome 63.0.3223.0 (Developer Build) (32 - bit)>
Chrome OS Version: <From about:version: Platform 9974.0.2017_09_26 developer-build kevin>
Chrome OS Platform: <kevin, Samsung Chromebook Plus>


Steps To Reproduce:
(1) Build ChromiumOS with atomic evdi driver(Patcheset 8):  Review can be found here:
https://chromium-review.googlesource.com/?polygerrit=0#/c/chromiumos/third_party/kernel/+/469710/
(2) Apply patch from attachments that is dropping use of deprecated drm_framebuffer reservation callback: 0001-CrBug-Rendering-corruptions-after-removing-reservati.patch
(3) Build an image with modified atomic evdi driver and load it onto kevin chromebook. 
(4) Attach DisplayLink USB3 device. Move/shake quickly chrome browser window on USB3 Display.

Expected Result:
Window is not corrupted.

Actual Result:
You can see window corruptions when moving window.

How frequently does this problem reproduce? 
Always

What is the impact to the user, and is there a workaround? If so, what is
it?
No impact. Corruptions disappear when stopped moving window.
Movie attached.


The bug is related to recent changes in evdi drm driver. See. Cr-469710:
https://chromium-review.googlesource.com/?polygerrit=0#/c/chromiumos/third_party/kernel/+/469710/

We had conversation with Dominik Behr on XDC2017 about reservation objects in drm drivers. That functionality should be abandoned in favor of explicit in/out drm fences.
He claims that in ChromeOS there is no need for additional synchronization between rendering gpu and prime output slave device. 

Apparently this is not working for atomic version of evdi driver as we still see corruptions on USB display.




------------------------------------------------------------------------------------

Full contents of the about:gpu in the attachments

Note: To properly save this page, select the "Webpage, Complete" option in the Save File dialog. 
Graphics Feature Status
Canvas: Hardware accelerated
CheckerImaging: Enabled
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Disabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Panel Fitting: Unavailable
Rasterization: Software only, hardware acceleration unavailable
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
clear_uniforms_before_first_program_use
disable_discard_framebuffer
disable_framebuffer_cmaa
disable_non_empty_post_sub_buffers_for_onscreen_surfaces
scalarize_vec_and_mat_constructor_args
use_virtualized_gl_contexts
Problems Detected
Chrome OS panel fitting is only supported for Intel IVB and SNB Graphics Controllers
Disabled Features: panel_fitting
GPU rasterization on CrOS is blacklisted on non-Intel GPUs for now.: 684094
Disabled Features: gpu_rasterization
The Mali-Txxx driver does not guarantee flush ordering: 154715, 10068, 269829, 294779, 285292
Applied Workarounds: use_virtualized_gl_contexts
Framebuffer discarding causes jumpy scrolling on Mali drivers: 301988
Applied Workarounds: disable_discard_framebuffer
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
The Mali-Txxx driver hangs when reading from currently displayed buffer: 457511
Applied Workarounds: disable_non_empty_post_sub_buffers_for_onscreen_surfaces
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Applied Workarounds: disable(GL_KHR_blend_equation_advanced), disable(GL_KHR_blend_equation_advanced_coherent)
Raster is using a single thread.
Disabled Features: multiple_raster_threads
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Version Information
Data exported  9/27/2017, 2:01:31 AM   
Chrome version  Chrome/63.0.3223.0   
Operating system  Linux 4.4.86   
Software rendering list version  13.12   
Driver bug list version  10.31   
ANGLE commit id  1f9d68437c9d   
2D graphics backend  Skia/63 0   
Command Line  /opt/google/chrome/chrome --enable-logging --enable-drm-atomic --enable-hardware-overlays=single-fullscreen,single-on-top --edge-touch-filtering --gpu-sandbox-failures-fatal=yes --gpu-sandbox-start-early --num-raster-threads=1 --ui-prioritize-in-gpu-process --use-cras --use-gl=egl --user-data-dir=/home/chronos --enable-webgl-image-chromium --enable-touchview --arc-availability=officially-supported --has-chromeos-keyboard --login-profile=user --system-developer-mode --bwsi --homepage=chrome://newtab/ --incognito --log-level=1 --login-user=$guest --login-user=$guest --login-profile=f3dbfd6aab87cd03a2852e97a4f99030bdc8669f --vmodule=tablet_power_button_controller=1,*chromeos/login/*=1,auto_enrollment_controller=1,*plugin*=2,*zygote*=1,*/ui/ozone/*=1,*/ui/display/manager/chromeos/*=1,power_button_observer=2,webui_login_view=2,lock_state_controller=2,webui_screen_locker=2,screen_locker=2 --disable-sync --disable-extensions   

Driver Information
Initialization time  23   
In-process GPU  false   
Passthrough Command Decoder  false   
Supports overlays  false   
Sandboxed  true   
GPU0  VENDOR = 0x0000, DEVICE= 0x0000   
Optimus  false   
Optimus  false   
AMD switchable  false   
Driver vendor  ES   
Driver version  3.1   
Driver date    
Pixel shader version  3.10   
Vertex shader version  3.10   
Max. MSAA samples  16   
Machine model name    
Machine model version    
GL_VENDOR  ARM   
GL_RENDERER  Mali-T860   
GL_VERSION  OpenGL ES 3.1 v1.r12p0-04rel0.f9a400de11476aed93d6a32d4905114c   
GL_EXTENSIONS  GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture   
Disabled Extensions  GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent   
Window system binding vendor  ARM   
Window system binding version  1.4 Midgard-"r12p0-04rel0"   
Window system binding extensions  EGL_KHR_partial_update EGL_EXT_swap_buffers_with_damage EGL_KHR_swap_buffers_with_damage EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_image_pixmap EGL_EXT_image_flush_external EGL_ANDROID_native_fence_sync EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_ARM_pixmap_multisample_discard EGL_ARM_implicit_external_sync EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_create_context_robustness   
Direct rendering  Yes   
Reset notification strategy  0x8252   
GPU process crash count  0   

Compositor Information
Tile Update Mode  One-copy   
Partial Raster  Enabled   

GpuMemoryBuffers Status
ATC  Software only   
ATCIA  Software only   
DXT1  Software only   
DXT5  Software only   
ETC1  Software only   
R_8  Software only   
R_16  Software only   
RG_88  Software only   
BGR_565  GPU_READ   
RGBA_4444  Software only   
RGBX_8888  GPU_READ, SCANOUT, SCANOUT_CPU_READ_WRITE   
RGBA_8888  GPU_READ, SCANOUT_CPU_READ_WRITE   
BGRX_8888  GPU_READ, SCANOUT, SCANOUT_CPU_READ_WRITE   
BGRA_8888  GPU_READ, SCANOUT_CPU_READ_WRITE   
RGBA_F16  Software only   
YVU_420  GPU_READ   
YUV_420_BIPLANAR  Software only   
UYVY_422  Software only   

Log Messages
[3360:3404:0927/000700.748483:VERBOSE1:drm_device_manager.cc(53)] : Could not initialize DRM device for /sys/devices/platform/vgem/drm/card0 
[3360:3404:0927/000701.749674:VERBOSE1:drm_util.cc(371)] : Failed to get EDID blob for connector 37 
[3360:3404:0927/000701.750805:VERBOSE1:drm_display.cc(102)] : DRM configuring: device=/sys/devices/platform/display-subsystem/drm/card1 crtc=33 connector=37 origin=0,0 size=2400x1600 
[3360:3404:0927/000702.029040:VERBOSE1:drm_display.cc(102)] : DRM configuring: device=/sys/devices/platform/evdi.0/drm/card2 crtc=29 connector=31 origin=0,1660 size=3840x2160 
[3360:3360:0927/000702.637573:ERROR:gl_image_native_pixmap.cc(240)] : Failed to flush rendering 
[3360:3360:0927/000702.789045:ERROR:gl_image_native_pixmap.cc(240)] : Failed to flush rendering 
[3360:3360:0927/000703.122199:ERROR:gl_image_native_pixmap.cc(240)] : Failed to flush rendering 
 
0001-CrBug-Rendering-corruptions-after-removing-reservati.patch
3.7 KB Download
evdi_corruption.mp4
3.6 MB View Download
gpu.mhtml
924 KB Download
About Version.mhtml
10.6 KB Download
Components: OS>Kernel>Graphics
Project Member

Comment 2 by sheriffbot@chromium.org, Oct 22

Status: Archived (was: Unconfirmed)
Issue has not been modified or commented on in the last 365 days, please re-open or file a new bug if this is still an issue.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Sign in to add a comment