From c41d9ce6948f2ca9eecc8956e811a9b493fcd8a6 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 17 May 2011 18:00:58 +0000 Subject: [PATCH] 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 --- src/add-ons/accelerants/radeon_hd/accelerant.cpp | 10 +++++++--- src/add-ons/accelerants/radeon_hd/accelerant.h | 4 +++- src/add-ons/accelerants/radeon_hd/mode.cpp | 9 +++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.cpp b/src/add-ons/accelerants/radeon_hd/accelerant.cpp index fccbf836ab..9489236be8 100644 --- a/src/add-ons/accelerants/radeon_hd/accelerant.cpp +++ b/src/add-ons/accelerants/radeon_hd/accelerant.cpp @@ -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; } diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.h b/src/add-ons/accelerants/radeon_hd/accelerant.h index 27a7f2168f..b8cb1fcf60 100644 --- a/src/add-ons/accelerants/radeon_hd/accelerant.h +++ b/src/add-ons/accelerants/radeon_hd/accelerant.h @@ -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; }; diff --git a/src/add-ons/accelerants/radeon_hd/mode.cpp b/src/add-ons/accelerants/radeon_hd/mode.cpp index 1875d8eb6e..53bb52be1e 100644 --- a/src/add-ons/accelerants/radeon_hd/mode.cpp +++ b/src/add-ons/accelerants/radeon_hd/mode.cpp @@ -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);