Closed Bug 1421526 Opened 7 years ago Closed 6 years ago

regression: Image rendering and transform artifacts

Categories

(Core :: Graphics: WebRender, defect, P1)

defect

Tracking

()

VERIFIED FIXED
mozilla64
Tracking Status
firefox-esr52 --- unaffected
firefox-esr60 --- disabled
firefox57 --- unaffected
firefox58 --- unaffected
firefox59 --- disabled
firefox60 --- disabled
firefox61 --- disabled
firefox62 --- disabled
firefox63 --- disabled
firefox64 --- verified
firefox65 --- verified

People

(Reporter: cpeterson, Assigned: gw)

References

()

Details

(Keywords: correctness, regression)

Attachments

(7 files)

Attached image Screenshot.jpg
STR:
1. Enable WebRender on macOS 10.13.1:
  gfx.webrender.blob-images;true
  gfx.webrender.enabled;true
2. Load https://superhuman.com/
3. Scroll down the page about ~80% to the "GET EARLY ACCESS" section.

RESULT:
The "GET EARLY ACCESS" text should be in front of the images, but instead the images obscure the text and have bad rendering artifacts. The images' corners are cut off or they have lots of horizontal lines flickering as you scroll the page. If you disable WebRender and restart Firefox, the rendering artifacts go away.

See the attached screenshot comparing Nightly and Chrome.

Here is my about:support info from my MacBook Pro:

Application Basics
------------------

Name: Firefox
Version: 59.0a1
Build ID: 20171128220048
Update Channel: nightly
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0
OS: Darwin 17.2.0
Multiprocess Windows: 2/2 (Enabled by default)
Web Content Processes: 7/7
Stylo: content = true (enabled by default), chrome = true (enabled by user)
Google Key: Found
Mozilla Location Service Key: Found
Safe Mode: false

Graphics
--------

Features
Compositing: WebRender
Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled
WebGL 1 Driver WSI Info: CGL
WebGL 1 Driver Renderer: NVIDIA Corporation -- NVIDIA GeForce GT 650M OpenGL Engine
WebGL 1 Driver Version: 4.1 NVIDIA-10.26.6 355.11.10.10.15.102
WebGL 1 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL 2 Driver WSI Info: CGL
WebGL 2 Driver Renderer: NVIDIA Corporation -- NVIDIA GeForce GT 650M OpenGL Engine
WebGL 2 Driver Version: 4.1 NVIDIA-10.26.6 355.11.10.10.15.102
WebGL 2 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
GPU #1
Active: Yes
Vendor ID: 0x8086
Device ID: 0x0166

Diagnostics
AzureCanvasAccelerated: 0
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: none
TileHeight: 1024
TileWidth: 1024
Decision Log
WEBRENDER:
opt-in by default: WebRender is an opt-in feature
available by user: Enabled by pref
OMTP:
disabled by default: Disabled by default
blocked by runtime: OMTP does not yet support tiling
Whiteboard: [wr-mvp] [triage]
Confirmed in Nightly 59 x64 20171129111030 de_DE @ Debian Testing (KDE, Radeon RX480). Thank you!

https://superhuman.com/

1. The first regression put the "GET EARLY ACCESS" text partly behind the pictures.

mozregression --good 2017-09-15 --bad 2017-11-29 --pref "layers.acceleration.force-enabled:true" "gfx.webrender.enabled:true" "gfx.webrendest.enabled:true" "gfx.webrender.layers-free:true" "gfx.webrender.blob-images:true" "image.mem.shared:true"
> 13:45.47 INFO: Last good revision: ef9858e9ad38718eea180a62bb5b65561ad57d91
> 13:45.47 INFO: First bad revision: cdf4bb1c6af6e53643d2beb0f10a2ce29207ff5e
> 13:45.47 INFO: Pushlog:
> https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=ef9858e9ad38718eea180a62bb5b65561ad57d91&tochange=cdf4bb1c6af6e53643d2beb0f10a2ce29207ff5e

> cdf4bb1c6af6	Kartikaya Gupta — Bug 1417062 - Update for API change in WR PR 2043. r=nical
> 72cfd88fe0a0	Kartikaya Gupta — Bug 1417062 - Update reftest annotations for changes in WR PR 2031. r=nical
> c80c224d6b0c	Kartikaya Gupta — Bug 1417062 - Update webrender to commit d490a74c438d987122c600afca6bb2247ab38637. r=nical

https://github.com/servo/webrender/compare/8a39cf24f493e894a66c2465dd310a2b2923e558...d490a74c438d987122c600afca6bb2247ab38637

2. The second regression destroyed the images of GET EARLY ACCESS.

