Closed Bug 1243000 Opened 8 years ago Closed 3 years ago

Not drawing checkerboarding background color in some cases because of contradictory layer opaqueness annotations

Categories

(Core :: Layout, defect)

defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox47 - wontfix

People

(Reporter: mstange, Assigned: mstange)

References

Details

(Keywords: regression)

Attachments

(2 files)

Attached file testcase (deleted) —
STR:
 1. Open the attached testcase.
 2. In quick succession, scroll down completely and back up.

Due to bug 1242993 and the slow associated texture upload, scrolling will briefly freeze on the way back up. At that point you can see drawing artifacts like text in the wrong place under the scrollbar, or duplicate scrollbar thumbs.
These artifacts appear because the scrollable layer is checkerboarding and we're not clearing the background - the artifacts are leftovers from the previous composited frame(s).

The reason we're not drawing the checkerboarding background color is that the scrolled layer is not marked opaque (again due to bug 1242993). However, we also don't composite the background of the window! That's because the root ContainerLayer of the tab content is marked opaque - even though it's not opaque in the current compositor scroll state.
Here's the compositor layer tree:

> LayerManager (0x114140e40)
>   ContainerLayerComposite (0x130e56400) [shadow-visible=< (x=0, y=0, w=2880, h=1594); >] [visible=< (x=0, y=0, w=2880, h=1594); >] [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=2880.000000, h=1594.000000)] [sr=(x=0.000000, y=0.000000, w=1440.000000, h=797.000000)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=1440.000000, h=797.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(0, 0, 0, 0.000000)] [scrollId=3] [z=2] }]
>     PaintedLayerComposite (0x131464400) [shadow-visible=< (x=0, y=0, w=2880, h=1594); >] [bounds=(x=-1, y=0, w=2881, h=1594)] [visible=< (x=0, y=0, w=2880, h=1594); >] { hitregion=< (x=0, y=0, w=2880, h=94); (x=-1, y=94, w=2881, h=48); (x=0, y=142, w=2880, h=1452); > dispatchtocontentregion=< (x=166, y=18, w=2574, h=62); (x=1949, y=94, w=529, h=48); >} [opaqueContent] [valid=< (x=0, y=0, w=2880, h=1594); >]
>       TiledContentHost (0x13499bbc0)
>     RefLayerComposite (0x1122a4800) [shadow-clip=(x=0, y=158, w=2880, h=1436)] [shadow-transform=[ 1 0; 0 1; 0 158; ]] [shadow-visible=< (x=0, y=0, w=2880, h=1436); >] [clip=(x=0, y=158, w=2880, h=1436)] [transform=[ 1 0; 0 1; 0 158; ]] [visible=< (x=0, y=0, w=2880, h=1436); >] [id=6]
>  !    ContainerLayerComposite (0x138b6fc00) [shadow-visible=< (x=0, y=0, w=2880, h=1436); >] [visible=< (x=0, y=0, w=2880, h=1436); >] [opaqueContent]
>         PaintedLayerComposite (0x116c7dc00) [not visible] { hitregion=< (x=0, y=0, w=2880, h=1436); >} [opaqueContent]
>  !      PaintedLayerComposite (0x138b77000) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-transform=[ 1 0; 0 1; -8 -3087; ]] [shadow-visible=< (x=0, y=4443, w=6522, h=5120); >] [transform=[ 1 0; 0 1; -8 -6451; ]] [bounds=(x=0, y=0, w=6524, h=9563)] [visible=< (x=0, y=4443, w=6522, h=5120); >] { hitregion=< (x=0, y=0, w=6522, h=9563); >} [componentAlpha] [metrics0={ [cb=(x=0.000000, y=0.000000, w=2880.000000, h=1436.000000)] [sr=(x=0.000000, y=0.000000, w=3260.600098, h=4781.500000)] [s=(4,3225.5)] [dp=(x=-4.000000, y=-1004.000000, w=3260.600098, h=2560.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=2] [rcd] [clip=(x=0, y=0, w=2880, h=1436)] [z=2] }] [valid=< (x=0, y=4443, w=6522, h=5120); >]
>           TiledContentHost (0x1428b5080)
>         ContainerLayerComposite (0x138b77800) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-visible=< (x=144, y=384, w=112, h=112); >] [clip=(x=0, y=0, w=2880, h=1436)] [visible=< (x=144, y=384, w=112, h=112); >] [isFixedPosition scrollId=2 sides=0x0 anchor=(0,0)]
>           ContainerLayerComposite (0x138b77c00) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-transform=[ 0.839967 0.542637; -0.542637 0.839967; 188.107 384.696; ]] [shadow-visible=< (x=0, y=0, w=80, h=80); >] [clip=(x=0, y=0, w=2880, h=1436)] [transform=[ 0.830817 -0.556546; 0.556546 0.830817; 144.505 429.029; ]] [visible=< (x=0, y=0, w=80, h=80); >] [opaqueContent]
>             PaintedLayerComposite (0x138b78800) [shadow-clip=(x=0, y=0, w=0, h=0)] [clip=(x=0, y=0, w=0, h=0)] [not visible]
>             ColorLayerComposite (0x138b79800) [shadow-visible=< (x=0, y=0, w=80, h=80); >] [bounds=(x=0, y=0, w=80, h=80)] [visible=< (x=0, y=0, w=80, h=80); >] { hitregion=< (x=0, y=0, w=80, h=80); >} [opaqueContent] [color=rgba(0, 0, 255, 1.000000)] [bounds=(x=0, y=0, w=80, h=80)]
>         ContainerLayerComposite (0x131ac1000) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-visible=< (x=0, y=1404, w=2880, h=32); >] [clip=(x=0, y=0, w=2880, h=1436)] [visible=< (x=0, y=1404, w=2880, h=32); >]
>           PaintedLayerComposite (0x131e27000) [shadow-visible=< (x=0, y=1404, w=2880, h=32); >] [bounds=(x=0, y=1404, w=2880, h=32)] [visible=< (x=0, y=1404, w=2880, h=32); >] { hitregion=< (x=0, y=1404, w=2880, h=32); >} [valid=< (x=0, y=1404, w=2880, h=32); >]
>             TiledContentHost (0x13499b1a0)
>           ContainerLayerComposite (0x131ac3c00) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-visible=< (x=6, y=1408, w=1114, h=26); >] [clip=(x=0, y=0, w=2880, h=1436)] [visible=< (x=6, y=1408, w=1114, h=26); >] [hscrollbar=2]
>             PaintedLayerComposite (0x131e26800) [shadow-transform=[ 1 0; 0 1; 6 1408; ]] [shadow-visible=< (x=0, y=0, w=1114, h=26); >] [transform=[ 1 0; 0 1; 6 1408; ]] [bounds=(x=0, y=0, w=1114, h=26)] [visible=< (x=0, y=0, w=1114, h=26); >] { hitregion=< (x=0, y=0, w=1114, h=26); > dispatchtocontentregion=< (x=0, y=0, w=1114, h=26); >} [valid=< (x=0, y=0, w=1114, h=26); >]
>               TiledContentHost (0x136a963e0)
>         ContainerLayerComposite (0x131e2d800) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-visible=< (x=2848, y=0, w=32, h=1436); >] [clip=(x=0, y=0, w=2880, h=1436)] [visible=< (x=2848, y=0, w=32, h=1436); >]
>           PaintedLayerComposite (0x131e86c00) [shadow-visible=< (x=2848, y=0, w=32, h=1436); >] [bounds=(x=2848, y=0, w=32, h=1436)] [visible=< (x=2848, y=0, w=32, h=1436); >] { hitregion=< (x=2848, y=0, w=32, h=1436); >} [valid=< (x=2848, y=0, w=32, h=1436); >]
>             TiledContentHost (0x136a96ce0)
>           ContainerLayerComposite (0x131e32000) [shadow-clip=(x=0, y=0, w=2880, h=1436)] [shadow-transform=[ 1 0; 0 1; 0 -508.656; ]] [shadow-visible=< (x=2852, y=978, w=26, h=203); >] [clip=(x=0, y=0, w=2880, h=1436)] [visible=< (x=2852, y=978, w=26, h=203); >] [vscrollbar=2]
>             PaintedLayerComposite (0x131e5c800) [shadow-transform=[ 1 0; 0 1; 2852 978; ]] [shadow-visible=< (x=0, y=0, w=26, h=203); >] [transform=[ 1 0; 0 1; 2852 978; ]] [bounds=(x=0, y=0, w=26, h=203)] [visible=< (x=0, y=0, w=26, h=203); >] { hitregion=< (x=0, y=0, w=26, h=203); > dispatchtocontentregion=< (x=0, y=0, w=26, h=203); >} [valid=< (x=0, y=0, w=26, h=203); >]
>               TiledContentHost (0x136a97160)

The ContainerLayer 0x138b6fc00 is marked opaque, but the PaintedLayer 0x138b77000 is not opaque and its opaque parts are scrolled out of view.
kats, how bad is this issue with apz? We're tracking this issue (if this is a duplicate) in bug 1237154 as a regression in 46. Can you help find someone to work on it, in either bug?
Flags: needinfo?(bugmail.mozilla)
I'll work on this, in this bug.
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Flags: needinfo?(bugmail.mozilla)
Thanks Markus!

(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #1)
> kats, how bad is this issue with apz? We're tracking this issue (if this is
> a duplicate) in bug 1237154 as a regression in 46.

Just for the record this only manifests during checkerboarding, and while it has the potential to look bad, it only affects some pages and for transient periods of time. So it would be nice to fix and uplift but probably not a blocker.
With bug 1238564 fixed this doesn't seem to occur anymore. I'll reopen if I see it again.
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → WORKSFORME
I've just seen it again, so reopening.

This happens during scrolling on http://cssconf.no/ . We are very slow at painting that page, and whenever there's checkerboarding under the header, the header background starts showing garbage.
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
Attached video screen recording of cssconf.no (deleted) —
markus, are you going ot have time for this in this cycle?
Flags: needinfo?(mstange)
Doesn't look like it, no.
Flags: needinfo?(mstange)
We will not be fixing this in Fx47 most likely. Platform triage meeting decision.
As we're now into RC builds, this is wontfix for 47.

