Closed Bug 1479135 Opened 6 years ago Closed 4 years ago

Black border around OpenGL/WebRender popups with non-compositing window manager

Categories

(Core :: Graphics, defect, P3)

63 Branch
Unspecified
Linux
defect

Tracking

()

VERIFIED FIXED
85 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox61 --- unaffected
firefox62 --- unaffected
firefox63 --- disabled
firefox64 --- disabled
firefox65 --- disabled
firefox75 --- disabled
firefox76 --- disabled
firefox77 --- disabled
firefox78 --- disabled
firefox83 --- disabled
firefox84 --- disabled
firefox85 --- fixed
firefox96 --- verified

People

(Reporter: Oriol, Assigned: stransky)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

(Keywords: regression, Whiteboard: [gfx-noted])

Attachments

(3 files, 1 obsolete file)

Attached image screenshot.png (deleted) —
1. Set layers.acceleration.force-enabled=true 2. Restart Firefox 3. Open the hamburger menu or some other popup Result: the popup has a black border Expected: no black border Regression window: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=9bce60d444985d38f4cd049870c5431cfeb87cfd&tochange=4b73b8c7240859ef2587a99cc1f1523c58bbddb2 I use Lubuntu 18.04 LTS. My about:support says > Features > - Compositing: OpenGL > - Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled > - WebGL 1 Driver WSI Info: > - GLX 1.4 > - GLX_VENDOR(client): Mesa Project and SGI > - GLX_VENDOR(server): SGI > - 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_get_proc_address GLX_ARB_multisample GLX_EXT_buffer_age GLX_EXT_create_context_es2_profile GLX_EXT_create_context_es_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_INTEL_swap_event GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync > - WebGL 1 Driver Renderer: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - WebGL 1 Driver Version: 3.0 Mesa 18.0.5 > - WebGL 1 Driver 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 > - 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_astc WEBGL_compressed_texture_etc 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: GLX 1.4 > - GLX_VENDOR(client): Mesa Project and SGI > - GLX_VENDOR(server): SGI > - 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_get_proc_address GLX_ARB_multisample GLX_EXT_buffer_age GLX_EXT_create_context_es2_profile GLX_EXT_create_context_es_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_INTEL_swap_event GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync > - WebGL 2 Driver Renderer: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - WebGL 2 Driver Version: 4.5 (Core Profile) Mesa 18.0.5 > - WebGL 2 Driver 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_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_object_purgeable GL_ARB_ES2_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_2_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control 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_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport 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_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader_int64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters 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_multi_draw_indirect GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_post_depth_coverage 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_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shader_viewport_layer_array GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map_array GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge 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_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ATI_blend_equation_separate GL_ATI_texture_float GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_polygon_offset_clamp GL_EXT_provoking_vertex GL_EXT_shader_integer_mix GL_EXT_shader_samples_identical GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer 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_bgra GL_IBM_multimode_draw_arrays GL_INTEL_conservative_rasterization 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_NV_conditional_render GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_NV_texture_barrier GL_OES_EGL_image GL_S3_s3tc > - WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc 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 > > GPU #1 > - Active: Yes > - Description: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - Vendor ID: Intel Open Source Technology Center > - Device ID: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - Driver Version: 3.0 Mesa 18.0.5 > > Diagnostics > - AzureCanvasAccelerated: 0 > - AzureCanvasBackend: skia > - AzureContentBackend: skia > - AzureFallbackCanvasBackend: none > - CairoUseXRender: 0 > - TileHeight: 512 > - TileWidth: 512 > - Device Reset: Trigger Device Reset > > Decision Log > - HW_COMPOSITING: > - blocked by default: Acceleration blocked by platform > - force_enabled by user: Force-enabled by pref > - OPENGL_COMPOSITING: > - force_enabled by user: Force-enabled by pref > - WEBRENDER: > - opt-in by default: WebRender is an opt-in feature > - WEBRENDER_QUALIFIED: > - blocked by env: No qualified hardware
Martin, if you have the time, it looks like this was a recent regression from bug 1406533.
Has STR: --- → yes
Flags: needinfo?(stransky)
Priority: -- → P5
Whiteboard: [gfx-noted]
Version: unspecified → 63 Branch
I am having a similar issue with the latest Nightly on Debian Testing, except the borders are white and they only show on popups generated by an addon (such as uBlock Origin or KeePassXC). The native popups don't have the extra border. I can provide more info if necessary.
(In reply to Andrew Osmond [:aosmond] from comment #1) > Martin, if you have the time, it looks like this was a recent regression > from bug 1406533. Sure, count me in.
Assignee: nobody → stransky
Flags: needinfo?(stransky)
Looks like a dupe of Bug 1479181
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Bug 1479181 is verified fixed but I still have the black borders with Nightly 2018-08-09 cea8cf3f6abefaccb80a640b47aad8bcdb3115ae
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Can you please attach full output of about:support twice, one right after Firefox start and then when you click at the popup and you have the black borders? Thanks. Fortunately I have the same gfx hw so I can test it too.
Status: REOPENED → ASSIGNED
Flags: needinfo?(oriol-bugzilla)
The only change after opening popups is the number of content processes. The info is mostly like in comment 0, though AzureContentBackend is now cairo (I didn't make this change). Resetting it to skia doesn't solve the problem. > Features > - Compositing: OpenGL > - Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled > - WebGL 1 Driver WSI Info: > - GLX 1.4 > - GLX_VENDOR(client): Mesa Project and SGI > - GLX_VENDOR(server): SGI > - 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_get_proc_address GLX_ARB_multisample GLX_EXT_buffer_age GLX_EXT_create_context_es2_profile GLX_EXT_create_context_es_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_INTEL_swap_event GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync > - WebGL 1 Driver Renderer: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - WebGL 1 Driver Version: 3.0 Mesa 18.0.5 > - WebGL 1 Driver 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 > - 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_astc WEBGL_compressed_texture_etc 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: > - GLX 1.4 > - GLX_VENDOR(client): Mesa Project and SGI > - GLX_VENDOR(server): SGI > - 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_get_proc_address GLX_ARB_multisample GLX_EXT_buffer_age GLX_EXT_create_context_es2_profile GLX_EXT_create_context_es_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_INTEL_swap_event GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_query_renderer GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync > - WebGL 2 Driver Renderer: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - WebGL 2 Driver Version: 4.5 (Core Profile) Mesa 18.0.5 > - WebGL 2 Driver 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_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_object_purgeable GL_ARB_ES2_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_2_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control 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_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport 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_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader_int64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters 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_multi_draw_indirect GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_post_depth_coverage 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_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shader_viewport_layer_array GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map_array GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge 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_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ATI_blend_equation_separate GL_ATI_texture_float GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_polygon_offset_clamp GL_EXT_provoking_vertex GL_EXT_shader_integer_mix GL_EXT_shader_samples_identical GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer 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_bgra GL_IBM_multimode_draw_arrays GL_INTEL_conservative_rasterization 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_NV_conditional_render GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_NV_texture_barrier GL_OES_EGL_image GL_S3_s3tc > - WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context > > GPU #1 > - Active: Yes > - Description: Intel Open Source Technology Center -- Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - Vendor ID: Intel Open Source Technology Center > - Device ID: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) > - Driver Version: 3.0 Mesa 18.0.5 > > Diagnostics > - AzureCanvasAccelerated: 0 > - AzureCanvasBackend: skia > - AzureContentBackend: cairo > - AzureFallbackCanvasBackend: none > - CairoUseXRender: 0 > - Device Reset: Trigger Device Reset > > Decision Log > - HW_COMPOSITING: > - blocked by default: Acceleration blocked by platform > - force_enabled by user: Force-enabled by pref > - OPENGL_COMPOSITING: > - force_enabled by user: Force-enabled by pref > - WEBRENDER: > - opt-in by default: WebRender is an opt-in feature > - WEBRENDER_QUALIFIED: > - blocked by env: No qualified hardware > - OMTP: > - broken by runtime: OMTP is not supported when using cairo
Flags: needinfo?(oriol-bugzilla)
I see. Well let's see if patches from Bug 1478454 helps here.
Flags: needinfo?(stransky)
Patch from Bug 1478454 didn't help. Same problem with Nightly 2018-08-09 937c64cef999caecf6478792683879105877a6db
Bug 1479181 address the problem only with webrender enabled. Bug 1481694 might be related to this bug.
Yes, that may be related to Bug 1481694 but the given regression range indicates also the shape mask code involved. Orin, which WM do you use? Default GNOME or anything else? And do you have enabled/disabled WM compositing?
Flags: needinfo?(stransky) → needinfo?(oriol-bugzilla)
I don't know how to check these things, but it seems Lubuntu uses LXDE instead of GNOME by default, and I use the default.
Flags: needinfo?(oriol-bugzilla)
(In reply to Oriol Brufau [:Oriol] from comment #12) > I don't know how to check these things, but it seems Lubuntu uses LXDE > instead of GNOME by default, and I use the default. Sure, not a problem. Please run this command on terminal: env | grep XDG and paste output here. Thanks.
Flags: needinfo?(oriol-bugzilla)
XDG_CONFIG_HOME=/home/oriol/.config XDG_MENU_PREFIX=lxde- XDG_VTNR=7 XDG_SESSION_ID=c2 XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/oriol XDG_SESSION_TYPE=x11 XDG_DATA_DIRS=/etc/xdg/lubuntu:/usr/local/share:/usr/share:/usr/share/gdm:/var/lib/menu-xdg:/usr/share/Lubuntu:/usr/local/share/:/usr/share/ XDG_SESSION_DESKTOP=Lubuntu XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 XDG_CURRENT_DESKTOP=LXDE XDG_SEAT=seat0 XDG_RUNTIME_DIR=/run/user/1000 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_CONFIG_DIRS=/etc/xdg/lubuntu:/etc/xdg/xdg-Lubuntu:/etc/xdg
Flags: needinfo?(oriol-bugzilla)
That may be the problem - XLDE is not compositing by default so the shapes should be used.
Summary: Black border around popups with layers.acceleration.force-enabled on linux → [Lubuntu] Black border around popups with layers.acceleration.force-enabled on linux
Summary: [Lubuntu] Black border around popups with layers.acceleration.force-enabled on linux → [Lubuntu][non-compositing] Black border around popups with layers.acceleration.force-enabled on linux
Summary: [Lubuntu][non-compositing] Black border around popups with layers.acceleration.force-enabled on linux → [Lubuntu][non-compositing] LXDE Black border around popups with layers.acceleration.force-enabled on linux
Hm, I tested that on Fedora 29/lxde and the popup borders looks OK there. May be Ubuntu specific then.
I just got the Firefox 63.0 update on Arch Linux 4.18.16 and am now getting this issue. Confirmed, turning off layers.acceleration.force-enabled removed the black borders.
Sorry, extra information is here. about:support - https://pastebin.com/c8SP5qdW I'm using the i3 window manager and no compositor.
Can you please try latest nightly? It may be Bug 1481694.
Flags: needinfo?(mozilla)
(In reply to Martin Stránský [:stransky] from comment #19) > Can you please try latest nightly? It may be Bug 1481694. I just tried the latest nightly and the borders are still there.
Flags: needinfo?(mozilla)
Not specific of LXDE, Lubuntu 18.10 with LXQt is also affected.
Confirmed in latest stable 63 branch. Debian 8 and 9 (32 and 64 bit).
Sorry, MATE/GTK.
Happy to take a patch in nightly; if it seems low risk enough please feel free to request uplift to 65 beta.

I'm having exactly the same issue.

Linux (Arch); Openbox 3.6.1; FF 66.0.2

Note this seems to break mouse move events in hamburger popup atm, though I swear I had seen it work on top of 480668:84318ef3fa4f, though now can't get it to

argh.... ignore that - moz-phab or hg munged a bunch of uncommitted files in with my commit

Attachment #9081365 - Attachment is obsolete: true

Note this seems to break mouse move events in hamburger popup atm, though I swear I had seen it work on top of 480668:84318ef3fa4f, though now can't get it to.

This patch is not ideal... I had tried undoing bits of 1406533, but that didn't work.

So, partly I made the accelerated path head to shaped=1 via mHasAlpha = false so that the shaping would work.
However, then I realized that an accelerated window does not work as WindowSurfaceX11Surface is not involved (and that's where the shape code currently lives)

Anyways, I'm posting here just to see if it sparks discussion

Hi, I think you want to look at WindowSurfaceProvider::CreateWindowSurface() to see which backend is actually created in your case when you see the black borders....maybe add some logging there or so.

(In reply to graham sanderson from comment #28)

Note this seems to break mouse move events in hamburger popup atm

That's bug 1567791.

(In reply to Martin Stránský [:stransky] from comment #30)

Hi, I think you want to look at WindowSurfaceProvider::CreateWindowSurface() to see which backend is actually created in your case when you see the black borders....maybe add some logging there or so.

So my change to nsWindow::WidgetTypeSupportsAcceleration in place, we get a WindowSurfaceX11Surface (as a result of BasicCompositor calling StartRemoteDrawingInRegion from BeginFrame).
... without it, we use CompositorOGL and WindowSurfaceProvider::CreateWindowSurface is never called.

(In reply to Jan Andre Ikenmeyer [:darkspirit] from comment #31)

(In reply to graham sanderson from comment #28)

Note this seems to break mouse move events in hamburger popup atm

That's bug 1567791.

Thanks - this patch does work except for that issue, though it may not be the actually correct fix. It seems to be very tied up in what is in and out of process too

According to https://github.com/orgs/FirefoxGraphics/projects/1, "Start Replacing Skia" is planned in Q4.
It seems the long term plan is to use the EGL codepath, and for blacklisted drivers everything on top of SwiftShader.
Downgrading shaped OpenGL/WebRender widgets to Basic (Skia) widgets doesn't look like a long-term solution to me. But I'm not a developer.

Chromium's panels are not shaped and begin slightly above the line of death. When using KDE without compositing, it shows solid borders instead of smooth shadows. Imitating Chromium's behavior could be a fallback solution, if approved.

Yup anything but the black borders :-) ... my patch only targets popup windows with non webrender (I think) acceleration under non composited X11.
Note with the patch you indeed do not get the shadows, but you do get the pointy part of the popup at the top and no black border

Note i believe the black borders only occurs for linux with forced acceleration on (perhaps that is now the default)... but in this case not accelerating popups might be reasonable

layers.acceleration.force-enabled;true (called "OpenGL" compositing on about:support) is the old accelerated compositor. The new OpenGL-based compositor is "WebRender". It can be force-enabled with gfx.webrender.all;true (restart needed) and it's already enabled by default on Linux Nightly.

If you fix black borders for OpenGL compositing by downgrading shaped widgets to Basic, the fix would likely be obsolete next year.
(And bug 1567791 would then have to fix "shaped Basic widgets within the GPU process" instead of changing such widgets (back) to WebRender.
Basic is rather not intended to be used within the GPU process. And long-term plan seems to replace Basic with WebRender/SwiftShader as non-accelerated fallback solution.)

OK that makes sense... i.e. fixing this bug properly by including shaped window support in the accelerated path.

I did not realize that WebRender was intended as a solution for all devices (i also had thought it required Wayland) ; i will take a closer look.

(Jan Andre Ikenmeyer [:darkspirit] from bug 1633574 comment 8)

Created attachment 9143849 [details]
Screenshot_20200428_024316.png

Activated autoscroll and scrolled a bit down.

It's most likely the same "shaped Basic in GPU process" bug as bug 1567791, but won't be fixed by bug 1574746. Basic should not be used in GPU process.
bug 1574746 will fix bug 1567791 by upgrading main menu, identity panel and page actions menu from Basic to OpenGL. (That introduces a black background behind the main menu like webextension panels already have. That's the same behavior the OpenGL compositor always had.)

With bug 1622633 (WebRender for context menu, autoscroll, tooltips), the autoscroll icon would get a black rectangle as background as well.

bug 1479135 might fix these black backgrounds of shaped widgets on non-compositing window managers by "including shaped window support in the accelerated path".
I have confirmed that https://www.ssec.wisc.edu/~billh/bp/shape.c achieves a shaped OpenGL context. It looks similar to what has been done for Basic: https://hg.mozilla.org/mozilla-central/rev/6af61c29b5497d864fd7c1ceac0084590b097218 ("XShapeCombineMask")

Martin, would https://www.ssec.wisc.edu/~billh/bp/shape.c be a solution for this?

Flags: needinfo?(stransky)

Is this the disabled-by-default/deprecated "XRender" code path? I tried gfx.xrender.enabled, but it does not fix this problem. How should this ideally be fixed, or could this be fixed at all, if EGL should be used in the future? Sorry for my naive questions.

I have found the following code snippet in which I see usage of EGL together with XCreateGC and XCreatePixmap:
https://fossies.org/linux/mesa-demos/src/egl/opengl/xeglgears.c
This makes me assume that XShapeCombineMask could work with EGL as well.
So, I assume, this bug could be an optional fix after bug 788319 or a wontfix ("I have grown accustomed to it.").
I am sorry that I'm not able to provide better help than providing possible hints.

(In reply to Jan Andre Ikenmeyer [:darkspirit] from comment #41)

Martin, would https://www.ssec.wisc.edu/~billh/bp/shape.c be a solution for this?

Yes, this may be used to fix it.

Flags: needinfo?(stransky)
Depends on: linux-egl
Blocks: wr-linux
Summary: [Lubuntu][non-compositing] LXDE Black border around popups with layers.acceleration.force-enabled on linux → Black border around popups with non-compositing window manager

Martin, this bug is gathering a bunch of duplicates and many +1s in the comment, is there a solution as a patch for our upcoming releases or a workaround for affected users that we could document on SUMO? Thanks

Flags: needinfo?(stransky)

(In reply to Pascal Chevrel:pascalc from comment #48)

Martin, this bug is gathering a bunch of duplicates and many +1s in the comment, is there a solution as a patch for our upcoming releases or a workaround for affected users that we could document on SUMO? Thanks

It's related to Bug 1663273 - let's look at this one when Bug 1663273 lands.

Flags: needinfo?(stransky)

(In reply to Pascal Chevrel:pascalc from comment #48)

Martin, this bug is gathering a bunch of duplicates and many +1s in the comment, is there a solution as a patch for our upcoming releases or a workaround for affected users that we could document on SUMO? Thanks

A workaround is to enable compositing in desktop environment. Users may need to disable compositing (rendering with alpha blending) mainly on KDE to improve rendering performance. And this bug is caused by disabled screen compositing and enabled WebRender in Firefox.

Summary: Black border around popups with non-compositing window manager → Black border around OpenGL/WebRender popups with non-compositing window manager

Let's disable WebRender for popups on non-compositing screens. There's no much point to disable compositing when HW rendering is used so it's a bit corner case. Also to fix it on WebRender side we'd need to implement shape mask rendering in the rust code and I don't think we want to spend time on it.

Not sure how happy the GFX team will be with that (they are already preparing to drop accelerated layers), but I guess we still have time till the basic backend will we dropped.

(In reply to Robert Mader [:rmader] from comment #53)

Not sure how happy the GFX team will be with that (they are already preparing to drop accelerated layers), but I guess we still have time till the basic backend will we dropped.

That's needs to be done on gfx side, no matter if WR or SW-WR is used. But don't block WR enrollment on Linux by it right now.

Priority: P5 → P3
Pushed by stransky@redhat.com: https://hg.mozilla.org/integration/autoland/rev/13a85de368de [X11] disable WebRender for popus on X11/non-composited screens, r=jhorak"

If we want to uplift this for the 84 release, we need to request it today.

I don't think we need to uplift as it's a bit corner case and WebRender is not used by default yet.

Flags: needinfo?(stransky)

(In reply to Martin Stránský [:stransky] from comment #57)

I don't think we need to uplift as it's a bit corner case and WebRender is not used by default yet.

WebRender is used by default for GNOME/X11 in 84 for AMD/Intel users.

(In reply to Andrew Osmond [:aosmond] from comment #58)

(In reply to Martin Stránský [:stransky] from comment #57)

I don't think we need to uplift as it's a bit corner case and WebRender is not used by default yet.

WebRender is used by default for GNOME/X11 in 84 for AMD/Intel users.

I see, then we're safe here. Non-compositing scenario is used on KDE/XFCE only, Gnome does not support non-compositing screens. Also how about Wayland, is WebRender enabled also there?

If you say 84, you mean 84 beta, not upcoming 84 release, right?

Excellent, KDE/XFCE are 84 early beta only. GNOME/X11 + Intel/AMD will ride the trains to 84 release. This excludes XWayland.

Right now Wayland users get WebRender up to early beta, although it doesn't ship out to release.

(In reply to Andrew Osmond [:aosmond] from comment #61)

Excellent, KDE/XFCE are 84 early beta only. GNOME/X11 + Intel/AMD will ride the trains to 84 release. This excludes XWayland.

Right now Wayland users get WebRender up to early beta, although it doesn't ship out to release.

I sure we can also enable WebRender on Wayland/GNOME/Intel/AMD, it's pretty well tested because Gnome is running on Wayland/GL only, there's no SW rendering there at all.

EDIT: Also Wayland backend affects Fedora only right now so I'd like to enable it there too.

(In reply to Martin Stránský [:stransky] from comment #62)

I sure we can also enable WebRender on Wayland/GNOME/Intel/AMD, it's pretty well tested because Gnome is running on Wayland/GL only, there's no SW rendering there at all.

EDIT: Also Wayland backend affects Fedora only right now so I'd like to enable it there too.

See bug 1680505.

Cool, Thanks!

FYI Raspberry Pi OS ships with a non compositing window manager, so this bug happens there too. I haven't tried a build for Raspberry Pi since the EGL stuff dropped.

Status: ASSIGNED → RESOLVED
Closed: 6 years ago4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 85 Branch
Flags: qe-verify+

Webrender now supports using software WR for uncomposited widgets. So once that's enabled we won't use basic any more. gfx.webrender.software.unaccelerated-widget.force should already force this behaviour on nightly and appears to work fine on WMs like fluxbox.

So the workaround here appears to not stop us from removing basic, which again is important in order to simplify certain things in Gecko, which again should allow Webrender to get significant faster where it's currently slow.

I was not able to reproduce the issue on build from description and it is not either reproducing on latest NB 97.0a1 (20211208214306) Win10, nor on Mac 10.13 & Ubuntu 20.4 (96.0b2 - 20211207185904).

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: