New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 862452 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 24
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

viz: incorrect TexCoordPrecision on Kevin. Affects ChromeOS w/ARC++

Project Member Reported by ricardoq@chromium.org, Jul 11

Issue description

I 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
 
Screenshot 2018-06-21 at 3.12.27 PM.png
40.9 KB View Download
for reference, the ARC++ bug is b/110066209 which has attached video that shows in detail the bug. Couldn't attach this video here, since there is a size limit.
Cc: ricardoq@chromium.org
Zoom in image that shows the artfifacts:

Screenshot 2018-07-11 at 11.48.53 AM.png
215 KB View Download
Project Member

Comment 4 by bugdroid1@chromium.org, 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

Owner: ricardoq@chromium.org
Status: Fixed (was: Untriaged)
Cc: shihuis@chromium.org
Labels: Merge-Request-69
Requesting m69-merge since this bug affects ARC++ in all Scarlet and Kevin devices. The bug is bigger than we originally thought. Thanks.

Project Member

Comment 7 by sheriffbot@chromium.org, Aug 16

Labels: -Merge-Request-69 Hotlist-Merge-Reject Merge-Reject-69
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
Labels: -Pri-3 Pri-2
Thanks sheriffbot :)

We're getting more reports from the field of this affecting many apps and developers. Requesting a merge request please! 
Cc: tbuck...@chromium.org
The change looks like https://chromium-review.googlesource.com/1132607 was in before branch, what needs to be merged? 
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.

Labels: -Merge-Reject-69 Merge-Request-69
(asking for 'merge-request-69' again since it was not merged in 69)
Project Member

Comment 14 by sheriffbot@chromium.org, Aug 17

Labels: -Merge-Request-69 Merge-Review-69 Hotlist-Merge-Review
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
+1 to merging into M69 if at all possible. This issue affects rendering in a top stylus app on Chromebooks, among others.
Labels: -Merge-Review-69 Merge-Approved-69
Merge approved, M69. 
Project Member

Comment 17 by sheriffbot@chromium.org, Aug 21

Cc: cindyb@chromium.org
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
Project Member

Comment 18 by bugdroid1@chromium.org, Aug 21

Labels: -merge-approved-69 merge-merged-3497
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