mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-16 01:03:57 -04:00
[Why] On some compositors, with two monitors attached, VT terminal switch can cause a graphical issue by the following means: There are two streams, one for each monitor. Each stream has one plane current state: M1:S1->P1 M2:S2->P2 The user calls for a terminal switch and a commit is made to change both planes to linear swizzle mode. In atomic check, a new dc_state is constructed with new planes on each stream new state: M1:S1->P3 M2:S2->P4 In commit tail, each stream is committed, one at a time. The first stream (S1) updates properly, triggerring a full update and replacing the state current state: M1:S1->P3 M2:S2->P4 The update for S2 comes in, but dc detects that there is no difference between the stream and plane in the new and current states, and so triggers a fast update. The fast update does not program swizzle, so the second monitor is corrupted [How] Add a flag to dc_plane_state that forces full updates When a stream undergoes a full update, set this flag on all changed planes, then clear it on the current stream Subsequent streams will get full updates as a result Signed-off-by: David Francis <David.Francis@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Roman Li <Roman.Li@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com> Acked-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
||
---|---|---|
.. | ||
basics | ||
bios | ||
calcs | ||
core | ||
dce | ||
dce80 | ||
dce100 | ||
dce110 | ||
dce112 | ||
dce120 | ||
dcn10 | ||
dml | ||
gpio | ||
inc | ||
irq | ||
virtual | ||
dc.h | ||
dc_bios_types.h | ||
dc_ddc_types.h | ||
dc_dp_types.h | ||
dc_helper.c | ||
dc_hw_types.h | ||
dc_link.h | ||
dc_stream.h | ||
dc_types.h | ||
dm_event_log.h | ||
dm_helpers.h | ||
dm_pp_smu.h | ||
dm_services.h | ||
dm_services_types.h | ||
irq_types.h | ||
Makefile | ||
os_types.h |