mozregression --good 2017-11-18 --bad 2017-11-29 --pref "layers.acceleration.force-enabled:true" "gfx.webrender.enabled:true" "gfx.webrender.blob-images:true" "image.mem.shared:true"
> 9:45.64 INFO: Last good revision: f7b7bdd7b05c992b4fb435a26a6278829063748b
> 9:45.64 INFO: First bad revision: b7bc562d77f1f987b623c11cd6e6713f7be2c846
> 9:45.64 INFO: Pushlog:
> https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=f7b7bdd7b05c992b4fb435a26a6278829063748b&tochange=b7bc562d77f1f987b623c11cd6e6713f7be2c846

> b7bc562d77f1	Kartikaya Gupta — Bug 1419440 - Update for API change in WR PR 2082. r=mstange
> 85a4275ed544	Dzmitry Malyshau — Bug 1419440 - Update for API changes in WR PR 2050. r=kats
> 4bd54453fd2e	Kartikaya Gupta — Bug 1419440 - Update webrender to commit b7b07562fda338fcb2faff66ce01aafb6235fbcf. r=mstange

https://github.com/servo/webrender/compare/81cfbcf0763205f25329adb9b2ff75d1cd56e3f1...b7b07562fda338fcb2faff66ce01aafb6235fbcf
Blocks: 1417062, 1419440
No longer blocks: webrender
Has Regression Range: --- → yes
Has STR: --- → yes
OS: Mac OS X → All
Hardware: Unspecified → All
Summary: Image rendering and transform artifacts with WebRender on macOS → regression: Image rendering and transform artifacts
Second regression is likely same issue as bug 1420748 and bug 1420754.
See Also: → 1420748
Priority: -- → P3
Whiteboard: [wr-mvp] [triage] → [wr-mvp] [triage][wr-reserve-candidate]
Whiteboard: [wr-mvp] [triage][wr-reserve-candidate] → [wr-reserve]
(I realize WR is on in Nightly but there's no plan to let it ride in 59)
This should be fixed by the next WR update
Assignee: nobody → gwatson
Depends on: 1426116
Still not fixed in the latest nightly. I'll try to narrow down both regression ranges from comment 1.
Assignee: gwatson → nobody
No longer depends on: 1426116
(In reply to Jan Andre Ikenmeyer [:darkspirit] from comment #1)
> https://superhuman.com/
> 
> 1. The first regression put the "GET EARLY ACCESS" text partly behind the
> pictures.

This was a regression from servo/webrender#2031. Filed servo/webrender#2274 to track it.
Attached video 2018-01-09_22-11-18.mp4
mozregression --find-fix --bad 2017-11-30 --good 2018-01-09 --pref layers.acceleration.force-enabled:true gfx.webrender.enabled:true gfx.webrender.blob-images:true image.mem.shared:true layout.display-list.retain:false startup.homepage_welcome_url:"https://superhuman.com/"
> 8:18.14 INFO: First good revision: 4248602674ff589f368a4b868fa4743a033640e4
> 8:18.14 INFO: Last bad revision: 05fed903f40f05fd923ba2137696ecc1fa0bafe6
> 8:18.14 INFO: Pushlog:
> https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=05fed903f40f05fd923ba2137696ecc1fa0bafe6&tochange=4248602674ff589f368a4b868fa4743a033640e4
> 8:20.53 INFO: ************* Switching to autoland by process of elimination (no branch detected in commit message)
> 8:20.53 INFO: Getting autoland builds between a66b031b9f6bb1b259be74ea80802229a6d7a187 and 4248602674ff589f368a4b868fa4743a033640e4
> 8:21.30 ERROR: The url u'https://hg.mozilla.org/integration/autoland/json-pushes?fromchange=4248602674ff589f368a4b868fa4743a033640e4&tochange=a66b031b9f6bb1b259be74ea80802229a6d7a187' contains no pushlog. Maybe use another range ?

> c174ef283f55	tigercosmos — servo: Merge #19647 - replace DocumentSource::NotFromParser with DocumentSource::FromParser (from tigercosmos:x3); r=jdm
mozregression --repo autoland --launch c174ef283f55 --pref layers.acceleration.force-enabled:true gfx.webrender.enabled:true gfx.webrender.blob-images:true image.mem.shared:true layout.display-list.retain:false startup.homepage_welcome_url:"https://superhuman.com/"
-> last "bad" (still looking like the second regression)

> da9b75fc0866	Kartikaya Gupta — Bug 1426116 - Update webrender to commit a422f907be948b92bf5c7003a01f7744391a795e. r=jrmuizel
mozregression --repo autoland --launch da9b75fc0866 --pref layers.acceleration.force-enabled:true gfx.webrender.enabled:true gfx.webrender.blob-images:true image.mem.shared:true layout.display-list.retain:false startup.homepage_welcome_url:"https://superhuman.com/"
-> first "good": yes, this partly(!) fixed the second regression. (video/current nightly)
See Also: → 1429235
Over to :kats for triage to original author.
Assignee: nobody → bugmail
Whiteboard: [wr-reserve]
Assignee: bugmail → gwatson
from comment 1
> 1. The first regression put the "GET EARLY ACCESS" text partly behind the pictures.
= https://github.com/servo/webrender/issues/2274

mozregression --find-fix --bad 2018-01-12 --good 2018-02-21 --pref gfx.webrender.all:true startup.homepage_welcome_url:"https://superhuman.com/"
> 8:52.92 INFO: First good revision: 69412e3061291072728afc96bc3aed6b890a1156
> 8:52.92 INFO: Last bad revision: d23fda609203ea1497cf22156a621d5514e5ca8e
> 8:52.92 INFO: Pushlog:
> https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=d23fda609203ea1497cf22156a621d5514e5ca8e&tochange=69412e3061291072728afc96bc3aed6b890a1156

> 69412e306129	Kartikaya Gupta — Bug 1434723 - Update WR bindings for change in WR PR 2381. r=jrmuizel
> 23eeef0736e7	Kartikaya Gupta — Bug 1434723 - Mark reftest failures exposed by WR PR 2369. r=jrmuizel
> 2d2a36f4aca9	Kartikaya Gupta — Bug 1434723 - Disable a failing mochitest from WR PR 2367. r=jrmuizel
> 29c8f502f43f	Kartikaya Gupta — Bug 1434723 - Update webrender to commit 08e49649f1fc9cacff4e10ebc390babcea752236. r=jrmuizel

try builds from bug 1434723
> WR @ c383ef73113d0d5f8634385565ce83a4c84ca944
mozregression --repo try --launch 5cd09997d5e0c3ed19d6c3304b79931f86f25b56 --pref gfx.webrender.all:true startup.homepage_welcome_url:"https://superhuman.com/"
bad

> WR @ 7809537ea48090c4d8e36aff83149f776c5f7bee
mozregression --repo try --launch 3535941651e34d664076963b5435b5d60546869d --pref gfx.webrender.all:true startup.homepage_welcome_url:"https://superhuman.com/"
good

Fix range: https://github.com/servo/webrender/compare/c383ef73113d0d5f8634385565ce83a4c84ca944...7809537ea48090c4d8e36aff83149f776c5f7bee

Fixed by: https://github.com/servo/webrender/pull/2369
Attached video 2018-02-22_03-34-45.mp4
Current state of this bug.
The issue from comment 11 is still present. Downgrading to P2 since it doesn't really impact usability or a wide range of websites.
Priority: P1 → P2
Attached file reduced test case
Here's a reduced test case of the current problem. You need to shrink your window height and scroll.
Depends on: wr-3d
Attached video 2018-08-31_00-37-36.mp4
Debian Testing, KDE, Xorg, Nvidia GTX 1060, driver 390.77, 2560x1440
Try build from bug 1487429 comment 2 (which is servo/webrender#2995):
mozregression --repo try --launch 294516d725bccee16a9c51a826126e8e16d5ea7f --pref gfx.webrender.all:true -a https://superhuman.com/ -a https://addons.mozilla.org/en-US/firefox/addon/starry-space-fantasy/

One broken shadow is left. Flickers on the chrome.
Priority: P2 → P1
No longer blocks ride-to-Nightly.  I'm marking it as blocking ride-to-Beta at this point, but it's a close call.  I'd love to see it fixed.
Blocks: stage-wr-trains
No longer blocks: stage-wr-nightly
This seems to be fixed by https://github.com/servo/webrender/pull/3030, from what I can see (I might have missed some details). There are performance issues on this page, but they are a separate issue.
Attached video 2018-09-12_00-32-27.mp4
Debian Testing, KDE, Xorg, Nvidia GTX 1060
Build from bug 1490242 comment 1:
mozregression --repo mozilla-inbound --launch 8c80d5351916 --pref gfx.webrender.all:true -a https://superhuman.com/

Still some small issues.
I suspect this (and a few other similar bugs) will be resolved by https://github.com/servo/webrender/pull/3073.
Depends on: 1492389
No longer depends on: 1492389
Depends on: 1492566
See Also: → 1493264
Filed a spin-off about a recent regression. Otherwise this seems to be fixed!
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
Flags: qe-verify+
I successfully reproduced the issue on Firefox Nightly 59.0a1 (2017-11-28) under macOS 10.13 using the STR from Comment 0.

The issue is not reproducible on Firefox Beta 64.0b4 and latest Nightly 65.0a1 (2018-10-25) under Windows 10 (x64), Ubuntu 16.04 (x64) and macOS 10.13.
Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: