📄 crtcrpro.c
字号:
break;
case FAMILY_RAGE_XL:
lpEnableData->lpAdapterName = "ATI 3D RAGE XL";
lpEnableData->ulNumberOfControllers = 1;
lpEnableData->aControllerCaps[0] = DAL_CONTROLLER_CAPS_EXPANSION |
DAL_CONTROLLER_CAPS_OVERLAY |
DAL_CONTROLLER_CAPS_VGA |
DAL_CONTROLLER_CAPS_HW_CURSOR |
//DAL_CONTROLLER_CAPS_HW_ICON |
DAL_CONTROLLER_CAPS_OVERLAY_GAMMA|
DAL_CONTROLLER_CAPS_CURSOR_BLINK |
DAL_CONTROLLER_CAPS_SHADOW_REGISTER_SET |
DAL_CONTROLLER_CAPS_AMC8BIT_PORT1 |
DAL_CONTROLLER_CAPS_AMC8BIT_PORT2 |
DAL_CONTROLLER_CAPS_AMC16BIT_PORT |
DAL_CONTROLLER_CAPS_BWCALCULATION ;
//DAL_CONTROLLER_CAPS_EXCLUSIVE_HW_CURSOR_ICON;
//any of the above features
lpEnableData->ulFunctionHooks |= GCO_HOOK_TEXT_CURSOR_BLINKING_ADJUSTMENT |
GCO_HOOK_OVERLAY_GAMMA_ADJUSTMENT |
GCO_CALCULATE_MEMORY_BANDWIDTH |
GCO_CALCULATE_HORIZONTAL_TIME|
//GCO_HOOK_ADJUST_HORIZONTAL_TIME |
GCO_HOOK_GET_HARDWARE_INFO_TABLE |
GCO_HOOK_GET_MULTIMEDIA_TABLE |
GCO_HOOK_SET_DISPLAY_OFFSET |
GCO_HOOK_RATIOMETRIC_EXPANSION_ADJUSTMENT |
GCO_HOOK_DFP_SIZE;
lpEnableData->pfnGetTextCursorBlinkingAdjustment = RageProGetTextCursorBlinkingAdjustment;
lpEnableData->pfnGetOverlayGammaAdjustment = RageProGetOverlayGammaAdjustment;
lpEnableData->pfnSetTextCursorBlinkingAdjustment = RageProSetTextCursorBlinkingAdjustment;
lpEnableData->pfnSetOverlayGammaAdjustment = RageProSetOverlayGammaAdjustment;
lpEnableData->pfnSetDisplayOffset = RageProSetDisplayOffset;
lpEnableData->pfnGetMultimediaTable = RageProGetMultimediaTable;
lpEnableData->pfnGetHardwareInfoTable = RageProGetHardwareInfoTable;
lpEnableData->pfnGetModeTiming = RageProGetModeTiming;
//Bandwidth related functions
lpEnableData->pfnGetTotalHTime = vMBW_GetTotalHTime;
lpEnableData->pfnCalculateModeBandwidth = vMBW_CalculateModeBandwidth;
lpEnableData->pfnCalculateModeHorizontalTime = vMBW_CalculateModeHTime;
lpEnableData->pfnCalculateOverlayBandwidth = vMBW_CalculateOverlayBandwidth;
lpEnableData->pfnCalculateOverlayHorizontalTime = vMBW_CalculateOverlayHTime;
lpEnableData->pfnCalculateVideoBandwidth = vMBW_CalculateVideoBandwidth;
lpEnableData->pfnCalculateVideoHorizontalTime = vMBW_CalculateVideoHTime;
lpEnableData->pfnCalculateHTimeAdjustment = vMBW_AdjustHTime;
//This is currently being hooked for XL only
lpEnableData->pfnSetDFPSize = RageProSetDFPSize;
lpHwCrtc->ulDspConfig[0] = 0;
lpHwCrtc->ulDspConfig[1] = 0;
lpHwCrtc->ulDspOnOff[0] = 0;
lpHwCrtc->ulDspOnOff[1] = 0;
lpHwCrtc->ulCurrentDeviceMap[0] =0;
lpHwCrtc->ulCurrentDeviceMap[1] =0;
ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, CONFIG_STAT0);
if ((ulTemp & CONFIG_STAT0_CfgMemType) > 0x05)
{
lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_32BIT;
lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_SDRAM_21;
}
else
lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_64BIT;
lpHwCrtc->ulGCOSupportedRegSet = RAGE_PRO_LCD_REGISTER_SET |
RAGE_PRO_CRT_REGISTER_SET |
RAGE_PRO_EXTERNAL_TVO |
EXT_MOBILITY_REGISTER_SET |
RAGE_LTPRO_REGISTER_SET;
lpHwCrtc->ulBiosInfoTableSiganture = RAGEXL_BIOS_INFO_TABLE_SIGNATURE;
lpHwCrtc->ulLCDIndexRegisterMask = MOBILITY_XL_XC_LCD_INDEX_MASK;
lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_BANDWIDTH_FIX |
RAGEPRO_CRTC_CAPS_FIFOOFF_MINUS3;
break;
case FAMILY_RAGE_XC:
lpEnableData->lpAdapterName = "ATI 3D RAGE XC";
lpEnableData->ulNumberOfControllers = 1;
lpEnableData->aControllerCaps[0] = DAL_CONTROLLER_CAPS_EXPANSION |
DAL_CONTROLLER_CAPS_OVERLAY |
DAL_CONTROLLER_CAPS_VGA |
DAL_CONTROLLER_CAPS_HW_CURSOR |
//DAL_CONTROLLER_CAPS_HW_ICON |
DAL_CONTROLLER_CAPS_OVERLAY_GAMMA |
DAL_CONTROLLER_CAPS_CURSOR_BLINK |
DAL_CONTROLLER_CAPS_AMC8BIT_PORT1 |
DAL_CONTROLLER_CAPS_AMC8BIT_PORT2 |
DAL_CONTROLLER_CAPS_AMC16BIT_PORT ;
//DAL_CONTROLLER_CAPS_EXCLUSIVE_HW_CURSOR_ICON;
//any of the above features
lpEnableData->ulFunctionHooks |= GCO_HOOK_TEXT_CURSOR_BLINKING_ADJUSTMENT |
GCO_HOOK_OVERLAY_GAMMA_ADJUSTMENT |
GCO_CALCULATE_MEMORY_BANDWIDTH |
GCO_CALCULATE_HORIZONTAL_TIME|
GCO_HOOK_ADJUST_HORIZONTAL_TIME |
GCO_HOOK_GET_HARDWARE_INFO_TABLE |
GCO_HOOK_GET_MULTIMEDIA_TABLE |
GCO_HOOK_SET_DISPLAY_OFFSET;
lpEnableData->pfnGetTextCursorBlinkingAdjustment = RageProGetTextCursorBlinkingAdjustment;
lpEnableData->pfnGetOverlayGammaAdjustment = RageProGetOverlayGammaAdjustment;
lpEnableData->pfnSetTextCursorBlinkingAdjustment = RageProSetTextCursorBlinkingAdjustment;
lpEnableData->pfnSetOverlayGammaAdjustment = RageProSetOverlayGammaAdjustment;
lpEnableData->pfnSetDisplayOffset = RageProSetDisplayOffset;
lpEnableData->pfnGetMultimediaTable = RageProGetMultimediaTable;
lpEnableData->pfnGetHardwareInfoTable = RageProGetHardwareInfoTable;
lpEnableData->pfnGetModeTiming = RageProGetModeTiming;
//Bandwidth related functions
lpEnableData->pfnGetTotalHTime = vMBW_GetTotalHTime;
lpEnableData->pfnCalculateModeBandwidth = vMBW_CalculateModeBandwidth;
lpEnableData->pfnCalculateModeHorizontalTime = vMBW_CalculateModeHTime;
lpEnableData->pfnCalculateOverlayBandwidth = vMBW_CalculateOverlayBandwidth;
lpEnableData->pfnCalculateOverlayHorizontalTime = vMBW_CalculateOverlayHTime;
lpEnableData->pfnCalculateVideoBandwidth = vMBW_CalculateVideoBandwidth;
lpEnableData->pfnCalculateVideoHorizontalTime = vMBW_CalculateVideoHTime;
lpEnableData->pfnCalculateHTimeAdjustment = vMBW_AdjustHTime;
lpHwCrtc->ulDspConfig[0] = 0;
lpHwCrtc->ulDspConfig[1] = 0;
lpHwCrtc->ulDspOnOff[0] = 0;
lpHwCrtc->ulDspOnOff[1] = 0;
lpHwCrtc->ulCurrentDeviceMap[0] =0;
lpHwCrtc->ulCurrentDeviceMap[1] =0;
ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, CONFIG_STAT0);
if ((ulTemp & CONFIG_STAT0_CfgMemType) > 0x05)
lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_32BIT;
else
lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_64BIT;
lpHwCrtc->ulGCOSupportedRegSet = RAGE_PRO_CRT_REGISTER_SET |
RAGE_PRO_EXTERNAL_TVO |
EXT_MOBILITY_REGISTER_SET |
RAGE_LTPRO_REGISTER_SET;
lpHwCrtc->ulBiosInfoTableSiganture = RAGEXC_BIOS_INFO_TABLE_SIGNATURE;
lpHwCrtc->ulLCDIndexRegisterMask = MOBILITY_XL_XC_LCD_INDEX_MASK;
break;
case FAMILY_GTB_IIC:
lpEnableData->lpAdapterName = "ATI 3D RAGE IIC";
break;
case FAMILY_GTB_PLUS:
lpEnableData->lpAdapterName = "ATI 3D RAGE II+";
break;
case FAMILY_GTB:
lpEnableData->lpAdapterName = "ATI 3D RAGE II";
break;
case FAMILY_LTG:
lpEnableData->lpAdapterName = "ATI 3D RAGE LT-G";
break;
case FAMILY_VTB_VT4:
lpEnableData->lpAdapterName = "ATI 264-VT4";
break;
case FAMILY_VTB:
case FAMILY_VTB_PLUS:
lpEnableData->lpAdapterName = "ATI 264-VT3";
break;
}
// Initialize the Bios info table to be used later
InitializeBiosInfoStructure(hGCO);
// EPR# 42399, task# 5613
// Setting of ReferenceFrequency and initialize part of the Bios info table based on BIOS FrequencyTable.
if (lpHwAsicID->ulChipFamily == FAMILY_GTC)
{
vInitializeBiosInfoStructureGTC(hGCO);
}
// Initialize panel info registers.
bGetPanelInformationTable(hGCO);
// Fix EPR# 34277
vGetLCDGCORegFlag(hGCO); // EPR 44349
if (lpHwAsicID->ulChipFamily == FAMILY_RAGE_MOBILITY)
{
lpEnableData->ulNumberOfControllers = (lpHwCrtc->ulBiosSupportedFeatures & BIOS_SUPPORTS_SINGLE_CRTC) ? 1 : 2;
if (lpHwCrtc->ulRegGCOOption & GCOREGOPTION_DISABLE_CRTC2) // EPR44349:Disable CRTC2 for Mobility in Win2K
lpEnableData->ulNumberOfControllers = 1;
if (lpEnableData->ulNumberOfControllers == 1)
{
lpEnableData->aControllerCaps[1] = 0;
lpEnableData->bEnabledAtBoot[1] = 0;
if (lpHwCrtc->ulMemoryInterface == MEMORY_INTERFACE_64BIT)
lpHwCrtc->ulGCOSupportedRegSet |= MOBILE_ENHANCED_ONE_CONTROLLER;
// EPR 049702 - Video corruption on CRT only with high resolution; Task twdal#7823
// For Mobility L - 32 bit memory interface: Filter mode table based on Bandwidth Calculation,
// unhook AdjustHTime, set Caps for SDRAM 2:1 and Bandwidth Fix
if (lpHwCrtc->ulMemoryInterface == MEMORY_INTERFACE_32BIT)
{
lpEnableData->aControllerCaps[0] |= DAL_CONTROLLER_CAPS_BWCALCULATION;
lpEnableData->ulFunctionHooks &= ~GCO_HOOK_ADJUST_HORIZONTAL_TIME;
lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_SDRAM_21;
lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_BANDWIDTH_FIX;
}
}
// If BIOS sets the cap bit to disable expansion GCO will not report
// this capability to DAL.
if(lpHwCrtc->ulBiosSupportedFeatures & BIOS_SUPPORTS_NO_EXPANSION) //Task #5232 requested by Sony.
{
lpEnableData->aControllerCaps[0] &= ~DAL_CONTROLLER_CAPS_EXPANSION;
}
}
// Get Bandwidth Total and initialize Bandwidth Available
vMBW_GetTotalBandwidth(hGCO, &lpEnableData->sAvailBandwidth);
// May need to store HDDL in the hco if required for function calls
// to the device dependant layer.
// Save Driver options
lpHwCrtc->ulDriverOptions = DDLGetDriverOptions(hDDL);
DALDEBUG((DALDBG_ENTRY_EXIT, "ATIRAGE RageProEnable: *** exit ***"));
if ((lpHwCrtc->ulGCOSupportedRegSet & RAGE_LTPRO_REGISTER_SET) &&
(lpHwCrtc->ulGCOSupportedRegSet & RAGE_PRO_LCD_REGISTER_SET) &&
(lpHwCrtc->ulGCOSupportedRegSet & RAGE_PRO_CRTC2_REGISTER_SET))
{
ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_INDEX);
ulTemp &= lpHwCrtc->ulLCDIndexRegisterMask;
MMWRITEULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_INDEX, ( ulTemp | LCD_INDEX_ConfigPanelReg));
ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_DATA);
ulTemp &= CONFIG_PANEL__PANEL_TYPE_MASK;
if(ulTemp == CONFIG_PANEL__PANEL_TYPE_DSTN)
lpHwCrtc->ucHFBOn = 1;
else
lpHwCrtc->ucHFBOn = 0;
}
return TRUE;
} // RageProEnable()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -