Bug 85123

Summary: [BDW] FBC is not actually working after start gnome-session desktop
Product: DRI Reporter: wendy.wang
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: CLOSED INVALID QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: major    
Priority: medium CC: christophe.prigent, intel-gfx-bugs, lei.a.liu, przanoni
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: BDW i915 features: display/FBC
Bug Depends on:    
Bug Blocks: 87704    
Attachments:
Description Flags
dmesg log file for FBC fail none

Description wendy.wang 2014-10-17 06:54:08 UTC
Created attachment 107974 [details]
dmesg log file for FBC fail

==System Environment==
--------------------------
Regression: NO.

Non-working platforms: BDW

==kernel==
origin/drm-intel-nightly: 1361e359ee657c6dbc9528357e40f91a004c6abe(fails)
    drm-intel-nightly: 2014y-10m-16d-12h-06m-56s UTC integration manifest

origin/drm-intel-next-queued: fff95501f2095fa8a9dbd7e177bbf642d241b2fe(fails)
    drm/i915: intel_backlight scale() math WA

==Bug detailed description==
-----------------------------
BDW FBC is working with x window, but fail with gnome-session desktop lauch

Reproduce steps:
1. Enable FBC in kernel with parameter: i915.enable_fbc=1
2. Boot system and start x
3. echo 1 > /sys/kernel/debug/dri/0/i915_fbc_false_color, BDW show red screen
4. start gnome-session: BDW show normal color(white) x windows screen, and background show normal desktop screen, no special color.
And observed With below message in terminal:

root@x-bdw05:~# echo 1 > /sys/kernel/debug/dri/0/i915_fbc_false_color
root@x-bdw05:~# screen
compiz (core) - Info: Starting plugin: decor
compiz (core) - Info: Loading plugin: grid
compiz (core) - Info: Starting plugin: grid
compiz (core) - Info: Loading plugin: resize
compiz (core) - Info: Starting plugin: resize
compiz (core) - Info: Loading plugin: commands
compiz (core) - Info: Starting plugin: commands
compiz (core) - Info: Loading plugin: vpswitch
compiz (core) - Info: Starting plugin: vpswitch
compiz (core) - Info: Loading plugin: gnomecompat
compiz (core) - Info: Starting plugin: gnomecompat
compiz (core) - Info: Loading plugin: snap
compiz (core) - Info: Starting plugin: snap
compiz (core) - Info: Loading plugin: wall
compiz (core) - Info: Starting plugin: wall
compiz (core) - Info: Loading plugin: move
compiz (core) - Info: Starting plugin: move
compiz (core) - Info: Loading plugin: mousepoll
compiz (core) - Info: Starting plugin: mousepoll
compiz (core) - Info: Loading plugin: place
compiz (core) - Info: Starting plugin: place
compiz (core) - Info: Loading plugin: regex
compiz (core) - Info: Starting plugin: regex
compiz (core) - Info: Loading plugin: imgpng
compiz (core) - Info: Starting plugin: imgpng
compiz (core) - Info: Loading plugin: session
compiz (core) - Info: Starting plugin: session
I/O warning : failed to load external entity "/root/.compiz/session/10dd69fc06b415c34141355958221060900000046560001"
compiz (core) - Info: Loading plugin: animation
compiz (core) - Info: Starting plugin: animation
compiz (core) - Info: Loading plugin: expo
compiz (core) - Info: Starting plugin: expo
compiz (core) - Info: Loading plugin: fade
compiz (core) - Info: Starting plugin: fade
compiz (core) - Info: Loading plugin: workarounds
compiz (core) - Info: Starting plugin: workarounds
compiz (core) - Info: Loading plugin: ezoom
compiz (core) - Info: Starting plugin: ezoom
compiz (core) - Info: Loading plugin: scale
compiz (core) - Info: Starting plugin: scale
** Message: applet now removed from the notification area
/bin/sh: 1: /usr/bin/gtk-window-decorator: not found

(nautilus:4842): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(nautilus:4842): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed
** Message: using fallback from indicator to GtkStatusIcon



dmesg-fbcfail.log attached.
Comment 1 Paulo Zanoni 2014-10-17 19:07:23 UTC
FBC is disabled by default exactly because we expect it to not work...
Comment 2 Rodrigo Vivi 2014-10-17 19:12:15 UTC
With i915.enable_fbc=1 and that sw cache clean / nuke on place I expect it working  like it works on HSW. This is probably a false positve on sw cache clean. It is never getting cleadned so FBC doesn't compress any frame again.
Comment 3 liulei 2015-03-05 03:43:42 UTC
This problem exists on SKL, too
Comment 4 Chris Wilson 2015-03-05 07:43:36 UTC
Also note that the preferred update paths for gnome-shell is by pageflipping (as happens here) so you do not expect FBC to take effect until the system is idle.
Comment 5 liulei 2015-03-05 15:04:17 UTC
(In reply to Chris Wilson from comment #4)
> Also note that the preferred update paths for gnome-shell is by pageflipping
> (as happens here) so you do not expect FBC to take effect until the system
> is idle.

Is there a way to avoid pageflipping without stopping gnome-shell? So that system stays idle with gnome.
Comment 6 Chris Wilson 2015-03-05 16:21:26 UTC
gnome-shell will only render when there is damage (or it feels to the need to update its own display). It will stop rendering after a while, the only question is whether it quiesces enough for FBC to kick in. Note that without GLX_EXT_buffer_age (i.e. unpatched DRI2), gnome-shell uses DRI2CopyRegion to do its updates, and if you don't have TearFree enabled, that will just dirty small chunks of the framebuffer.

Question to the audience: is it worth extending the pageflip ioctl to pass down the dirty rectangles?
Comment 7 Paulo Zanoni 2015-03-06 19:35:11 UTC
It is also on our plan to find a way to _not_ stop FBC on pageflips, which would solve the problem too. There's a Jira for this.
Comment 8 Ville Syrjala 2015-03-08 13:45:14 UTC
(In reply to Paulo Zanoni from comment #7)
> It is also on our plan to find a way to _not_ stop FBC on pageflips, which
> would solve the problem too. There's a Jira for this.

Not sure what needs finding. I already implemented that almost a year ago as part of my FBC fix series. So someone would just have to go look at those patches.
Comment 9 liulei 2015-04-01 11:29:56 UTC
FBC works well on SKL. So rename bug title.
Comment 10 Jani Nikula 2015-10-23 10:16:52 UTC
I am not sure why we keep bugs open about features that aren't enabled by default, and taint the kernel when enabled.
Comment 11 Chris Wilson 2015-10-23 10:24:28 UTC
Because the bug is still present and the feature is wip?
Comment 12 Jani Nikula 2015-10-23 11:34:22 UTC
We have tasks on JIRA to fix this stuff up. I'm not fond of duplicating the tracking. I'm closing this one and referencing it from the relevant JIRA task.
Comment 13 Gordon Jin 2015-10-23 22:52:13 UTC
I think we want to avoid dup tracking with one Jira bug and one fdo bug. But it looks fine to me to track with one Jira task and one fdo bug. Consider the bug is reported by community?

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.