Changeset 27839 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Mar 30, 2010 8:31:42 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 59514
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Display/dd.c
r26562 r27839 108 108 { 109 109 #ifdef VBOX_WITH_VIDEOHWACCEL 110 vboxVHWAInit();111 112 110 memset(pHalInfo, 0, sizeof(DD_HALINFO)); 113 111 pHalInfo->dwSize = sizeof(DD_HALINFO); … … 659 657 if (lpSurfaceLocal->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) 660 658 { 661 pBody->SurfInfo.offSurface = 0;659 pBody->SurfInfo.offSurface = vboxVHWAVramOffsetFromPDEV(pDev, 0); 662 660 } 663 661 else … … 1082 1080 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_LOCK)); 1083 1081 1084 pBody->u.in.offSurface = (uint64_t)lpSurfaceGlobal->fpVidMem;1082 pBody->u.in.offSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpSurfaceGlobal->fpVidMem); 1085 1083 1086 1084 // if (lpLock->bHasRect) … … 1465 1463 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_COLORKEY_SET)); 1466 1464 1467 pBody->u.in.offSurface = (uint64_t)lpSurfaceGlobal->fpVidMem;1465 pBody->u.in.offSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpSurfaceGlobal->fpVidMem); 1468 1466 pBody->u.in.hSurf = pDesc->hHostHandle; 1469 1467 pBody->u.in.flags = vboxVHWAFromDDCKEYs(lpSetColorKey->dwFlags); … … 1508 1506 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_BLT)); 1509 1507 1510 pBody->u.in.offSrcSurface = (uint64_t)lpSrcSurfaceGlobal->fpVidMem;1511 pBody->u.in.offDstSurface = (uint64_t)lpDestSurfaceGlobal->fpVidMem;1508 pBody->u.in.offSrcSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpSrcSurfaceGlobal->fpVidMem); 1509 pBody->u.in.offDstSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpDestSurfaceGlobal->fpVidMem); 1512 1510 1513 1511 pBody->u.in.hDstSurf = pDestDesc->hHostHandle; … … 1601 1599 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_FLIP)); 1602 1600 1603 pBody->u.in.offCurrSurface = (uint64_t)lpCurrSurfaceGlobal->fpVidMem;1604 pBody->u.in.offTargSurface = (uint64_t)lpTargSurfaceGlobal->fpVidMem;1601 pBody->u.in.offCurrSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpCurrSurfaceGlobal->fpVidMem); 1602 pBody->u.in.offTargSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpTargSurfaceGlobal->fpVidMem); 1605 1603 1606 1604 pBody->u.in.hTargSurf = pTargDesc->hHostHandle; … … 1770 1768 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_SETPOSITION)); 1771 1769 1772 pBody->u.in.offSrcSurface = (uint64_t)lpSrcSurfaceGlobal->fpVidMem;1773 pBody->u.in.offDstSurface = (uint64_t)lpDestSurfaceGlobal->fpVidMem;1770 pBody->u.in.offSrcSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpSrcSurfaceGlobal->fpVidMem); 1771 pBody->u.in.offDstSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpDestSurfaceGlobal->fpVidMem); 1774 1772 1775 1773 pBody->u.in.hDstSurf = pDestDesc->hHostHandle; … … 1811 1809 memset(pBody, 0, sizeof(VBOXVHWACMD_SURF_OVERLAY_UPDATE)); 1812 1810 1813 pBody->u.in.offSrcSurface = (uint64_t)lpSrcSurfaceGlobal->fpVidMem;1811 pBody->u.in.offSrcSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpSrcSurfaceGlobal->fpVidMem); 1814 1812 1815 1813 pBody->u.in.hSrcSurf = pSrcDesc->hHostHandle; … … 1841 1839 PVBOXVHWASURFDESC pDestDesc = (PVBOXVHWASURFDESC)lpDestSurfaceGlobal->dwReserved1; 1842 1840 pBody->u.in.hDstSurf = pDestDesc->hHostHandle; 1843 pBody->u.in.offDstSurface = (uint64_t)lpDestSurfaceGlobal->fpVidMem;1841 pBody->u.in.offDstSurface = vboxVHWAVramOffsetFromPDEV(pDev, lpDestSurfaceGlobal->fpVidMem); 1844 1842 } 1845 1843 -
trunk/src/VBox/Additions/WINNT/Graphics/Display/driver.h
r25528 r27839 131 131 uint32_t numFourCC; 132 132 HGSMIOFFSET FourCC; 133 ULONG_PTR offVramBase; 133 134 BOOLEAN bVHWAEnabled; 135 BOOLEAN bVHWAInited; 134 136 } VBOXVHWAINFO; 135 137 #endif … … 297 299 298 300 #ifdef VBOX_WITH_VIDEOHWACCEL 301 302 DECLINLINE(uint64_t) vboxVHWAVramOffsetFromPDEV(PPDEV pDev, ULONG_PTR offPdev) 303 { 304 return (uint64_t)(pDev->vhwaInfo.offVramBase + offPdev); 305 } 299 306 300 307 #define VBOXDD_CHECKFLAG(_v, _f) ((_v) & (_f)) == (_f) -
trunk/src/VBox/Additions/WINNT/Graphics/Display/screen.c
r25062 r27839 154 154 Assert(!err); 155 155 #endif 156 157 #ifdef VBOX_WITH_VIDEOHWACCEL 158 if (!err) 159 vboxVHWAInit(ppdev); 160 #endif 161 156 162 /* this is not fatal, just means Video 2D acceleration will not be supported */ 157 163 err = 0; -
trunk/src/VBox/Additions/WINNT/Graphics/Display/vbox.c
r26505 r27839 1065 1065 } 1066 1066 1067 void vboxVHWAInit(PPDEV ppdev) 1068 { 1069 VHWAQUERYINFO info; 1070 DWORD returnedDataLength; 1071 DWORD err; 1072 1073 memset(&info, 0, sizeof (info)); 1074 1075 err = EngDeviceIoControl(ppdev->hDriver, 1076 IOCTL_VIDEO_VHWA_QUERY_INFO, 1077 NULL, 1078 0, 1079 &info, 1080 sizeof(info), 1081 &returnedDataLength); 1082 Assert(!err); 1083 if(!err) 1084 { 1085 ppdev->vhwaInfo.offVramBase = info.offVramBase; 1086 ppdev->vhwaInfo.bVHWAInited = TRUE; 1087 } 1088 else 1089 ppdev->vhwaInfo.bVHWAInited = FALSE; 1090 } 1091 1067 1092 # endif 1068 1093 -
trunk/src/VBox/Additions/WINNT/Graphics/Display/vhwa.c
r26667 r27839 139 139 ) 140 140 141 void vboxVHWAInit()142 {143 }144 145 void vboxVHWATerm()146 {147 }148 149 141 uint32_t vboxVHWAUnsupportedDDCAPS(uint32_t caps) 150 142 { -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp
r27286 r27839 2687 2687 break; 2688 2688 } 2689 # ifdef VBOX_WITH_VIDEOHWACCEL 2690 case IOCTL_VIDEO_VHWA_QUERY_INFO: 2691 { 2692 if (RequestPacket->OutputBufferLength < sizeof (VHWAQUERYINFO)) 2693 { 2694 dprintf(("VBoxVideo::VBoxVideoStartIO: Output buffer too small: %d needed: %d!!!\n", 2695 RequestPacket->OutputBufferLength, sizeof(VHWAQUERYINFO))); 2696 RequestPacket->StatusBlock->Status = ERROR_INSUFFICIENT_BUFFER; 2697 return FALSE; 2698 } 2699 2700 if (!pDevExt->pPrimary->u.primary.bHGSMI) 2701 { 2702 RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION; 2703 return FALSE; 2704 } 2705 2706 VHWAQUERYINFO *pInfo = (VHWAQUERYINFO *)RequestPacket->OutputBuffer; 2707 pInfo->offVramBase = (ULONG_PTR)pDevExt->ulFrameBufferOffset; 2708 RequestPacket->StatusBlock->Information = sizeof (VHWAQUERYINFO); 2709 Result = TRUE; 2710 break; 2711 } 2712 # endif 2689 2713 #endif /* VBOX_WITH_HGSMI */ 2690 2691 2714 default: 2692 2715 dprintf(("VBoxVideo::VBoxVideoStartIO: Unsupported %p, fn %d(0x%x)\n", -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/vboxioctl.h
r22548 r27839 63 63 #define IOCTL_VIDEO_HGSMI_QUERY_PORTPROCS \ 64 64 CTL_CODE(FILE_DEVICE_VIDEO, 0x434, METHOD_BUFFERED, FILE_ANY_ACCESS) 65 66 #define IOCTL_VIDEO_VHWA_QUERY_INFO \ 67 CTL_CODE(FILE_DEVICE_VIDEO, 0x435, METHOD_BUFFERED, FILE_ANY_ACCESS) 65 68 66 69 #endif /* VBOX_WITH_HGSMI */ … … 167 170 } HGSMIHANDLERDISABLE; 168 171 172 # ifdef VBOX_WITH_VIDEOHWACCEL 173 typedef struct _VHWAQUERYINFO 174 { 175 ULONG_PTR offVramBase; 176 } VHWAQUERYINFO; 177 # endif 178 169 179 #endif /* VBOX_WITH_HGSMI */ 170 180 #pragma pack()
Note:
See TracChangeset
for help on using the changeset viewer.