Changeset 44149 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Video/mp
- Timestamp:
- Dec 18, 2012 2:05:27 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 82834
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPCommon.h
r42217 r44149 33 33 void VBoxMPCmnInitCustomVideoModes(PVBOXMP_DEVEXT pExt); 34 34 VIDEO_MODE_INFORMATION* VBoxMPCmnGetCustomVideoModeInfo(ULONG ulIndex); 35 VIDEO_MODE_INFORMATION* VBoxMPCmnGetVideoModeInfo(ULONG ulIndex);36 35 37 36 #ifdef VBOX_XPDM_MINIPORT 37 VIDEO_MODE_INFORMATION* VBoxMPCmnGetVideoModeInfo(ULONG ulIndex); 38 38 VIDEO_MODE_INFORMATION* VBoxMPXpdmCurrentVideoMode(PVBOXMP_DEVEXT pExt); 39 39 ULONG VBoxMPXpdmGetVideoModesCount(); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp
r44040 r44149 24 24 #endif 25 25 #include <wchar.h> 26 #include <VBox/Hardware/VBoxVideoVBE.h> 26 27 27 28 #ifdef VBOX_WITH_WDDM … … 30 31 31 32 /* Custom video modes which are being read from registry at driver startup. */ 32 static VIDEO_MODE_INFORMATION g_CustomVideoModes[64] = { 0 }; 33 33 static VIDEO_MODE_INFORMATION g_CustomVideoModes[VBOX_VIDEO_MAX_SCREENS] = { 0 }; 34 35 #ifdef VBOX_XPDM_MINIPORT 34 36 /* Standart video modes list. 35 * Additional space is reserved for custom video modes for 64guest monitors.37 * Additional space is reserved for custom video modes for VBOX_VIDEO_MAX_SCREENS guest monitors. 36 38 * The custom video mode index is alternating and 2 indexes are reserved for the last custom mode. 37 39 */ 38 static VIDEO_MODE_INFORMATION g_VideoModes[VBOXMP_MAX_VIDEO_MODES + 64+ 2] = { 0 };40 static VIDEO_MODE_INFORMATION g_VideoModes[VBOXMP_MAX_VIDEO_MODES + VBOX_VIDEO_MAX_SCREENS + 2] = { 0 }; 39 41 40 42 /* Number of available video modes, set by VBoxMPCmnBuildVideoModesTable. */ 41 43 static uint32_t g_NumVideoModes = 0; 44 #endif 42 45 43 46 static BOOLEAN … … 210 213 } 211 214 215 #ifdef VBOX_XPDM_MINIPORT 212 216 VIDEO_MODE_INFORMATION* VBoxMPCmnGetVideoModeInfo(ULONG ulIndex) 213 217 { 214 218 return (ulIndex<RT_ELEMENTS(g_VideoModes)) ? &g_VideoModes[ulIndex] : NULL; 215 219 } 220 #endif 216 221 217 222 static bool VBoxMPVideoModesMatch(const PVIDEO_MODE_INFORMATION pMode1, const PVIDEO_MODE_INFORMATION pMode2) … … 963 968 Assert(pModes->cModes<=RT_ELEMENTS(pModes->aModes)); 964 969 970 if (!VBoxMPIsStartingUp(pExt, VidPnTargetId)) 971 { 972 /* make sure we keep the current mode to avoid mode flickering */ 973 PVBOXWDDM_ALLOC_DATA pAllocData = pExt->aSources[VidPnTargetId].pPrimaryAllocation ? 974 &pExt->aSources[VidPnTargetId].pPrimaryAllocation->AllocData 975 : &pExt->aSources[VidPnTargetId].AllocData; 976 if (pModes->cModes < RT_ELEMENTS(pModes->aModes)) 977 { 978 int foundIdx; 979 VBoxFillVidModeInfo(&pModes->aModes[pModes->cModes], pAllocData->SurfDesc.width, pAllocData->SurfDesc.height, pAllocData->SurfDesc.bpp, 1/*index*/, 0); 980 if ((foundIdx=VBoxMPFindVideoMode(pModes->aModes, pModes->cModes, &pModes->aModes[pModes->cModes]))>=0) 981 { 982 pModes->iPreferredMode = foundIdx; 983 } 984 else 985 { 986 pModes->iPreferredMode = pModes->cModes; 987 ++pModes->cModes; 988 } 989 990 #ifdef VBOX_WITH_8BPP_MODES 991 int bytesPerPixel=1; 992 #else 993 int bytesPerPixel=2; 994 #endif 995 for (; bytesPerPixel<=4; bytesPerPixel++) 996 { 997 int bpp = 8*bytesPerPixel; 998 999 if (bpp == pAllocData->SurfDesc.bpp) 1000 continue; 1001 1002 if (!VBoxMPValidateVideoModeParamsGuest(pExt, VidPnTargetId, 1003 pAllocData->SurfDesc.width, pAllocData->SurfDesc.height, 1004 bpp)) 1005 continue; 1006 1007 if (pModes->cModes >= RT_ELEMENTS(pModes->aModes)) 1008 { 1009 WARN(("ran out of video modes 2")); 1010 break; 1011 } 1012 1013 VBoxFillVidModeInfo(&pModes->aModes[pModes->cModes], 1014 pAllocData->SurfDesc.width, pAllocData->SurfDesc.height, 1015 bpp, pModes->cModes, 0); 1016 if (VBoxMPFindVideoMode(pModes->aModes, pModes->cModes, &pModes->aModes[pModes->cModes]) < 0) 1017 { 1018 ++pModes->cModes; 1019 } 1020 } 1021 } 1022 else 1023 { 1024 WARN(("ran out of video modes 1")); 1025 } 1026 } 1027 965 1028 /* Check if there's a pending display change request for this adapter */ 966 1029 VIDEO_MODE_INFORMATION specialMode;
Note:
See TracChangeset
for help on using the changeset viewer.