On Tuesday, August 30th, 2022 at 16:42, Alex Deucher <alexdeucher@xxxxxxxxx> wrote: > > Hm, can you elaborate on the difference between "immediate flip" (as in > > UNP_FLIP_CONTROL) and GRPH_SURFACE_UPDATE_H_RETRACE_EN? What are their > > relationship with KMS's concept of "async flips"? > > The display surface registers are double buffered. The default is for > the swap to take place during vblank. However, you can select > different behavior via the GRPH_FLIP_CONTROL register. On DCE10 and > older you can set GRPH_SURFACE_UPDATE_H_RETRACE_EN to select swapping > at hsync. On DCE11 and newer, you can set > GRPH_SURFACE_UPDATE_IMMEDIATE_EN which causes the swap to immediately > (IIRC as soon as GRPH_PRIMARY_SURFACE_ADDRESS is written). > > > Also you said earlier: > > > > > We don't use hsync flips at all, even in non-atomic, as far as I recall. > > > > Is "hsync flip" controlled by GRPH_SURFACE_UPDATE_H_RETRACE_EN, or is it > > something else entirely? > > Yes, GRPH_SURFACE_UPDATE_H_RETRACE_EN. We use hsync swaps on older > DCE parts that don't support immediate swaps. Ah, that makes a lot of sense. Thanks for the explanation!