On Wed, Dec 10, 2025 at 06:23:34AM +0000, Hogander, Jouni wrote:
> On Tue, 2025-12-09 at 20:26 +0200, Ville Syrjälä wrote:
> > On Thu, Dec 04, 2025 at 09:07:15AM +0200, Jouni Högander wrote:
> > > This patch set contains fixes for Selective Fetch async flip
> > > sequences. On async flip selective fetch is choosing full frame
> > > update. Also subsequent flip/update is still using full frame
> > > update
> > > to ensure plane with pending async flip is not taken in to
> > > selective
> > > fetch/update.
> > > 
> > > v4:
> > >   - rework if-else if to if-if
> > >   - added comment updated
> > >   - check crtc_state->async_flip_planes in
> > >     psr2_sel_fetch_pipe_state_supported
> > > v3:
> > >   - rebase
> > >   - fix old_crtc_state->pipe_srcsz_early_tpt
> > >   - fix using intel_atomic_get_new_crtc_state
> > > v2:
> > >   - check also crtc_state->async_flip_planes in
> > >     psr2_sel_fetch_plane_state_supported
> > > 
> > > Jouni Högander (3):
> > >   drm/i915/psr: Set plane id bit in crtc_state->async_flip_planes
> > > for
> > >     PSR
> > >   drm/i915/psr: Perform full frame update on async flip
> > >   drm/i915/psr: Allow async flip when Selective Fetch enabled
> > 
> > Series is
> > Reviewed-by: Ville Syrjälä <[email protected]>
> > 
> > When testing this I saw that we get stuck into full frame mode
> > all the time. But that seems to be a pre-existing issues caused
> > by the broken selective fetch area calculation code. I suppose
> > now that I have a laptop with a PSR2 panel I might have to dig out
> > that branch of mine where I attempted to rewrite the whoile thing
> > and figure out what was wrong with it...
> > 
> 
> What is the SW setup you are using and what kind of testing you are
> doing? Could it be related to frontbuffer tracking?

I just have Xorg running w/o a compositor and then running
'vblank_mode=0 glxgears -fullscreen'. The last tests were done
using mate/marco as the window manager, but I suppose it might be
reproducible w/o any window manager as well.

I was monitoring the full vs. partial update state by just polling
the PSR_MAN_TRACK_CTL (or whatever it's called) register. Might
actually be a decent idea to add something into the debufs status
file for that, given that the register layout is rather platform
specific.

I sprinkled a few debugs in the driver and it generally seemed to end
up in the 'if (crtc_state->psr2_su_area.y1 == -1) -> full_update'
case, which doesn't really surprise given that the code is very
confused about coordinate spaces.

-- 
Ville Syrjälä
Intel

Reply via email to