aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2021-11-24 13:36:35 +0200
committerVille Syrjälä <ville.syrjala@linux.intel.com>2021-12-03 12:49:33 +0200
commit2e6c99f88679121eacc75196bdf6da8b0e513066 (patch)
treefdce422e9cdc2382e727daf54bb182ad4dfa9b8c /drivers/gpu/drm/i915/i915_drv.h
parentdrm/i915/fbc: Pass whole plane state to intel_fbc_min_limit() (diff)
downloadlinux-dev-2e6c99f88679121eacc75196bdf6da8b0e513066.tar.xz
linux-dev-2e6c99f88679121eacc75196bdf6da8b0e513066.zip
drm/i915/fbc: Nuke lots of crap from intel_fbc_state_cache
There's no need to store all this stuff in intel_fbc_state_cache. Just check it all against the plane/crtc states and store only what we need. Probably more should get nuked still, but this is a start. So what we'll do is: - each plane will check its own state and update its local no_fbc_reason - the per-plane no_fbc_reason (if any) then gets propagated to the cache->no_fbc_reason while doing the actual update - fbc->no_fbc_reason gets updated in the end with either the value from the cache or directly from frontbuffer tracking It's still a bit messy, but should hopefuly get cleaned up more in the future. At least now we can observe each plane's reasons for rejecting FBC now more consistently, and we don't have so mcuh redundant state store all over the place. v2: store no_fbc_reason per-plane instead of per-pipe Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211124113652.22090-4-ville.syrjala@linux.intel.com Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h20
1 files changed, 1 insertions, 19 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b52e41ada106..c2516b8bc833 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -413,26 +413,11 @@ struct intel_fbc {
* these problems.
*/
struct intel_fbc_state_cache {
- struct {
- unsigned int mode_flags;
- u32 hsw_bdw_pixel_rate;
- } crtc;
+ const char *no_fbc_reason;
struct {
- unsigned int rotation;
int src_w;
int src_h;
- bool visible;
- /*
- * Display surface base address adjustement for
- * pageflips. Note that on gen4+ this only adjusts up
- * to a tile, offsets within a tile are handled in
- * the hw itself (with the TILEOFF register).
- */
- int adjusted_x;
- int adjusted_y;
-
- u16 pixel_blend_mode;
} plane;
struct {
@@ -444,7 +429,6 @@ struct intel_fbc {
unsigned int fence_y_offset;
u16 interval;
s8 fence_id;
- bool psr2_active;
} state_cache;
/*
@@ -456,7 +440,6 @@ struct intel_fbc {
*/
struct intel_fbc_reg_params {
struct {
- enum pipe pipe;
enum i9xx_plane_id i9xx_plane;
} crtc;
@@ -472,7 +455,6 @@ struct intel_fbc {
u16 override_cfb_stride;
u16 interval;
s8 fence_id;
- bool plane_visible;
} params;
const char *no_fbc_reason;