mirror of
https://github.com/edk2-porting/edk2-rk3588.git
synced 2025-12-18 11:39:51 +08:00
Vop2Dxe: Fix up horizontal resolution alignment
RK3588 requires HActive to be 4-pixel aligned. This fixes modes such as 1366x768 (rounded up to 1368), which would otherwise appear fuzzy. Signed-off-by: Mario Bălănică <mariobalanica02@gmail.com>
This commit is contained in:
@@ -2534,6 +2534,38 @@ Vop2DscEnable (
|
||||
));
|
||||
}
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
Vop2ModeFixup (
|
||||
OUT DISPLAY_STATE *DisplayState
|
||||
)
|
||||
{
|
||||
CONNECTOR_STATE *ConnectorState = &DisplayState->ConnectorState;
|
||||
CRTC_STATE *CrtcState = &DisplayState->CrtcState;
|
||||
DRM_DISPLAY_MODE *Mode = &ConnectorState->DisplayMode;
|
||||
|
||||
/*
|
||||
* HActive of the video timing must be 4-pixel aligned.
|
||||
*/
|
||||
if (Mode->CrtcHDisplay % 4 != 0) {
|
||||
UINT32 OldHDisplay = Mode->CrtcHDisplay;
|
||||
UINT32 AlignOffset = 4 - (Mode->CrtcHDisplay % 4);
|
||||
|
||||
Mode->CrtcHDisplay += AlignOffset;
|
||||
Mode->CrtcHSyncStart += AlignOffset;
|
||||
Mode->CrtcHSyncEnd += AlignOffset;
|
||||
Mode->CrtcHTotal += AlignOffset;
|
||||
|
||||
DEBUG ((
|
||||
DEBUG_WARN,
|
||||
"WARN: VP%d: HActive must be 4-pixel aligned: %u -> %u\n",
|
||||
CrtcState->CrtcID,
|
||||
OldHDisplay,
|
||||
Mode->CrtcHDisplay
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
Vop2Init (
|
||||
IN ROCKCHIP_CRTC_PROTOCOL *This,
|
||||
@@ -2554,6 +2586,8 @@ Vop2Init (
|
||||
BOOLEAN YUVOverlay;
|
||||
UINT64 DclkRate;
|
||||
|
||||
Vop2ModeFixup (DisplayState);
|
||||
|
||||
HSyncLen = Mode->CrtcHSyncEnd - Mode->CrtcHSyncStart;
|
||||
HDisplay = Mode->CrtcHDisplay;
|
||||
HTotal = Mode->CrtcHTotal;
|
||||
|
||||
Reference in New Issue
Block a user