add viewport registers; correct chipset dependent scale code; rename virtualheight to make it more consistant; spell check
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41557 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -188,7 +188,9 @@ init_registers()
|
||||
gRegister->grphYStart = EVERGREEN_GRPH_Y_START;
|
||||
gRegister->grphXEnd = EVERGREEN_GRPH_X_END;
|
||||
gRegister->grphYEnd = EVERGREEN_GRPH_Y_END;
|
||||
gRegister->grphDesktopHeight = EVERGREEN_DESKTOP_HEIGHT;
|
||||
gRegister->modeDesktopHeight = EVERGREEN_DESKTOP_HEIGHT;
|
||||
gRegister->viewportStart = EVERGREEN_VIEWPORT_START;
|
||||
gRegister->viewportSize = EVERGREEN_VIEWPORT_SIZE;
|
||||
} else if (chipset >= RADEON_R600 && chipset < RADEON_R800) {
|
||||
gRegister->regOffsetCRT0 = D1_REG_OFFSET;
|
||||
gRegister->regOffsetCRT1 = D2_REG_OFFSET;
|
||||
@@ -203,14 +205,16 @@ init_registers()
|
||||
gRegister->grphYStart = D1GRPH_Y_START;
|
||||
gRegister->grphXEnd = D1GRPH_X_END;
|
||||
gRegister->grphYEnd = D1GRPH_Y_END;
|
||||
gRegister->grphDesktopHeight = D1MODE_DESKTOP_HEIGHT;
|
||||
gRegister->modeDesktopHeight = D1MODE_DESKTOP_HEIGHT;
|
||||
gRegister->viewportStart = D1MODE_VIEWPORT_START;
|
||||
gRegister->viewportSize = D1MODE_VIEWPORT_SIZE;
|
||||
} else {
|
||||
// this really shouldn't happen unless a driver PCIID chipset is wrong
|
||||
TRACE("%s, unknown Radeon chipset: r%X\n", __func__, chipset);
|
||||
return B_ERROR;
|
||||
}
|
||||
|
||||
TRACE("%s, registers for ATI chipset r%X initilized\n", __func__, chipset);
|
||||
TRACE("%s, registers for ATI chipset r%X initialized\n", __func__, chipset);
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,9 @@ struct register_info {
|
||||
uint16_t grphYStart;
|
||||
uint16_t grphXEnd;
|
||||
uint16_t grphYEnd;
|
||||
uint16_t grphDesktopHeight;
|
||||
uint16_t modeDesktopHeight;
|
||||
uint16_t viewportStart;
|
||||
uint16_t viewportSize;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ CardFBSet(int crtNumber, display_mode *mode)
|
||||
write32(regOffset + gRegister->grphYEnd, mode->virtual_height);
|
||||
|
||||
/* D1Mode registers */
|
||||
write32(regOffset + gRegister->grphDesktopHeight, mode->virtual_height);
|
||||
write32(regOffset + gRegister->modeDesktopHeight, mode->virtual_height);
|
||||
|
||||
// update shared info
|
||||
gInfo->shared_info->bytes_per_row = bytesPerRow;
|
||||
@@ -284,12 +284,13 @@ CardModeSet(int crtNumber, display_mode *mode)
|
||||
static void
|
||||
CardModeScale(int crtNumber, display_mode *mode)
|
||||
{
|
||||
uint16_t regOffset = (crtNumber == 2) ? D2_REG_OFFSET : D1_REG_OFFSET;
|
||||
uint16_t regOffset = (crtNumber == 0)
|
||||
? gRegister->regOffsetCRT0 : gRegister->regOffsetCRT1;
|
||||
|
||||
/* D1Mode registers */
|
||||
write32(regOffset + D1MODE_VIEWPORT_SIZE,
|
||||
write32(regOffset + gRegister->viewportSize,
|
||||
mode->timing.v_display | (mode->timing.h_display << 16));
|
||||
write32(regOffset + D1MODE_VIEWPORT_START, 0);
|
||||
write32(regOffset + gRegister->viewportStart, 0);
|
||||
|
||||
/* write32(regOffset + D1MODE_EXT_OVERSCAN_LEFT_RIGHT,
|
||||
(Overscan.OverscanLeft << 16) | Overscan.OverscanRight);
|
||||
|
||||
Reference in New Issue
Block a user