Changeset 22136 in vbox
- Timestamp:
- Aug 10, 2009 2:05:23 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 50904
- Location:
- trunk/src/VBox
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Display/dd.c
r22099 r22136 1585 1585 ASMAtomicIncU32(&pCurrDesc->cPendingFlipsCurr); 1586 1586 ASMAtomicIncU32(&pTargDesc->cPendingFlipsTarg); 1587 #ifdef DEBUG 1588 ASMAtomicIncU32(&pCurrDesc->cFlipsCurr); 1589 ASMAtomicIncU32(&pTargDesc->cFlipsTarg); 1590 #endif 1587 1591 1588 1592 if(pTargDesc->UpdatedMemRegion.bValid) -
trunk/src/VBox/Additions/WINNT/Graphics/Display/driver.h
r22028 r22136 108 108 volatile uint32_t cPendingFlipsCurr; 109 109 volatile uint32_t cPendingFlipsTarg; 110 #ifdef DEBUG 111 volatile uint64_t cFlipsCurr; 112 volatile uint64_t cFlipsTarg; 113 #endif 110 114 // uint32_t cBitsPerPixel; 111 115 bool bHidden; … … 200 204 201 205 HVBOXVIDEOHGSMI hMpHGSMI; /* context handler passed to miniport HGSMI callbacks */ 206 PFNVBOXVIDEOHGSMIPOSTCOMMAND pfnHGSMIGHCommandPost; /* called to post the guest command (offset) to the host */ 202 207 PFNVBOXVIDEOHGSMICOMPLETION pfnHGSMICommandComplete; /* called to complete the command we receive from the miniport */ 203 208 PFNVBOXVIDEOHGSMICOMMANDS pfnHGSMIRequestCommands; /* called to requests the commands posted to us from the host */ … … 225 230 226 231 #ifdef VBOX_WITH_HGSMI 227 #define VBE_DISPI_IOPORT_INDEX 0x01CE228 #define VBE_DISPI_IOPORT_DATA 0x01CF229 #define VBE_DISPI_INDEX_VBVA_GUEST 0xc232 //#define VBE_DISPI_IOPORT_INDEX 0x01CE 233 //#define VBE_DISPI_IOPORT_DATA 0x01CF 234 //#define VBE_DISPI_INDEX_VBVA_GUEST 0xc 230 235 #endif /* VBOX_WITH_HGSMI */ 231 236 -
trunk/src/VBox/Additions/WINNT/Graphics/Display/screen.c
r20961 r22136 123 123 124 124 ppdev->hMpHGSMI = Callbacks.hContext; 125 ppdev->pfnHGSMIGHCommandPost = Callbacks.pfnHGSMIGHCommandPost; 125 126 ppdev->pfnHGSMICommandComplete = Callbacks.pfnCompletionHandler; 126 127 ppdev->pfnHGSMIRequestCommands = Callbacks.pfnRequestCommandsHandler; -
trunk/src/VBox/Additions/WINNT/Graphics/Display/vbox.c
r21939 r22136 345 345 HGSMIOFFSET offBuffer = HGSMIHeapBufferOffset (&ppdev->hgsmiDisplayHeap, p); 346 346 347 ASMOutU16 (VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_VBVA_GUEST); 348 ASMOutU32 (VBE_DISPI_IOPORT_DATA, offBuffer); 347 ppdev->pfnHGSMIGHCommandPost(ppdev->hMpHGSMI, offBuffer); 348 // ASMOutU16 (VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_VBVA_GUEST); 349 // ASMOutU32 (VBE_DISPI_IOPORT_DATA, offBuffer); 349 350 } 350 351 … … 757 758 default: 758 759 { 760 Assert(0); 759 761 vboxVBVAHostCommandComplete(ppdev, pCmd); 760 762 } … … 764 766 void vboxVHWACommandCheckHostCmds(PPDEV ppdev) 765 767 { 766 VBVAHOSTCMD * pCmd ;768 VBVAHOSTCMD * pCmd, * pNextCmd; 767 769 int rc = ppdev->pfnHGSMIRequestCommands(ppdev->hMpHGSMI, HGSMI_CH_VBVA, &pCmd); 770 Assert(RT_SUCCESS(rc)); 768 771 if(RT_SUCCESS(rc)) 769 772 { 770 for(; pCmd; pCmd = pCmd->u.pNext) 771 { 773 for(;pCmd; pCmd = pNextCmd) 774 { 775 pNextCmd = pCmd->u.pNext; 772 776 vboxVBVAHostCommandHanlder(ppdev, pCmd); 773 777 } … … 784 788 pCmd->Flags |= VBOXVHWACMD_FLAG_GH_ASYNCH_EVENT; 785 789 vboxHGSMIBufferSubmit (ppdev, pCmd); 786 790 //TODO: dbg 791 #if 0 787 792 if(!(ASMAtomicReadU32((volatile uint32_t *)&pCmd->Flags) & VBOXVHWACMD_FLAG_HG_ASYNCH)) 788 793 { … … 790 795 EngSetEvent(pEvent); 791 796 } 797 #endif 792 798 } 793 799 … … 823 829 824 830 vboxHGSMIBufferSubmit (ppdev, pCmd); 825 831 //TODO: dbg 832 #if 0 826 833 if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH)) 827 834 { … … 829 836 pfnCompletion(ppdev, pCmd, pContext); 830 837 } 838 #endif 831 839 } 832 840 … … 844 852 845 853 vboxHGSMIBufferSubmit (ppdev, pCmd); 846 854 //TODO: dbg 855 #if 0 847 856 if(!(pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH) 848 857 || pCmd->Flags & VBOXVHWACMD_FLAG_HG_ASYNCH_RETURNED) … … 851 860 vboxVHWAFreeCmdCompletion(ppdev, pCmd, NULL); 852 861 } 862 #endif 853 863 } 854 864 -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp
r21939 r22136 1157 1157 dprintf(("VBoxVideo::VBoxVideoFindAdapter\n")); 1158 1158 1159 VideoPortCreateSpinLock(HwDeviceExtension, &((PDEVICE_EXTENSION)HwDeviceExtension)->u.primary.pGHRWLock); 1160 1159 1161 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ID); 1160 1162 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ID2); … … 1249 1251 * with old guest additions. 1250 1252 */ 1251 if (VBoxHGSMIIsSupported ( ))1253 if (VBoxHGSMIIsSupported ((PDEVICE_EXTENSION)HwDeviceExtension)) 1252 1254 { 1253 1255 LogRel(("VBoxVideo: using HGSMI\n")); … … 1769 1771 { 1770 1772 /* The display driver must have prepared the monitor information. */ 1773 #ifndef VBOX_WITH_HGSMI 1771 1774 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_VBOX_VIDEO); 1772 1775 VideoPortWritePortUlong((PULONG)VBE_DISPI_IOPORT_DATA, VBOX_VIDEO_INTERPRET_DISPLAY_MEMORY_BASE + pDevExt->iDevice); 1776 #else 1777 VBoxVideoHostWriteUlong(((PDEVICE_EXTENSION)HwDeviceExtension)->pPrimary, VBE_DISPI_INDEX_VBOX_VIDEO, VBOX_VIDEO_INTERPRET_DISPLAY_MEMORY_BASE + pDevExt->iDevice); 1778 #endif 1773 1779 } 1774 1780 else … … 1945 1951 1946 1952 pInfo->hContext = pDevExt; 1953 pInfo->pfnHGSMIGHCommandPost = hgsmiGHCommandPost; 1947 1954 pInfo->pfnCompletionHandler = hgsmiHostCmdComplete; 1948 1955 pInfo->pfnRequestCommandsHandler = hgsmiHostCmdRequest; … … 2031 2038 } 2032 2039 2040 #ifndef VBOX_WITH_HGSMI 2033 2041 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ENABLE); 2034 2042 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_DISABLED); 2043 #else 2044 VBoxVideoHostWriteUshort(((PDEVICE_EXTENSION)HwDeviceExtension)->pPrimary, VBE_DISPI_INDEX_ENABLE, VBE_DISPI_DISABLED); 2045 #endif 2035 2046 2036 2047 if (pDevExt->u.primary.pvReqFlush != NULL) … … 2134 2145 2135 2146 /* set the mode characteristics */ 2147 #ifndef VBOX_WITH_HGSMI 2136 2148 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_XRES); 2137 2149 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->VisScreenWidth); … … 2144 2156 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED); 2145 2157 /** @todo read from the port to see if the mode switch was successful */ 2158 #else 2159 VBoxVideoHostWriteUshort(DeviceExtension->pPrimary, VBE_DISPI_INDEX_XRES, (USHORT)ModeInfo->VisScreenWidth); 2160 VBoxVideoHostWriteUshort(DeviceExtension->pPrimary, VBE_DISPI_INDEX_YRES, (USHORT)ModeInfo->VisScreenHeight); 2161 VBoxVideoHostWriteUshort(DeviceExtension->pPrimary, VBE_DISPI_INDEX_BPP, (USHORT)ModeInfo->BitsPerPlane); 2162 VBoxVideoHostWriteUshort(DeviceExtension->pPrimary, VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED); 2163 #endif 2146 2164 2147 2165 /* Tell the host that we now support graphics in the additions. -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h
r21609 r22136 116 116 #ifdef VBOX_WITH_HGSMI 117 117 volatile HGSMIHOSTFLAGS * pHostFlags; /* HGSMI host flags */ 118 bool bHostCmdProcessing;118 volatile bool bHostCmdProcessing; 119 119 PSPIN_LOCK pSynchLock; 120 120 #endif … … 140 140 141 141 HGSMIHEAP hgsmiAdapterHeap; 142 143 PSPIN_LOCK pGHRWLock; /* lock for making guest->host read/writes atomic */ 142 144 #endif /* VBOX_WITH_HGSMI */ 143 145 } primary; … … 253 255 254 256 #ifdef VBOX_WITH_HGSMI 255 BOOLEAN VBoxHGSMIIsSupported (void); 257 258 DECLINLINE(void) VBoxVideoHostWriteUlongLocked(USHORT dataType, ULONG data) 259 { 260 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, dataType); 261 VideoPortWritePortUlong((PULONG)VBE_DISPI_IOPORT_DATA, data); 262 } 263 264 DECLINLINE(void) VBoxVideoHostWriteUshortLocked(USHORT dataType, USHORT data) 265 { 266 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, dataType); 267 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, data); 268 } 269 270 DECLINLINE(ULONG) VBoxVideoHostReadUlongLocked (USHORT dataType) 271 { 272 VideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, dataType); 273 return VideoPortReadPortUlong((PULONG)VBE_DISPI_IOPORT_DATA); 274 } 275 276 DECLINLINE(void) VBoxVideoHostWriteUlong(PDEVICE_EXTENSION PrimaryExtension, USHORT dataType, ULONG data) 277 { 278 UCHAR oldIrql; 279 VideoPortAcquireSpinLock(PrimaryExtension, 280 PrimaryExtension->u.primary.pGHRWLock, 281 &oldIrql); 282 VBoxVideoHostWriteUlongLocked(dataType, data); 283 VideoPortReleaseSpinLock(PrimaryExtension, 284 PrimaryExtension->u.primary.pGHRWLock, 285 oldIrql); 286 } 287 288 DECLINLINE(void) VBoxVideoHostWriteUshort(PDEVICE_EXTENSION PrimaryExtension, USHORT dataType, USHORT data) 289 { 290 UCHAR oldIrql; 291 VideoPortAcquireSpinLock(PrimaryExtension, 292 PrimaryExtension->u.primary.pGHRWLock, 293 &oldIrql); 294 VBoxVideoHostWriteUshortLocked(dataType, data); 295 VideoPortReleaseSpinLock(PrimaryExtension, 296 PrimaryExtension->u.primary.pGHRWLock, 297 oldIrql); 298 } 299 300 DECLINLINE(ULONG) VBoxVideoHostReadUlong(PDEVICE_EXTENSION PrimaryExtension, USHORT dataType) 301 { 302 ULONG data; 303 UCHAR oldIrql; 304 VideoPortAcquireSpinLock(PrimaryExtension, 305 PrimaryExtension->u.primary.pGHRWLock, 306 &oldIrql); 307 data = VBoxVideoHostReadUlongLocked(dataType); 308 VideoPortReleaseSpinLock(PrimaryExtension, 309 PrimaryExtension->u.primary.pGHRWLock, 310 oldIrql); 311 return data; 312 } 313 314 BOOLEAN VBoxHGSMIIsSupported (PDEVICE_EXTENSION PrimaryExtension); 256 315 257 316 VOID VBoxSetupDisplaysHGSMI (PDEVICE_EXTENSION PrimaryExtension, … … 261 320 PVIDEO_POINTER_ATTRIBUTES pointerAttr, 262 321 uint32_t cbLength); 263 322 DECLCALLBACK(void) hgsmiGHCommandPost(HVBOXVIDEOHGSMI hHGSMI, HGSMIOFFSET offCmd); 264 323 DECLCALLBACK(void) hgsmiHostCmdComplete (HVBOXVIDEOHGSMI hHGSMI, struct _VBVAHOSTCMD * pCmd); 265 324 DECLCALLBACK(int) hgsmiHostCmdRequest (HVBOXVIDEOHGSMI hHGSMI, uint8_t u8Channel, struct _VBVAHOSTCMD ** ppCmd); -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/vboxioctl.h
r21227 r22136 130 130 { 131 131 HVBOXVIDEOHGSMI hContext; 132 PFNVBOXVIDEOHGSMIPOSTCOMMAND pfnHGSMIGHCommandPost; 132 133 PFNVBOXVIDEOHGSMICOMPLETION pfnCompletionHandler; 133 134 PFNVBOXVIDEOHGSMICOMMANDS pfnRequestCommandsHandler; -
trunk/src/VBox/Frontends/VirtualBox/include/VBoxFrameBuffer.h
r22107 r22136 1062 1062 1063 1063 class VBoxGLWidget *mWidget; 1064 1064 1065 protected: 1065 1066 #if 0 … … 1069 1070 1070 1071 friend class VBoxVHWASurfList; 1071 1072 #ifdef DEBUG 1073 public: 1074 uint64_t cFlipsCurr; 1075 uint64_t cFlipsTarg; 1076 #endif 1072 1077 }; 1073 1078
Note:
See TracChangeset
for help on using the changeset viewer.