viz: incorrect TexCoordPrecision on Kevin. Affects ChromeOS w/ARC++ |
||||||||||||
Issue descriptionI was able to reproduce the bug from Chrome 61 to 69. Can be reproduced using both ARC++ N and P. What steps will reproduce the problem? (1) Grab a Kevin chromebook (2) Launch Google Play Store (ARC++) (3) Resize the window. What is the expected result? No artifacts should appear. This bug appears also while not resizing, but resizing triggers it immediately. Problem seems to be related to the TexCoord precision in the shader. gpu info: Graphics Feature Status Canvas: Hardware accelerated Flash: Hardware accelerated Flash Stage3D: Hardware accelerated Flash Stage3D Baseline profile: Hardware accelerated Compositing: Hardware accelerated Multiple Raster Threads: Force enabled Native GpuMemoryBuffers: Software only. Hardware acceleration disabled Out-of-process Rasterization: Disabled Hardware Protected Video Decode: Unavailable Rasterization: Hardware accelerated Skia Deferred Display List: Disabled Skia Renderer: Disabled Surface Synchronization: Enabled Video Decode: Hardware accelerated Viz Service Display Compositor: Disabled 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 disable_program_caching_for_transform_feedback scalarize_vec_and_mat_constructor_args use_virtualized_gl_contexts Problems Detected Protected video decoding with swap chain is for Windows and Intel only Disabled Features: protected_video_decode 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 Use GL_INTEL_framebuffer_CMAA on ChromeOS: 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) Program binaries don't contain transform feedback varyings on Mali GPUs: 778871 Applied Workarounds: disable_program_caching_for_transform_feedback Don't expose disjoint_timer_query extensions to WebGL: 808744 Native GpuMemoryBuffers have been disabled, either via about:flags or command line. Disabled Features: native_gpu_memory_buffers Viz service display compositor is not enabled by default. Disabled Features: viz_display_compositor Skia renderer is not used by default. Disabled Features: skia_renderer Skia deferred display list is not used by default. Disabled Features: skia_deferred_display_list Version Information Data exported 2018-07-11T00:02:12.884Z Chrome version Chrome/69.0.3480.0 Operating system Linux 4.4.138-14465-g3c6c8dcf50d1 Software rendering list URL https://chromium.googlesource.com/chromium/src/+/3c4342c43a5e8e33042613038d4777cc1c9349af/gpu/config/software_rendering_list.json Driver bug list URL https://chromium.googlesource.com/chromium/src/+/3c4342c43a5e8e33042613038d4777cc1c9349af/gpu/config/gpu_driver_bug_list.json ANGLE commit id 2b06054dd41f 2D graphics backend Skia/69 ef21d7e47963c716895684f9f397e7cbcdb845ab- Command Line /opt/google/chrome/chrome --ppapi-flash-path=/opt/google/chrome/pepper/libpepflashplayer.so --ppapi-flash-version=30.0.0.134 --ui-prioritize-in-gpu-process --use-gl=egl --edge-touch-filtering --enable-webgl-image-chromium --enable-features=Pepper3DImageChromium,PointerEvent,Crostini,ExperimentalCrostiniUI --num-raster-threads=2 --gpu-sandbox-failures-fatal=yes --gpu-sandbox-start-early --passive-listeners-default=true --enable-logging --log-level=1 --use-cras --enable-wayland-server --user-data-dir=/home/chronos --system-developer-mode --login-profile=user --has-chromeos-keyboard --enable-touchview --has-internal-stylus --guest-wallpaper-large=/usr/share/chromeos-assets/wallpaper/guest_large.jpg --guest-wallpaper-small=/usr/share/chromeos-assets/wallpaper/guest_small.jpg --child-wallpaper-large=/usr/share/chromeos-assets/wallpaper/child_large.jpg --child-wallpaper-small=/usr/share/chromeos-assets/wallpaper/child_small.jpg --default-wallpaper-large=/usr/share/chromeos-assets/wallpaper/default_large.jpg --default-wallpaper-small=/usr/share/chromeos-assets/wallpaper/default_small.jpg --enable-consumer-kiosk --arc-availability=officially-supported --arc-transition-migration-required --enterprise-enrollment-initial-modulus=15 --enterprise-enrollment-modulus-limit=19 --login-manager --vmodule=*arc/*=1,*chromeos/login/*=1,auto_enrollment_controller=1,*/ui/ozone/*=1,*/ui/display/manager/chromeos/*=1,*night_light*=1,component_updater_service=1,power_button_observer=2,webui_login_view=2,lock_state_controller=2,webui_screen_locker=2,screen_locker=2 --enable-features=Pepper3DImageChromium,PointerEvent,Crostini,ExperimentalCrostiniUI Driver Information Initialization time 24 In-process GPU false Passthrough Command Decoder false Direct Composition false Supports overlays false Sandboxed true GPU0 VENDOR = 0x0000 [ARM], DEVICE= 0x0000 [Mali-T860] *ACTIVE* Optimus false AMD switchable false Driver vendor ARM Driver version 22.0.01rel0 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.r22p0-01rel0.b8001b871b73cd6cc313511af5a6187e 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_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 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_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_buffer_storage Disabled Extensions GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent Disabled WebGL Extensions EXT_disjoint_timer_query EXT_disjoint_timer_query_webgl2 Window system binding vendor ARM Window system binding version 1.4 Midgard-"r22p0-01rel0" 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_ANDROID_native_fence_sync EGL_EXT_image_flush_external 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_KHR_no_config_context 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 CAMERA_AND_CPU_READ_WRITE 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, SCANOUT_CPU_READ_WRITE BGRX_8888 GPU_READ, SCANOUT, SCANOUT_CPU_READ_WRITE BGRX_1010102 Software only RGBX_1010102 Software only BGRA_8888 GPU_READ, SCANOUT, SCANOUT_CPU_READ_WRITE RGBA_F16 Software only YVU_420 GPU_READ YUV_420_BIPLANAR SCANOUT_CAMERA_READ_WRITE UYVY_422 Software only Display(s) Information Info Display[0] bounds=[0,0 1200x800], workarea=[0,0 1200x752], scale=2, internal. Color space information {primaries:INVALID, transfer:INVALID, matrix:INVALID, range:INVALID} Bits per color component 8 Bits per pixel 24 Video Acceleration Information Decode h264 baseline up to 3840x2160 pixels Decode h264 main up to 3840x2160 pixels Decode h264 extended up to 3840x2160 pixels Decode h264 high up to 3840x2160 pixels Decode h264 high 10 up to 3840x2160 pixels Decode h264 high 4:2:2 up to 3840x2160 pixels Decode h264 high 4:4:4 predictive up to 3840x2160 pixels Decode h264 scalable baseline up to 3840x2160 pixels Decode h264 scalable high up to 3840x2160 pixels Decode h264 stereo high up to 3840x2160 pixels Decode h264 multiview high up to 3840x2160 pixels Decode vp9 profile0 up to 3840x2176 pixels Decode vp8 up to 1920x1088 pixels Encode vp8 up to 1920x1088 pixels and/or 30.000 fps Encode h264 main up to 1920x1088 pixels and/or 30.000 fps Log Messages [16103:16133:0710/163642.569629:VERBOSE1:drm_device_manager.cc(53)] : Could not initialize DRM device for /sys/devices/platform/vgem/drm/card0 [16103:16133:0710/163642.582907:ERROR:drm_gpu_display_manager.cc(209)] : There is no display with ID 0 [16103:16133:0710/163642.670973:ERROR:drm_gpu_display_manager.cc(209)] : There is no display with ID 0 [16103:16133:0710/163642.782631:ERROR:drm_gpu_display_manager.cc(209)] : There is no display with ID 0 [16103:16133:0710/163643.570436:VERBOSE1:drm_util.cc(463)] : Failed to get EDID blob for connector 48 [16103:16133:0710/163643.571258:VERBOSE1:drm_display.cc(104)] : DRM configuring: device=/sys/devices/platform/display-subsystem/drm/card1 crtc=38 connector=48 origin=0,0 size=2400x1600 [16103:16133:0710/164933.556884:VERBOSE1:drm_util.cc(463)] : Failed to get EDID blob for connector 48 [16103:16133:0710/164933.557093:WARNING:screen_manager.cc(116)] : Display controller (crtc=38) already present. [16103:16133:0710/164933.558301:VERBOSE1:drm_display.cc(104)] : DRM configuring: device=/sys/devices/platform/display-subsystem/drm/card1 crtc=38 connector=48 origin=0,0 size=0x0 [16103:16133:0710/170207.106425:VERBOSE1:drm_util.cc(463)] : Failed to get EDID blob for connector 48 [16103:16133:0710/170207.106608:WARNING:screen_manager.cc(116)] : Display controller (crtc=38) already present. [16103:16133:0710/170207.107832:VERBOSE1:drm_display.cc(104)] : DRM configuring: device=/sys/devices/platform/display-subsystem/drm/card1 crtc=38 connector=48 origin=0,0 size=2400x160
,
Jul 11
,
Jul 11
Zoom in image that shows the artfifacts:
,
Jul 23
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ecaf0b2e572b1103767d78e15262e43e51c11213 commit ecaf0b2e572b1103767d78e15262e43e51c11213 Author: Ricardo Quesada <ricardoq@google.com> Date: Mon Jul 23 23:35:20 2018 viz: use correct TexCoord precision Use correct TexCoord precision in GLRenderer::EnqueueTextureQuad. Under certain cases, specially when resizing ARC++ windows, the surface size == fullscreen size. But when EnqueueTextureSize asks for the TexCoord precision, it passes visible_quad_layer_rect which could be less than the highp_threshold_cache. So it will use a mediump qualifier instead of a highp. Probably this is only reproducible on Kevin because its mediump is only 10 bits, and I guess other GPUs use a higher precision for mediump. * Add unit test for the fix * Remove unused vars from gl_renderer_unittest.cc * Replace bottom_right() with size() before calling TexCoordPrecisionRequired, since it only cares about sizes and not positions. * Add #include <utility>, <map>, <memory> since "git cl lint" complained about it BUG= 862452 TEST=viz_unittest in Linux. Passed all tests. Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel Change-Id: I51ec129db3369c45192f4f0c69ec38f3a2ec511d Reviewed-on: https://chromium-review.googlesource.com/1132607 Commit-Queue: Ricardo Quesada <ricardoq@chromium.org> Reviewed-by: danakj <danakj@chromium.org> Cr-Commit-Position: refs/heads/master@{#577319} [modify] https://crrev.com/ecaf0b2e572b1103767d78e15262e43e51c11213/components/viz/service/display/gl_renderer.cc [modify] https://crrev.com/ecaf0b2e572b1103767d78e15262e43e51c11213/components/viz/service/display/gl_renderer.h [modify] https://crrev.com/ecaf0b2e572b1103767d78e15262e43e51c11213/components/viz/service/display/gl_renderer_unittest.cc [modify] https://crrev.com/ecaf0b2e572b1103767d78e15262e43e51c11213/components/viz/service/display/program_binding.h
,
Jul 24
,
Aug 16
Requesting m69-merge since this bug affects ARC++ in all Scarlet and Kevin devices. The bug is bigger than we originally thought. Thanks.
,
Aug 16
The bug is marked as P3 or Feature. It should not be merged as M69 is in beta. Please contact the approriate milestone owner if you have questions. Owners: amineer@(Android), kariahda@(iOS), cindyb@(ChromeOS), govind@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Aug 17
,
Aug 17
Thanks sheriffbot :) We're getting more reports from the field of this affecting many apps and developers. Requesting a merge request please!
,
Aug 17
,
Aug 17
The change looks like https://chromium-review.googlesource.com/1132607 was in before branch, what needs to be merged?
,
Aug 17
just to confirm, the CL did not land in m69. If landed in master a few days after the m69 branch was created. proof: this is m69, tag 3497 (from August 17 2018) https://chromium.git.corp.google.com/chromium/src.git/+/69.0.3497.45/components/viz/service/display/gl_renderer.cc#2360 It does not include my changes. And this is my patch: https://chromium.googlesource.com/chromium/src.git/+/ecaf0b2e572b1103767d78e15262e43e51c11213%5E%21/#F0 if you search for "ScopedReadLockGL contains the correct texture size, even when" you won't find it in m69. But you can find it master: https://chromium.git.corp.google.com/chromium/src.git/+/master/components/viz/service/display/gl_renderer.cc thanks.
,
Aug 17
(asking for 'merge-request-69' again since it was not merged in 69)
,
Aug 17
This bug requires manual review: M69 has already been promoted to the beta branch, so this requires manual review Please contact the milestone owner if you have questions. Owners: amineer@(Android), kariahda@(iOS), cindyb@(ChromeOS), govind@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Aug 17
+1 to merging into M69 if at all possible. This issue affects rendering in a top stylus app on Chromebooks, among others.
,
Aug 17
Merge approved, M69.
,
Aug 21
This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible! If all merges have been completed, please remove any remaining Merge-Approved labels from this issue. Thanks for your time! To disable nags, add the Disable-Nags label. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Aug 21
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0cffa4babb97fb0ad8b3099932fe6582365371a9 commit 0cffa4babb97fb0ad8b3099932fe6582365371a9 Author: Ricardo Quesada <ricardoq@google.com> Date: Tue Aug 21 23:25:25 2018 viz: use correct TexCoord precision Use correct TexCoord precision in GLRenderer::EnqueueTextureQuad. Under certain cases, specially when resizing ARC++ windows, the surface size == fullscreen size. But when EnqueueTextureSize asks for the TexCoord precision, it passes visible_quad_layer_rect which could be less than the highp_threshold_cache. So it will use a mediump qualifier instead of a highp. Probably this is only reproducible on Kevin because its mediump is only 10 bits, and I guess other GPUs use a higher precision for mediump. * Add unit test for the fix * Remove unused vars from gl_renderer_unittest.cc * Replace bottom_right() with size() before calling TexCoordPrecisionRequired, since it only cares about sizes and not positions. * Add #include <utility>, <map>, <memory> since "git cl lint" complained about it BUG= 862452 TEST=viz_unittest in Linux. Passed all tests. Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel Change-Id: I51ec129db3369c45192f4f0c69ec38f3a2ec511d Reviewed-on: https://chromium-review.googlesource.com/1132607 Commit-Queue: Ricardo Quesada <ricardoq@chromium.org> Reviewed-by: danakj <danakj@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#577319}(cherry picked from commit ecaf0b2e572b1103767d78e15262e43e51c11213) Reviewed-on: https://chromium-review.googlesource.com/1179343 Reviewed-by: enne <enne@chromium.org> Cr-Commit-Position: refs/branch-heads/3497@{#753} Cr-Branched-From: 271eaf50594eb818c9295dc78d364aea18c82ea8-refs/heads/master@{#576753} [modify] https://crrev.com/0cffa4babb97fb0ad8b3099932fe6582365371a9/components/viz/service/display/gl_renderer.cc [modify] https://crrev.com/0cffa4babb97fb0ad8b3099932fe6582365371a9/components/viz/service/display/gl_renderer.h [modify] https://crrev.com/0cffa4babb97fb0ad8b3099932fe6582365371a9/components/viz/service/display/gl_renderer_unittest.cc [modify] https://crrev.com/0cffa4babb97fb0ad8b3099932fe6582365371a9/components/viz/service/display/program_binding.h |
||||||||||||
►
Sign in to add a comment |
||||||||||||
Comment 1 by ricardoq@chromium.org
, Jul 11