On Wed, 2025-12-10 at 08:42 +0200, Ville Syrjälä wrote:
> 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 instrumented psr2_man_trk_ctl_calc to dump out if it ends up to full
frame update or selective update. I couldn't see it being stucked to
full update. "vblank_mode=0 glxgears -fullscreen" is continuously
triggering full frame updates. When it exits there is one selective
update.

Please note that PSR2_MAN_TRK_CTL is left as it is until next
psr2_man_trk_ctl_calc/intel_psr2_program_trans_man_trk_ctl. I.e. if
selection logic is once ending up to full frame update and after that
there are only frontbuffer flushes -> PSR2_MAN_TRK_CTL will stick into
"full frame update". Frontbuffer flushes are just
deactivating/activating PSR2 without touching PSR2_MAN_TRK_CTL.

BR,
Jouni Högander

> 
> 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.
> 

Reply via email to