VirtualBox

Ignore:
Timestamp:
Jul 21, 2010 5:32:17 PM (14 years ago)
Author:
vboxsync
Message:

wddm/2d: bugfixes

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVdma.cpp

    r30970 r30973  
    525525                        {
    526526                            uint32_t * pvU32Mem = (uint32_t*)(pvMem + (ir * pAlloc->SurfDesc.pitch) + (pRect->left * bytestPP));
    527                             uint32_t cRaw = (pRect->right - pRect->left) * bytestPP;
     527                            uint32_t cRaw = pRect->right - pRect->left;
    528528                            Assert(pRect->left >= 0);
    529529                            Assert(pRect->right <= (LONG)pAlloc->SurfDesc.width);
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVhwa.cpp

    r30317 r30973  
    8484#endif
    8585
     86void vboxVhwaCommandCheckCompletion(PDEVICE_EXTENSION pDevExt)
     87{
     88    NTSTATUS Status = vboxWddmCallIsr(pDevExt);
     89    Assert(Status == STATUS_SUCCESS);
     90}
     91
    8692VBOXVHWACMD* vboxVhwaCommandCreate(PDEVICE_EXTENSION pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId, VBOXVHWACMD_TYPE enmCmd, VBOXVHWACMD_LENGTH cbCmd)
    8793{
     94    vboxVhwaCommandCheckCompletion(pDevExt);
    8895#ifdef VBOXVHWA_WITH_SHGSMI
    8996    VBOXVHWACMD* pHdr = (VBOXVHWACMD*)VBoxSHGSMICommandAlloc(&pDevExt->u.primary.hgsmiAdapterHeap,
     
    307314int vboxVhwaDisable(PDEVICE_EXTENSION pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID srcId)
    308315{
     316    vboxVhwaCommandCheckCompletion(pDevExt);
     317
    309318    int rc = VERR_GENERAL_FAILURE;
    310319    VBOXVHWACMD* pCmd;
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp

    r30970 r30973  
    890890        {
    891891            vboxSHGSMIListCat(&pDevExt->VhwaCmdList, &VhwaCmdList);
     892            bNeedDpc = TRUE;
    892893        }
    893894
     
    910911            Assert(flags == 0);
    911912#endif
     913        }
     914
     915        if (bNeedDpc)
     916        {
    912917            BOOLEAN bDpcQueued = pDevExt->u.primary.DxgkInterface.DxgkCbQueueDpc(pDevExt->u.primary.DxgkInterface.DeviceHandle);
    913918            Assert(bDpcQueued);
     
    19801985}
    19811986
    1982 #ifdef VBOXWDDM_RENDER_FROM_SHADOW
    19831987typedef struct VBOXWDDM_SHADOW_UPDATE_COMPLETION
    19841988{
     
    20252029    return Status;
    20262030}
    2027 #endif
     2031
     2032typedef struct VBOXWDDM_CALL_ISR
     2033{
     2034    PDEVICE_EXTENSION pDevExt;
     2035    ULONG MessageNumber;
     2036} VBOXWDDM_CALL_ISR, *PVBOXWDDM_CALL_ISR;
     2037
     2038static BOOLEAN vboxWddmCallIsrCb(PVOID Context)
     2039{
     2040    PVBOXWDDM_CALL_ISR pdc = (PVBOXWDDM_CALL_ISR)Context;
     2041    return DxgkDdiInterruptRoutine(pdc->pDevExt, pdc->MessageNumber);
     2042}
     2043
     2044NTSTATUS vboxWddmCallIsr(PDEVICE_EXTENSION pDevExt)
     2045{
     2046    VBOXWDDM_CALL_ISR context;
     2047    context.pDevExt = pDevExt;
     2048    context.MessageNumber = 0;
     2049    BOOLEAN bRet;
     2050    NTSTATUS Status = pDevExt->u.primary.DxgkInterface.DxgkCbSynchronizeExecution(
     2051            pDevExt->u.primary.DxgkInterface.DeviceHandle,
     2052            vboxWddmCallIsrCb,
     2053            &context,
     2054            0, /* IN ULONG MessageNumber */
     2055            &bRet);
     2056    Assert(Status == STATUS_SUCCESS);
     2057    return Status;
     2058}
    20282059
    20292060static void vboxWddmSubmitBltCmd(PDEVICE_EXTENSION pDevExt, PVBOXWDDM_CONTEXT pContext, PVBOXWDDM_DMA_PRESENT_BLT pBlt)
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.h

    r30942 r30973  
    5050
    5151NTSTATUS vboxWddmDmaCmdNotifyCompletion(PDEVICE_EXTENSION pDevExt, struct VBOXWDDM_CONTEXT *pContext, UINT SubmissionFenceId);
     52NTSTATUS vboxWddmCallIsr(PDEVICE_EXTENSION pDevExt);
    5253
    5354/* allocation */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette