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

Issue 746290 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Discontinuous glyph shapes in full resolution mode on S8

Reported by pekka.j....@gmail.com, Jul 19 2017

Issue description

Example URL:
https://en.m.wikipedia.org/wiki/Chromium_(web_browser)

Steps to reproduce the problem:
1. Check that WQHD+ (2960x1440) is active (Samsung Galaxy S8+)
2. Open Chrome and some site (Wikipedia etc.)
3. Apply landscape mode

What is the expected behavior?
Text is normal.

What went wrong?
Some letters appear narrower or bolder than normally. Usually problem is at right side of screen.

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? No 

Does this work in other browsers? Yes

Chrome version: 59.0.3071.125  Channel: stable
OS Version: 7
Flash Version: 

FHD+ mode (2220x1080) shows text ok. So it seems that problem is only with WQHD+. See screenshots.
 
WQHD+ (not ok).png
284 KB View Download
FHD+ (ok).png
207 KB View Download
Components: -Blink Blink>Fonts

Comment 2 by e...@chromium.org, Jul 27 2017

Labels: Needs-Feedback
Can you point out what the problem is in the screenshot please?
Take a closer look in that area I marked and compare it to full HD version. For example in a word "different": "d" is wider, "i" is thinner and two "f"'s are thicker.
area.png
299 KB View Download
Project Member

Comment 4 by sheriffbot@chromium.org, Jul 27 2017

Cc: e...@chromium.org
Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "eae@chromium.org" to the cc list and removing "Needs-Feedback" label.

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

Comment 5 by e...@chromium.org, Jul 31 2017

Cc: drott@chromium.org behdad@chromium.org
Status: Available (was: Unconfirmed)

Comment 6 by drott@chromium.org, Jul 31 2017

Owner: bunge...@chromium.org
Status: Assigned (was: Available)
Ben, can you take a look? There are some really unusual discontinuity artefacts within the glyph shapes on the right side of the screen, somehow looks like the glyph is painted from two different bitmaps, divided by a vertical or horizontal line.

Comment 7 by drott@chromium.org, Jul 31 2017

Summary: Discontinuous glyph shapes in full resolution mode on S8 (was: Text rendering problem, landscape and WQHD+ (S8+))
I did not know this but the S8 apparently runs in different resolution modes, compare https://www.androidcentral.com/understanding-galaxy-s8s-display-resolution-options - perhaps this interferes with how glyph bitmap sizes are computed?

Comment 8 by behdad@chromium.org, Jul 31 2017

Really weird.  I wonder if this has to do with the Android GL text renderer more than with Skia... Or does Chrome not use that on Android?
Cc: bsalomon@chromium.org
Cc: jvanverth@chromium.org brianosman@chromium.org
Perhaps this is a shader precision issue? I thought we always used highp for texture coords now, though.

Comment 11 Deleted

Comment 12 by drott@chromium.org, Jul 31 2017

> I wonder if this has to do with the Android GL text renderer more than with Skia... Or does Chrome not use that on Android?

Re #8, I don't think it does, it's all done internally through Skia and then composited by Chrome itself as well. It still may be an issue inside Chrome in font rasterization through GL/shaders.
Cc: -bsalomon@chromium.org bunge...@chromium.org
Components: -Blink>Fonts Internals>Skia
Owner: bsalomon@chromium.org
I think I'm going to have to get a Galaxy S8 to fix this bug. There are different models with different GPUs. Could you post the contents of the chrome://gpu page from your S8 so I can be sure to get the right one?
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: Disabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Software only, hardware acceleration unavailable
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
clear_uniforms_before_first_program_use
disable_framebuffer_cmaa
max_texture_size_limit_4096
scalarize_vec_and_mat_constructor_args
use_client_side_arrays_for_stream_buffers
use_virtualized_gl_contexts
Problems Detected
MediaCodec is still too buggy to use for encoding (b/11536167): 615108
Disabled Features: accelerated_video_encode
ARM driver doesn't like uploading lots of buffer data constantly
Applied Workarounds: use_client_side_arrays_for_stream_buffers
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
Limit max texure size to 4096 on all of Android
Applied Workarounds: max_texture_size_limit_4096
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
The Mali-Gxx driver does not guarantee flush ordering: 678508
Applied Workarounds: use_virtualized_gl_contexts
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	8/1/2017, 8:11:09 PM
Chrome version	Chrome/59.0.3071.125
Operating system	Android 7.0
Software rendering list version	13.8
Driver bug list version	10.102
ANGLE commit id	a9042d3c1952
2D graphics backend	Skia/59 ef6f9c65527412ec4057ea0551f2e051beb94d32
Command Line Args	--use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-pinch --enable-viewport --validate-input-event-stream --enable-longpress-drag-selection --touch-selection-strategy=direction --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	236
In-process GPU	false
Passthrough Command Decoder	false
Supports overlays	false
Sandboxed	false
GPU0	VENDOR = 0x0000 [ARM], DEVICE= 0x0000 [Mali-G71]
Optimus	false
Optimus	false
AMD switchable	false
Driver vendor	
Driver version	1.
Driver date	
Pixel shader version	3.20
Vertex shader version	3.20
Max. MSAA samples	16
Machine model name	SM-G955F
Machine model version	
GL_VENDOR	ARM
GL_RENDERER	Mali-G71
GL_VERSION	OpenGL ES 3.2 v1.r3p0-00rel0.52a2c5ce14e045eb8b9074c171442f91
GL_EXTENSIONS	GL_EXT_debug_marker 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_shader_non_constant_global_initializers 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_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_protected_textures
Disabled Extensions	GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Window system binding vendor	
Window system binding version	
Window system binding extensions	
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
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only

Thanks, I should have a repro device on Monday.
I have a device and have a repro.
Project Member

Comment 18 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://skia.googlesource.com/skia/+/95db9b3cb1286e2c88e12035fd96fd047ea3582d

commit 95db9b3cb1286e2c88e12035fd96fd047ea3582d
Author: Brian Salomon <bsalomon@google.com>
Date: Mon Aug 07 19:51:30 2017

Make bmp text position attribute be highp

Bug:  chromium:746290 
Change-Id: I90968ab3633fb50a13087500a7df7fb8adbf2af8
Reviewed-on: https://skia-review.googlesource.com/31423
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>

[modify] https://crrev.com/95db9b3cb1286e2c88e12035fd96fd047ea3582d/src/gpu/effects/GrBitmapTextGeoProc.cpp

Nice! Thanks for the fix.
Status: Fixed (was: Assigned)

Sign in to add a comment