I can't reproduce this with testcase or http://cssconf.no/ on Macbook pro, firefox 85. But it's using Webrender
Graphics
Features
Compositing WebRender
Asynchronous Pan/Zoom wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled; smooth pinch-zoom enabled
WebGL 1 Driver WSI Info CGL
IsWebglOutOfProcessEnabled: 0
WebGL 1 Driver Renderer Intel Inc. -- Intel(R) HD Graphics 630
WebGL 1 Driver Version 4.1 INTEL-14.7.8
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_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic 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_float_blend EXT_frag_depth EXT_shader_texture_lod EXT_sRGB EXT_texture_compression_rgtc EXT_texture_filter_anisotropic MOZ_debug OES_element_index_uint OES_fbo_render_mipmap 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
IsWebglOutOfProcessEnabled: 0
WebGL 2 Driver Renderer Intel Inc. -- Intel(R) HD Graphics 630
WebGL 2 Driver Version 4.1 INTEL-14.7.8
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_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic 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_float_blend EXT_texture_compression_rgtc EXT_texture_filter_anisotropic MOZ_debug OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Uses Tiling true
Uses Tiling (Content) true
Off Main Thread Painting Enabled true
Off Main Thread Painting Worker Count 4
Target Frame Rate 60
GPU #1
Active Yes
Vendor ID 0x8086
Device ID 0x591b
RAM 0
GPU #2
Active Yes
Vendor ID 0x1002
Device ID 0x67ef
RAM 0

Flags: needinfo?(dholbert)

Redirecting ni to reporter (mstange), who is probably who you meant to target.

Flags: needinfo?(dholbert) → needinfo?(mstange.moz)

This was fixed a long time ago by changing how the checkerboarding background color works. It's now always present, and gets culled in the compositor if there's something opaque in front of it.

Status: REOPENED → RESOLVED
Closed: 8 years ago3 years ago
Flags: needinfo?(mstange.moz)
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: