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

Chrome is not rendering some PNG images correctly

Reported by rodgersn...@gmail.com, Jul 26

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36

Example URL:
https://techzim.co.zw

Steps to reproduce the problem:
1. Visit https://techzim.co.zw
2. Observe the "techzim" logo image in the top left corner at time of reporting

What is the expected behavior?
Png images should display without a green border. The same behavior was observed on other sites which are not linked because they are under development.

What went wrong?
There is a png image that displays with a green border. I have attached a screenshot of the bug, and the original png image that is not rendering correctly

Does it occur on multiple sites: Yes

Is it a problem with a plugin? N/A 

Did this work before? Yes Don't know my last version

Does this work in other browsers? Yes

Chrome version: 68.0.3440.75  Channel: stable
OS Version: 
Flash Version:
 
Screenshot 2018-07-26 10:29:11.png
16.1 KB View Download
cropped-tz-logo-150x37.png
2.2 KB View Download
I noticed this same issue when upgrading to Chrome 68 on Linux. Attached is another example with the fb messenger reaction icons.

In case it is relevant, I'm using Ubuntu 16.04 with proprietary NVIDIA driver 384.130.
fbmessenger.png
765 bytes View Download
Labels: Needs-Triage-M68 Needs-Bisect
Cc: susan.boorgula@chromium.org
Components: UI>Browser
Labels: -Type-Bug -Pri-2 -Needs-Bisect ReleaseBlock-Stable Triaged-ET Target-70 FoundIn-70 RegressedIn-68 FoundIn-68 M-68 FoundIn-69 Target-69 Target-68 Pri-1 Type-Bug-Regression
Owner: brianosman@google.com
Status: Assigned (was: Unconfirmed)
rodgersnigel@ Thanks for the issue.

Able to reproduce this issue on Ubuntu 16.04 on the latest Stable 68.0.3440.75 and Dev 69.0.3497.12 as per the original comment.
Note: Issue is not reproducible on Windows 10 and Mac OS 10.13.3.

This issue looks similar to  issue 862908  and the bisect information is also same.

Bisect information:
===================
Good build :68.0.3402.0
Bad build : 68.0.3403.0

Hence assigning the issue to brianosman@ - owner of the  issue 862908  and requesting to look into the issue.

Adding ReleaseBlock-Stable for M-68 as this is a recent regression. Please feel free to remove if it is not applicable.

Thanks..
Cc: mtkl...@google.com
Project Member

Comment 5 by bugdroid1@chromium.org, Jul 27

The following revision refers to this bug:
  https://skia.googlesource.com/skcms/+/23e7777f421d11992e8245771641141aa273556b

commit 23e7777f421d11992e8245771641141aa273556b
Author: Mike Klein <mtklein@google.com>
Date: Fri Jul 27 14:42:26 2018

clamp before premul

When alpha is <1, it's possible to fit r,g,b >1 into premul unorms,
and that subverts the expectations users who consume the output of
skcms_Transform().

When working with unorm pixels, downstream consumers will assume the
r,g,b values are also within [0,1], i.e. are less than the alpha
channel.  Put another way, they assume the colors are in gamut.

So clamp earlier, before premul.  (The reordering has no effect on
force_opaque or swap_rb.)

Bug:  chromium:867813 
Bug:  chromium:862908 
Change-Id: I553b42df06482a4e3cd3a9377c2adddb8ff3d1bc
Reviewed-on: https://skia-review.googlesource.com/143710
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>

[modify] https://crrev.com/23e7777f421d11992e8245771641141aa273556b/skcms.cc

Cc: abdulsyed@chromium.org
This is the same as  issue 862908 , and the above fix is going to roll into chromium ToT soon. For this to manifest, it requires:

1) SW rasterization (that's why we're only seeing it on Linux).
2) A color profile installed with a gamut that's smaller than sRGB. This is very rare. Most users have sRGB profiles, and most users that don't have sRGB have larger gamut profiles (like AdobeRGB).

Given this, there is a workaround, which happens to be the same workaround we're currently advising for  issue 847024 :

  Go to chrome://flags#force-color-profile, and set it to sRGB.

Given these factors, I'm not sure if we should plan to cherry-pick this into m68?
Labels: M-69
Components: -UI>Browser -Blink Internals>Skia
Project Member

Comment 9 by bugdroid1@chromium.org, Jul 30

The following revision refers to this bug:
  https://skia.googlesource.com/skcms/+/6b7ef53d3298a7ab7e3410ba3ffe5623539f025e

commit 6b7ef53d3298a7ab7e3410ba3ffe5623539f025e
Author: Mike Klein <mtklein@google.com>
Date: Mon Jul 30 13:04:23 2018

add unit test for clamp-before-premul

Bug:  chromium:867813 
Bug:  chromium:862908 

Change-Id: I79a82b6637c8a707844642b9bce4444bb85828b5
Reviewed-on: https://skia-review.googlesource.com/144295
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>

[modify] https://crrev.com/6b7ef53d3298a7ab7e3410ba3ffe5623539f025e/skcms.cc
[modify] https://crrev.com/6b7ef53d3298a7ab7e3410ba3ffe5623539f025e/tests.c

Cc: manoranj...@chromium.org ajha@chromium.org krajshree@chromium.org swarnasree.mukkala@chromium.org brianosman@google.com
 Issue 862908  has been merged into this issue.
Labels: Merge-Request-69
https://skia-review.googlesource.com/c/skia/+/143713 should port this back to M69 if needed.
Project Member

Comment 12 by sheriffbot@chromium.org, Aug 1

Labels: -Merge-Request-69 Hotlist-Merge-Approved Merge-Approved-69
Your change meets the bar and is auto-approved for M69. Please go ahead and merge the CL to branch 3497 manually. Please contact 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
Seems like it is already merged to M69 at #13. Is there anything pending for M69? If not, pls remove "Merge-Approved-69" label. Thank you.
Labels: -Merge-Approved-69
Owner: brianosman@chromium.org
I'm seeing this in Windows after updating from 67 to 68.  The Google logo shows a green border on one screen but not if I move the window to my other screen.
logo.png
11.8 KB View Download
Cc: viswa.karala@chromium.org
 Issue 870278  has been merged into this issue.
Windows 10 additional info: I am able to see this bug in one Windows account, on one screen only, but not in another Windows account.

There may be some video driver/settings involved with this.  I will test it more, then try the version from Download Chrome Beta, and let you know if anything changes.
The bug appeared in my other account as soon as I wrote the previous comment.  Maybe that was just a cache issue.

Found no improvement in 69.0.3497.23.  The current beta is still bugged.
I figured out how to install the dev channel Chrome.  Version 70.0.3510.2 is fixed for me in Windows 10.
Cc: vamshi.kommuri@chromium.org
 Issue 870214  has been merged into this issue.
 Issue 870598  has been merged into this issue.
brianosman@ / mtklein@ - do you know how widespread is this issue? How many users or types of machines this is impacting?
We think it's not that widespread. It requires:

- Software rasterization (so Linux, or a blacklisted GPU)
- A color profile that doesn't fully enclose sRGB. Most profiles are sRGB,
and most non-sRGB profiles are strictly larger than sRGB.

Given those conditions, any image with partial transparency can potentially
exhibit the bug.

That said, we also think the fix is very safe if we want to cherry pick to
68.
Great thanks - which CLs will be required? Would it just be the CL in #13?
It'd be https://skia-review.googlesource.com/c/skia/+/143712, the same change as #13 taking into account some code moving around between M68 and M69.
Great thanks! Is this impacting Linux and Windows both?
YES
Yes, it's not at all platform specific.
How safe is this fix overall? How safe is the merge to M68? Seems like this has been in Canary/Beta now for a while. 
It's very safe - I'd feel fine about merging to M68. And to clarify the platform issue: The code is not platform specific at all, but Windows and Mac have GPU rasterization enabled by default, unless the GPU/drivers are disabled for a specific reason (some bug that we can't work around, etc...). The bug is only in the CPU code, so users on Linux (where GPU is off by default) are more likely to see it, but there are plenty of Windows users that can be affected *if* they don't have GPU enabled.
Labels: Merge-Request-68
Labels: -Merge-Request-68 Merge-Approved-68
Approving merge for M68. Branch:3440
Project Member

Comment 35 by bugdroid1@chromium.org, Aug 6

Labels: merge-merged-m68
The following revision refers to this bug:
  https://skia.googlesource.com/skia/+/1e419fead7ff3b5247102b29b982b6472a60cd4d

commit 1e419fead7ff3b5247102b29b982b6472a60cd4d
Author: Mike Klein <mtklein@google.com>
Date: Mon Aug 06 23:38:59 2018

backport skia-review.googlesource.com/143710 to M68 branch

This is https://skia-review.googlesource.com/c/skcms/+/143710
qualitatively backported to the M68 branch.

Bug:  chromium:867813 

Change-Id: Id313cd9cd290c55dfe154f33b6031b21c38a370f
Reviewed-on: https://skia-review.googlesource.com/143712
Reviewed-by: Brian Osman <brianosman@google.com>

[modify] https://crrev.com/1e419fead7ff3b5247102b29b982b6472a60cd4d/third_party/skcms/src/Transform.c

 Issue 871057  has been merged into this issue.
 Issue 871621  has been merged into this issue.
Labels: -Merge-Approved-68
M69 Stable promotion is coming VERY soon. Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and request a merge into the release branch ASAP. Thank you.
This should be fixed in all (?) branches now. #5 was the ToT fix, which will be in m70. #13 merged the fix to m69, and #35 merged to m68. Do we just need to update labels?
Pls mark bug as fixed if nothing else is pending. Thank you.
Status: Fixed (was: Assigned)
Cc: vasanthakumar@chromium.org
 Issue 873998  has been merged into this issue.
 Issue 874842  has been merged into this issue.
This issue, or a very similar one, is happening on Chrome 70, you can see it live here in the menu icons at the left of the form:  https://www.trabber.us/

I include an attachment in which you can see the green border which is not in the original image.

Chrome Version 70.0.3538.67 (Official Build) (64-bit) on Ubuntu 18.04.
green border.png
6.5 KB View Download
ofrias@, Thank you for the information. I've tried to reproduce this using the color profile that another user submitted (and previously caused this issue), but without any luck. Can you check to see if you have a color profile installed for your monitor? There are instructions on locating the file under the section 'For Linux Users' in this document: https://docs.google.com/document/d/1jMokB_OBkZVELu22li8vnHxAUoL1eGnLedP-1Gttv40/view#heading=h.2to15xum98j3

You may be able to find the color profile in one of the following locations:
/usr/share/color/icc/
/usr/local/share/color/icc
~/.local/share/icc/

One of those directories is likely to contain several files with a .icc extension. If you can find such a file (it may be named similar to your monitor's brand, or with something like 'edid-<long string of letters and numbers>.icc'. Getting the file used by your monitor will make tracking this down much easier.

Regardless, with the profile enabled (so the bug repros), can you navigate to chrome://gpu, and copy/paste the section under 'Display(s) Information'. That has some of the color profile information, and may be helpful.
pt- Brasil

Sim, bug na versão 70.0.3538.67.

Eu uso o Linux 16.04, foto em anexo.

Solucionei com https://support.google.com/chrome/forum/AAAAP1KN0B0yD9L8W9zF4g/?hl=pt-BR .

Será que isso vai ser corrigido sem ter que mudar essa configuração?

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

Inglês - Google a translator


Yes, bug in version 70.0.3538.67.

I use Linux 16.04, attached photo.

I've solved it with https://support.google.com/chrome/forum/AAAAP1KN0B0yD9L8W9zF4g/?hl=en.

Will this be fixed without having to change this setting?
Captura de tela de 2018-10-17 11-13-05.png
168 KB View Download
imagem-ubuntu-16.04.jpg
48.2 KB View Download
Thanks for your help.

As you suggested, I have found the profile that my display (Asus BE24A) is using, called "BE24A", under .local/share/icc/

I attach it.

More info:  

If I directly open the PNG in Chrome, not inside the page, the bug is not present, although in this case the background is black instead of white, and maybe this is the reason:  https://www.trabber.es/images/home/icoshome.png

If I go to chrome://flags#force-color-profile, and set it to sRGB, the bug dissapears.
edid-138e95cc9f420b211c35fa8842bda4e4.icc
1.5 KB Download
Oops, I forgot to copy chrome://gpu contents:

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: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Out-of-process Rasterization: Disabled
Hardware Protected Video Decode: Unavailable
Rasterization: Software only. Hardware acceleration disabled
Skia Deferred Display List: Disabled
Skia Renderer: Disabled
Surface Synchronization: Enabled
Video Decode: Unavailable
Viz Service Display Compositor: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
adjust_src_dst_region_for_blitframebuffer
clear_uniforms_before_first_program_use
count_all_in_varyings_packing
decode_encode_srgb_for_generatemipmap
disable_framebuffer_cmaa
disable_post_sub_buffers_for_onscreen_surfaces
msaa_is_slow
scalarize_vec_and_mat_constructor_args
disabled_extension_GL_ARB_timer_query
disabled_extension_GL_EXT_timer_query
disabled_extension_GL_KHR_blend_equation_advanced
disabled_extension_GL_KHR_blend_equation_advanced_coherent
Problems Detected
Accelerated video decode is unavailable on Linux: 137247
Disabled Features: accelerated_video_decode
Protected video decoding with swap chain is for Windows and Intel only
Disabled Features: protected_video_decode
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Mesa drivers in Linux handle varyings without static use incorrectly: 333885
Applied Workarounds: count_all_in_varyings_packing
Disable partial swaps on Mesa drivers (detected with GL_RENDERER): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
On Intel GPUs MSAA performance is not acceptable for GPU rasterization: 527565
Applied Workarounds: msaa_is_slow
Timer queries crash on Intel GPUs on Linux: 540543, 576991
Applied Workarounds: disable(GL_ARB_timer_query), disable(GL_EXT_timer_query)
Use GL_INTEL_framebuffer_CMAA on ChromeOS: 535198
Applied Workarounds: disable_framebuffer_cmaa
Disable partial swaps on Mesa drivers (detected with GL_VERSION): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces
Decode and encode before generateMipmap for srgb format textures on os except macosx: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap
adjust src/dst region if blitting pixels outside read framebuffer on Linux Intel: 664740
Applied Workarounds: adjust_src_dst_region_for_blitframebuffer
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)
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-10-18T09:40:09.359Z
Chrome version	Chrome/70.0.3538.67
Operating system	Linux 4.15.0-36-generic
Software rendering list URL	https://chromium.googlesource.com/chromium/src/+/9ab0cfab84ded083718d3a4ff830726efd38869f/gpu/config/software_rendering_list.json
Driver bug list URL	https://chromium.googlesource.com/chromium/src/+/9ab0cfab84ded083718d3a4ff830726efd38869f/gpu/config/gpu_driver_bug_list.json
ANGLE commit id	05c729f336ef
2D graphics backend	Skia/70 193565807f7fd2a2c14e21b44c545cc03ebe134f-
Command Line	/usr/bin/google-chrome-stable --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	24
In-process GPU	false
Passthrough Command Decoder	false
Sandboxed	true
GPU0	VENDOR = 0x8086 [Intel Open Source Technology Center], DEVICE= 0x3e92 [Mesa DRI Intel(R) HD Graphics (Coffeelake 3x8 GT2) ] *ACTIVE*
Optimus	false
AMD switchable	false
Driver vendor	Mesa
Driver version	18.0.5
Driver date	
GPU CUDA compute capability major version	0
Pixel shader version	1.30
Vertex shader version	1.30
Max. MSAA samples	16
Machine model name	
Machine model version	
GL_VENDOR	Intel Open Source Technology Center
GL_RENDERER	Mesa DRI Intel(R) HD Graphics (Coffeelake 3x8 GT2)
GL_VERSION	3.0 Mesa 18.0.5
GL_EXTENSIONS	GL_3DFX_texture_compression_FXT1 GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_AMD_shader_trinary_minmax GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_object_purgeable GL_APPLE_packed_pixels GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control GL_ARB_color_buffer_float GL_ARB_compressed_texture_pixel_storage GL_ARB_compute_shader GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_cull_distance GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_derivative_control GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_query_buffer_object GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_ballot GL_ARB_shader_bit_encoding GL_ARB_shader_clock GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_stencil_export GL_ARB_shader_storage_buffer_object GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_texture_barrier GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transform_feedback_overflow_query GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_window_pos GL_ATI_blend_equation_separate GL_ATI_draw_buffers GL_ATI_separate_stencil GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_copy_texture GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_gpu_program_parameters GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_polygon_offset GL_EXT_polygon_offset_clamp GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shader_integer_mix GL_EXT_shader_samples_identical GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texture GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_IBM_multimode_draw_arrays GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_INGR_blend_func_separate GL_INTEL_performance_query GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_sliced_3d GL_MESA_pack_invert GL_MESA_shader_integer_functions GL_MESA_texture_signed_rgba GL_MESA_window_pos GL_NV_blend_square GL_NV_conditional_render GL_NV_depth_clamp GL_NV_light_max_exponent GL_NV_packed_depth_stencil GL_NV_primitive_restart GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_env_combine4 GL_NV_texture_rectangle GL_OES_EGL_image GL_OES_read_format GL_S3_s3tc GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays
Disabled Extensions	GL_ARB_timer_query GL_EXT_timer_query GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Disabled WebGL Extensions	
Window system binding vendor	SGI
Window system binding version	1.4
Window system binding extensions	GLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_create_context_robustness GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_multisample GLX_EXT_create_context_es_profile GLX_EXT_create_context_es2_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_libglvnd GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_OML_swap_method GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_INTEL_swap_event
Window manager	GNOME Shell
XDG_CURRENT_DESKTOP	ubuntu:GNOME
GDMSESSION	ubuntu
Compositing manager	Yes
Direct rendering	Yes
Reset notification strategy	0x8261
GPU process crash count	0
System visual ID	33
RGBA visual ID	308
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	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRX_1010102	Software only
RGBX_1010102	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Display(s) Information
Info	Display[1241976709638723] bounds=[0,0 1920x1200], workarea=[0,0 1920x1152], scale=1, external.
Color space information	{primaries_d50_referred: [[0.6511, 0.3357], [0.3456, 0.6050], [0.1495, 0.0590]], transfer:0.0000*x + 0.0000 if x < 0.0000 else (1.0000*x + 0.0000)**2.2000 + 0.0000, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Video Acceleration Information


Owner: mtkl...@google.com
Status: Assigned (was: Fixed)
I can reproduce this on Mac (Version 70.0.3538.67) by forcing software rasterization, in slightly different ways with both the new BE24A and older LV1911 profiles.  I'll see if I can figure out what's up.
Project Member

Comment 51 by bugdroid1@chromium.org, Oct 23

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

commit fd731e46846c0af350f3cefbfd8c8fecf7ee29ae
Author: Mike Klein <mtklein@google.com>
Date: Tue Oct 23 17:57:18 2018

add a few more ways to convert images to imgcvt

Interestingly, the draw ends up a little different than the
writePixels() and skcms paths.  Maybe just premul/unpremul?

Bug:  chromium:867813 
Change-Id: I8bf645c8354cbeb9a07512add258e8defc755366
Reviewed-on: https://skia-review.googlesource.com/c/164621
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>

[modify] https://crrev.com/fd731e46846c0af350f3cefbfd8c8fecf7ee29ae/tools/imgcvt.cpp

Good news is, it looks like this is fixed...  I'm not able to reproduce this with a build at head on m72.  Going to start bisecting to see what fixed this and if that's able to be backported to 70 and/or 71.
M71 also looks okay.
A bisect found https://skia-review.googlesource.com/c/skia/+/152200, which is kind of obvious in retrospect.  I've created a cherry-pick for M70 here: https://skia-review.googlesource.com/c/skia/+/164624.

That CL isn't the only change we've done to add this clamping, but it does cover almost all the practical impact of it, and it should patch to M70 cleanly.
Labels: Merge-Request-70
Might want to merge this to M70?  The bug's cosmetic and fixed in M71, but the fix should be safe. It's a clean cherry-pick back of the same patch that happened to fix this bug for M71+.
Project Member

Comment 56 by sheriffbot@chromium.org, Oct 23

Labels: -Merge-Request-70 Merge-Review-70 Hotlist-Merge-Review
This bug requires manual review: Request affecting a post-stable build
Please contact the milestone owner if you have questions.
Owners: benmason@(Android), kariahda@(iOS), geohsu@(ChromeOS), abdulsyed@(Desktop)

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

Comment 57 by bugdroid1@chromium.org, Oct 23

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/96c1165edca01bacf878979d1e6824a435da3fd7

commit 96c1165edca01bacf878979d1e6824a435da3fd7
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Tue Oct 23 21:11:29 2018

Roll src/third_party/skia c88cc779efdb..07055a3ee7ce (6 commits)

https://skia.googlesource.com/skia.git/+log/c88cc779efdb..07055a3ee7ce


git log c88cc779efdb..07055a3ee7ce --date=short --no-merges --format='%ad %ae %s'
2018-10-23 reed@google.com update dox for vertical-text demise
2018-10-23 jvanverth@google.com Check for valid initialization of ReflexHash
2018-10-23 mtklein@google.com add a few more ways to convert images to imgcvt
2018-10-23 brianosman@google.com Hoist color space xform creation out of GrTextureProducer
2018-10-23 jvanverth@google.com Check for finite segments when inserting into ActiveEdgeList
2018-10-23 pirama@google.com Add back -Wover-align


Created with:
  gclient setdep -r src/third_party/skia@07055a3ee7ce

The AutoRoll server is located here: https://autoroll.skia.org/r/skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux-chromeos-compile-dbg;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel

BUG= chromium:867813 
TBR=brianosman@chromium.org

Change-Id: Ic019cb3732c7d0131e372f8bb90dcead78146935
Reviewed-on: https://chromium-review.googlesource.com/c/1297014
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602095}
[modify] https://crrev.com/96c1165edca01bacf878979d1e6824a435da3fd7/DEPS

Labels: -Target-68 -Target-69 -Target-70 Target-71
M71 Stable promotion is coming VERY soon. Your bug is labelled as Stable  ReleaseBlock, pls make sure to land the fix and request a merge into the release branch ASAP. Thank you.
M71 Stable promotion is coming VERY soon. Your bug is labelled as Stable  ReleaseBlock, pls make sure to land the fix and request a merge into the release branch ASAP. Thank you.
Based on offline chat with Mike, the bug was fixed before we knew about this issue in M71. So there isn't any merges required. 

Labels: -Target-71
Labels: Hotlist-ConOps
Cc: brianosman@chromium.org mtklein@chromium.org
 Issue 896294  has been merged into this issue.
Status: Fixed (was: Assigned)
Since M71 has the fix naturally and we've not targeted this for M70, I think there's nothing left to do here except wait.
 Issue 901315  has been merged into this issue.
 Issue 901755  has been merged into this issue.
mtklein@ - we are planning a respin for M70. How safe will this merge be? Is this only affecting Linux?
Ought to be quite safe.  The CL that happened to fix this in M71 patches cleanly back on M70, and it's just a small logic change to run some already well tested code.

Linux is the platform that's mostly affected, but really this affects any software rendering.  That can happen with blacklisted GPU drivers, old machines, etc.

https://skia-review.googlesource.com/c/skia/+/164624
Labels: -Merge-Review-70 Merge-Approved-70
Approving merge for M70. Branch:3538
Project Member

Comment 71 by bugdroid1@chromium.org, Nov 5

Labels: merge-merged-m70
The following revision refers to this bug:
  https://skia.googlesource.com/skia/+/8adc53ec0ee4bbafbd9925024df38437c0fcf88a

commit 8adc53ec0ee4bbafbd9925024df38437c0fcf88a
Author: Mike Klein <mtklein@google.com>
Date: Mon Nov 05 17:00:54 2018

clamp after color pipeline when dst is normalized

Most code working with unorm values doesn't expect to see out-of-gamut
colors, but unorms _can_ store some out-of-gamut colors when
premultiplied and alpha is <1.

Clamping after the color (= shader + color filter) pipeline prevents us
from creating those values.  This CL does appear to fix the problem we
were seeing with xfermodes2 in the narrow config.

I've kept scalepixels_unpremul working by using our old trick,
remembering that unpremul->unpremul involves the same steps as
premul->opaque.  We'll take the unpremul pixels, pun them to premul to
avoid data loss, scale them up, and then avoid unpremul on the way out
by punning the surface as opaque.  It all kind of just barely hangs
together.

Bug:  chromium:867813 
Change-Id: I677d00ecfe4692ba7799ae963d8b8d1ccd4b00ac
Reviewed-on: https://skia-review.googlesource.com/152200
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-on: https://skia-review.googlesource.com/c/164624

[modify] https://crrev.com/8adc53ec0ee4bbafbd9925024df38437c0fcf88a/src/core/SkRasterPipelineBlitter.cpp
[modify] https://crrev.com/8adc53ec0ee4bbafbd9925024df38437c0fcf88a/src/core/SkPixmap.cpp

Labels: -Merge-Approved-70
Cc: bokan@chromium.org
 Issue 904751  has been merged into this issue.
 Issue 908816  has been merged into this issue.

Sign in to add a comment