Lines Matching refs:pDev

185 static int VBoxDispInitDevice(PVBOXDISPDEV pDev, DEVMODEW *pdm, GDIINFO *pGdiInfo, DEVINFO *pDevInfo)
196 rc = VBoxDispMPGetVideoModes(pDev->hDriver, &pModesTable, &cModes);
236 pDev->mode.ulIndex = selectedMode.ModeIndex;
237 pDev->mode.ulWidth = selectedMode.VisScreenWidth;
238 pDev->mode.ulHeight = selectedMode.VisScreenHeight;
239 pDev->mode.ulBitsPerPel = selectedMode.BitsPerPlane * selectedMode.NumberOfPlanes;
240 pDev->mode.lScanlineStride = selectedMode.ScreenStride;
241 pDev->mode.flMaskR = selectedMode.RedMask;
242 pDev->mode.flMaskG = selectedMode.GreenMask;
243 pDev->mode.flMaskB = selectedMode.BlueMask;
244 pDev->mode.ulPaletteShift = (pDev->mode.ulBitsPerPel==8) ? (8-selectedMode.NumberRedBits) : 0;
257 pGdiInfo->ulHorzRes = pDev->mode.ulWidth;
258 pGdiInfo->ulVertRes = pDev->mode.ulHeight;
260 pGdiInfo->cBitsPixel = pDev->mode.ulBitsPerPel;
263 pGdiInfo->ulNumColors = (pDev->mode.ulBitsPerPel==8) ? 20 : ((ULONG)(-1));
288 pGdiInfo->ulNumPalReg = (pDev->mode.ulBitsPerPel==8) ? (1<<pDev->mode.ulBitsPerPel) : 0;
307 switch (pDev->mode.ulBitsPerPel)
361 switch (pDev->mode.ulBitsPerPel)
502 PVBOXDISPDEV pDev = NULL;
515 pDev = (PVBOXDISPDEV) EngAllocMem(FL_ZERO_MEMORY, sizeof(VBOXDISPDEV), MEM_ALLOC_TAG);
516 if (!pDev)
521 pDev->hDriver = hDriver;
527 pDev->bBitmapCacheDisabled = (ulRegistryFlags & VBOXVIDEO_REGISTRY_FLAGS_DISABLE_BITMAP_CACHE) != 0;
528 LOG(("Bitmap cache %s", pDev->bBitmapCacheDisabled? "disabled": "enabled"));
532 rc = VBoxDispInitDevice(pDev, pdm, &gdiInfo, &devInfo);
536 EngFreeMem(pDev);
541 rc = VBoxDispInitPointerCaps(pDev, &devInfo);
548 rc = VBoxDispInitPalette(pDev, &devInfo);
552 EngFreeMem(pDev);
566 return (DHPDEV)pDev;
595 PVBOXDISPDEV pDev = (PVBOXDISPDEV)dhpdev;
600 rc = VBoxDispMPSetCurrentMode(pDev->hDriver, pDev->mode.ulIndex);
604 rc = VBoxDispMPMapMemory(pDev, &pDev->memInfo);
609 memset(pDev->memInfo.FrameBufferBase, 0, pDev->mode.ulHeight * abs(pDev->mode.lScanlineStride));
612 rc = VBoxDispInitPointerAttrs(pDev);
616 rc = VBoxDispVBVAInit(pDev);
620 if (pDev->hgsmi.bSupported)
622 if (pDev->mode.ulBitsPerPel==16 || pDev->mode.ulBitsPerPel==24 || pDev->mode.ulBitsPerPel==32)
624 VBVABUFFER *pVBVA = (VBVABUFFER *)((uint8_t *)pDev->memInfo.VideoRamBase+pDev->layout.offVBVABuffer);
625 pDev->hgsmi.bSupported = VBoxVBVAEnable(&pDev->vbvaCtx, &pDev->hgsmi.ctx, pVBVA, -1);
626 LogRel(("VBoxDisp[%d]: VBVA %senabled\n", pDev->iDevice, pDev->hgsmi.bSupported? "":"not "));
631 if (pDev->hgsmi.bSupported)
633 VBoxHGSMIProcessDisplayInfo(&pDev->hgsmi.ctx, pDev->iDevice, pDev->orgDev.x, pDev->orgDev.y,
634 0, abs(pDev->mode.lScanlineStride), pDev->mode.ulWidth, pDev->mode.ulHeight,
635 (uint16_t)pDev->mode.ulBitsPerPel, VBVA_SCREEN_F_ACTIVE);
639 VBoxDispVHWAEnable(pDev);
643 if (pDev->mode.ulBitsPerPel == 8)
645 rc = VBoxDispSetPalette8BPP(pDev);
649 pDev->orgDisp.x = 0;
650 pDev->orgDisp.y = 0;
656 switch (pDev->mode.ulBitsPerPel)
680 size.cx = pDev->mode.ulWidth;
681 size.cy = pDev->mode.ulHeight;
683 pDev->surface.hBitmap = EngCreateBitmap(size, pDev->mode.lScanlineStride, iFormat,
684 pDev->mode.lScanlineStride>0 ? BMF_TOPDOWN:0,
685 pDev->memInfo.FrameBufferBase);
686 if (!pDev->surface.hBitmap)
691 pDev->surface.psoBitmap = EngLockSurface((HSURF)pDev->surface.hBitmap);
694 pDev->surface.hSurface = EngCreateDeviceSurface((DHSURF)pDev, size, iFormat);
695 if (!pDev->surface.hSurface)
706 if (!EngAssociateSurface(pDev->surface.hSurface, pDev->hDevGDI, flHooks))
713 pDev->surface.ulFormat = iFormat;
714 pDev->flDrawingHooks = flHooks;
716 LOG(("Created surface %p for physical device %p", pDev->surface.hSurface, pDev));
719 return pDev->surface.hSurface;
724 PVBOXDISPDEV pDev = (PVBOXDISPDEV)dhpdev;
727 if (pDev->surface.hSurface)
729 EngDeleteSurface(pDev->surface.hSurface);
730 pDev->surface.hSurface = NULL;
733 if (pDev->surface.psoBitmap)
735 Assert(pDev->surface.hBitmap);
736 EngUnlockSurface(pDev->surface.psoBitmap);
737 pDev->surface.psoBitmap = NULL;
740 if (pDev->surface.hBitmap)
742 EngDeleteSurface((HSURF) pDev->surface.hBitmap);
743 pDev->surface.hBitmap = NULL;
747 rc = VBoxDispMPUnmapMemory(pDev);
762 PVBOXDISPDEV pDev = (PVBOXDISPDEV)psoTarget->dhpdev;
764 if (pDev->vbvaCtx.pVBVA && (pDev->vbvaCtx.pVBVA->hostFlags.u32HostEvents & VBVA_F_MODE_ENABLED))
766 if (pDev->vbvaCtx.pVBVA->hostFlags.u32HostEvents & VBOX_VIDEO_INFO_HOST_EVENTS_F_VRDP_RESET)
768 vrdpReset(pDev);
769 pDev->vbvaCtx.pVBVA->hostFlags.u32HostEvents &= ~VBOX_VIDEO_INFO_HOST_EVENTS_F_VRDP_RESET;
772 if (pDev->vbvaCtx.pVBVA->hostFlags.u32HostEvents & VBVA_F_MODE_VRDP)
800 PVBOXDISPDEV pDev = (PVBOXDISPDEV) dhpdev;
811 VBoxDispVHWADisable(pDev);
815 if (pDev->hgsmi.bSupported)
817 VBoxVBVADisable(&pDev->vbvaCtx, &pDev->hgsmi.ctx, -1);
821 rc = VBoxDispMPResetDevice(pDev->hDriver);
828 /* switch device to previous pDev mode */
829 rc = VBoxDispMPSetCurrentMode(pDev->hDriver, pDev->mode.ulIndex);
833 if (pDev->hgsmi.bSupported)
835 if (pDev->mode.ulBitsPerPel==16 || pDev->mode.ulBitsPerPel==24 || pDev->mode.ulBitsPerPel==32)
837 VBVABUFFER *pVBVA = (VBVABUFFER *)((uint8_t *)pDev->memInfo.VideoRamBase+pDev->layout.offVBVABuffer);
838 pDev->hgsmi.bSupported = VBoxVBVAEnable(&pDev->vbvaCtx, &pDev->hgsmi.ctx, pVBVA, -1);
839 LogRel(("VBoxDisp[%d]: VBVA %senabled\n", pDev->iDevice, pDev->hgsmi.bSupported? "":"not "));
844 if (pDev->hgsmi.bSupported)
846 VBoxHGSMIProcessDisplayInfo(&pDev->hgsmi.ctx, pDev->iDevice, pDev->orgDev.x, pDev->orgDev.y,
847 0, abs(pDev->mode.lScanlineStride), pDev->mode.ulWidth, pDev->mode.ulHeight,
848 (uint16_t)pDev->mode.ulBitsPerPel, VBVA_SCREEN_F_ACTIVE);
853 VBoxDispVHWAEnable(pDev);
857 if (!EngAssociateSurface((HSURF)pDev->surface.hBitmap, pDev->hDevGDI, 0))
864 if (!EngAssociateSurface(pDev->surface.hSurface, pDev->hDevGDI, pDev->flDrawingHooks))
877 PVBOXDISPDEV pDev = (PVBOXDISPDEV)pso->dhpdev;
935 if (pDev && pDev->vbvaCtx.pVBVA && pDev->vbvaCtx.pVBVA->hostFlags.u32HostEvents&VBVA_F_MODE_VRDP)
965 rc = VBoxDispMPSetVisibleRegion(pDev->hDriver, (PRTRECT)&lpRgnData->Buffer[0], cRects);
990 rc = VBoxDispMPSetVisibleRegion(pDev->hDriver, pRTRect, cRects);
1018 DWORD dwrc = EngDeviceIoControl(pDev->hDriver, IOCTL_VIDEO_VBOX_ISANYX, NULL, 0,
1042 #define FB_OFFSET(_dev, _x, _y) ((_y)*pDev->mode.lScanlineStride) + ((_x)*((pDev->mode.ulBitsPerPel+1)/8))
1046 PVBOXDISPDEV pDev = (PVBOXDISPDEV)pso->dhpdev;
1049 pDev->memInfo.FrameBufferBase = ((BYTE*)pDev->memInfo.VideoRamBase) + pDev->layout.offFramebuffer
1050 - FB_OFFSET(pDev, x, y);
1052 pDev->orgDisp.x = x;
1053 pDev->orgDisp.y = y;
1062 PVBOXDISPDEV pDev = (PVBOXDISPDEV)pso->dhpdev;
1073 LOG(("DN_DEVICE_ORIGIN (pso=%p, pDev[%d]=%p) old=%d,%d new=%d,%d",
1074 pso, pDev->iDevice, pDev, pDev->orgDev.x, pDev->orgDev.y, pOrg->x, pOrg->y));
1075 if (pDev->orgDev.x!=pOrg->x || pDev->orgDev.y!=pOrg->y)
1077 pDev->orgDev = *pOrg;
1080 VBoxHGSMIProcessDisplayInfo(&pDev->hgsmi.ctx, pDev->iDevice, pDev->orgDev.x, pDev->orgDev.y,
1081 0, abs(pDev->mode.lScanlineStride),
1082 pDev->mode.ulWidth, pDev->mode.ulHeight,
1083 (uint16_t)pDev->mode.ulBitsPerPel, VBVA_SCREEN_F_ACTIVE);
1096 LOG(("DN_DRAWING_BEGIN (pso=%p, pDev[%d]=%p)", pso, pDev->iDevice, pDev));