mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-19 13:22:03 +00:00
[Why] If the cursor pos passed from DM is less than the plane_state->dst_rect top left corner then the unsigned cursor pos wraps around to a large positive number since cursor pos is a u32. There was an attempt to guard against this in hubp1_cursor_set_position by checking the src_x_offset and src_y_offset and offseting the cursor hotspot within hubp1_cursor_set_position. However, the cursor position itself is still being programmed incorrectly as a large value. This manifests itself visually as the cursor disappearing or containing strange artifacts near the middle of the screen on raven. [How] Don't subtract the destination rect top left corner from the pos but add it to the hotspot instead. This happens before the pos gets passed into hubp1_cursor_set_position. This achieves the same result but avoids the subtraction wrap around. With this fix the original cursor programming logic can be used again. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com> Acked-by: Murton Liu <Murton.Liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
||
---|---|---|
.. | ||
dcn10_clk_mgr.c | ||
dcn10_clk_mgr.h | ||
dcn10_cm_common.c | ||
dcn10_cm_common.h | ||
dcn10_dpp.c | ||
dcn10_dpp.h | ||
dcn10_dpp_cm.c | ||
dcn10_dpp_dscl.c | ||
dcn10_hubbub.c | ||
dcn10_hubbub.h | ||
dcn10_hubp.c | ||
dcn10_hubp.h | ||
dcn10_hw_sequencer.c | ||
dcn10_hw_sequencer.h | ||
dcn10_hw_sequencer_debug.c | ||
dcn10_ipp.c | ||
dcn10_ipp.h | ||
dcn10_link_encoder.c | ||
dcn10_link_encoder.h | ||
dcn10_mpc.c | ||
dcn10_mpc.h | ||
dcn10_opp.c | ||
dcn10_opp.h | ||
dcn10_optc.c | ||
dcn10_optc.h | ||
dcn10_resource.c | ||
dcn10_resource.h | ||
dcn10_stream_encoder.c | ||
dcn10_stream_encoder.h | ||
Makefile |