Lines Matching defs:pRc

266     Assert(pAlloc->fEverWritten || pAlloc->pRc->RcDesc.fFlags.SharedResource);
345 Assert(pAlloc->fEverWritten || pAlloc->pRc->RcDesc.fFlags.SharedResource);
514 Assert(fWrite || pAlloc->fEverWritten || pAlloc->pRc->RcDesc.fFlags.SharedResource);
523 Assert(pAlloc->fDirtyWrite == fWrite || pAlloc->pRc->RcDesc.fFlags.SharedResource);
531 static DECLINLINE(BOOLEAN) vboxWddmDalCheckAddRc(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_RESOURCE pRc, BOOLEAN fWrite)
534 for (UINT i = 0; i < pRc->cAllocations; ++i)
536 PVBOXWDDMDISP_ALLOCATION pDAlloc = &pRc->aAllocations[i];
612 static void vboxResourceFree(PVBOXWDDMDISP_RESOURCE pRc)
614 RTMemFree(pRc);
617 void vboxWddmResourceInit(PVBOXWDDMDISP_RESOURCE pRc, UINT cAllocs)
619 memset(pRc, 0, RT_OFFSETOF(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
620 pRc->cAllocations = cAllocs;
623 pRc->aAllocations[i].iAlloc = i;
624 pRc->aAllocations[i].pRc = pRc;
630 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)RTMemAlloc(RT_OFFSETOF(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
631 Assert(pRc);
632 if (pRc)
634 vboxWddmResourceInit(pRc, cAllocs);
635 return pRc;
686 static VOID vboxWddmDbgRcSynchMemCheck(PVBOXWDDMDISP_RESOURCE pRc)
688 if (pRc->RcDesc.enmPool != D3DDDIPOOL_SYSTEMMEM)
693 for (UINT i = 0; i < pRc->cAllocations; ++i)
696 HRESULT hr = VBoxD3DIfLockRect(pRc, i, &Rect, NULL, D3DLOCK_READONLY);
703 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[i];
708 hr = VBoxD3DIfUnlockRect(pRc, i);
1049 static PVBOXWDDMDISP_SWAPCHAIN vboxWddmSwapchainCreateForRc(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_RESOURCE pRc)
1055 for (UINT i = 0; i < pRc->cAllocations; ++i)
1057 vboxWddmSwapchainBbAddTail(pSwapchain, &pRc->aAllocations[i], FALSE);
1102 hr = VBoxD3DIfSurfGet(pAlloc->pRc, pAlloc->iAlloc, &pD3D9OldSurf);
1237 PVBOXWDDMDISP_RESOURCE pRc = pRt->pAlloc->pRc;
1238 VBoxD3DIfFillPresentParams(pParams, pRc, pSwapchain->cRTs);
1269 !!pRT->pAlloc->pRc->aAllocations[0].pD3DIf;
1278 hr = VBoxD3DIfSurfGet(pRT->pAlloc->pRc, pRT->pAlloc->iAlloc, &pD3D9OldSurf);
1605 Assert(pRt->pAlloc->pRc->RcDesc.enmPool != D3DDDIPOOL_SYSTEMMEM);
1626 static HRESULT vboxWddmSwapchainCreateIfForRc(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_RESOURCE pRc, PVBOXWDDMDISP_SWAPCHAIN *ppSwapchain)
1628 PVBOXWDDMDISP_SWAPCHAIN pSwapchain = vboxWddmSwapchainCreateForRc(pDevice, pRc);
1704 return VBoxD3DIfSurfGet(pAlloc->pRc, pAlloc->iAlloc, ppSurf);
1849 static void vboxWddmDbgRenderTargetCheck(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_RESOURCE pRc, uint32_t iNewRTFB)
1853 Assert(iNewRTFB < pRc->cAllocations);
1855 for (UINT i = 1; i < pRc->cAllocations; ++i, ++iBBuf)
1857 UINT iAlloc = (iNewRTFB + i) % pRc->cAllocations;
1859 pAlloc = &pRc->aAllocations[iAlloc];
1863 pAlloc = &pRc->aAllocations[iNewRTFB];
1867 Assert((!pAlloc->pD3DIf) == (pRc->cAllocations > 1));
1870 for (UINT i = 0; i < pRc->cAllocations; ++i)
1872 pAlloc = &pRc->aAllocations[i];
1875 Assert((!pAlloc->pD3DIf) == (pRc->cAllocations > 1));
1878 for (UINT j = i+1; j < pRc->cAllocations; ++j)
1880 PVBOXWDDMDISP_ALLOCATION pAllocJ = &pRc->aAllocations[j];
1910 hr = VBoxD3DIfSurfGet(pAlloc->pRc, pAlloc->iAlloc, &pD3D9Surf);
2356 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)hTexture;
2357 // Assert(pRc);
2359 if (pRc)
2361 VBOXVDBG_CHECK_SMSYNC(pRc);
2362 if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_TEXTURE)
2364 pD3DIfTex = (IDirect3DTexture9*)pRc->aAllocations[0].pD3DIf;
2366 VBOXVDBG_BREAK_SHARED(pRc);
2367 VBOXVDBG_DUMP_SETTEXTURE(pRc);
2369 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_CUBE_TEXTURE)
2371 pD3DIfTex = (IDirect3DCubeTexture9*)pRc->aAllocations[0].pD3DIf;
2373 VBOXVDBG_BREAK_SHARED(pRc);
2374 VBOXVDBG_DUMP_SETTEXTURE(pRc);
2376 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_VOLUME_TEXTURE)
2378 pD3DIfTex = (IDirect3DVolumeTexture9*)pRc->aAllocations[0].pD3DIf;
2380 VBOXVDBG_BREAK_SHARED(pRc);
2381 VBOXVDBG_DUMP_SETTEXTURE(pRc);
2404 pDevice->aSamplerTextures[idx] = pRc;
2514 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hIndexBuffer;
2517 if (pRc)
2519 VBOXVDBG_CHECK_SMSYNC(pRc);
2520 Assert(pRc->cAllocations == 1);
2521 pAlloc = &pRc->aAllocations[0];
3403 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hResource;
3404 if (pData->SubResourceIndex >= pRc->cAllocations)
3406 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SubResourceIndex];
3407 Assert(pData->SubResourceIndex < pRc->cAllocations);
3413 // Assert(pRc != pScreen->pRenderTargetRc || pScreen->iRenderTargetFrontBuf != pData->SubResourceIndex);
3423 if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_TEXTURE
3424 || pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_CUBE_TEXTURE
3425 || pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_SURFACE)
3427 PVBOXWDDMDISP_ALLOCATION pTexAlloc = &pRc->aAllocations[0];
3428 Assert(pData->SubResourceIndex < pRc->cAllocations);
3465 hr = pD3DIfCubeTex->UnlockRect(VBOXDISP_CUBEMAP_INDEX_TO_FACE(pRc, pData->SubResourceIndex),
3466 VBOXDISP_CUBEMAP_INDEX_TO_LEVEL(pRc, pData->SubResourceIndex));
3485 VBOXVDBG_CHECK_SMSYNC(pRc);
3507 hr = pD3DIfCubeTex->LockRect(VBOXDISP_CUBEMAP_INDEX_TO_FACE(pRc, pData->SubResourceIndex),
3508 VBOXDISP_CUBEMAP_INDEX_TO_LEVEL(pRc, pData->SubResourceIndex),
3544 Assert(pRc->RcDesc.enmPool == D3DDDIPOOL_SYSTEMMEM);
3552 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_VOLUME_TEXTURE)
3554 PVBOXWDDMDISP_ALLOCATION pTexAlloc = &pRc->aAllocations[0];
3555 Assert(pData->SubResourceIndex < pRc->cAllocations);
3597 VBOXVDBG_CHECK_SMSYNC(pRc);
3634 Assert(pRc->RcDesc.enmPool == D3DDDIPOOL_SYSTEMMEM);
3642 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_VERTEXBUFFER)
3644 Assert(pData->SubResourceIndex < pRc->cAllocations);
3660 VBOXVDBG_CHECK_SMSYNC(pRc);
3716 Assert(pRc->RcDesc.enmPool == D3DDDIPOOL_SYSTEMMEM);
3735 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_INDEXBUFFER)
3737 Assert(pData->SubResourceIndex < pRc->cAllocations);
3753 VBOXVDBG_CHECK_SMSYNC(pRc);
3809 Assert(pRc->RcDesc.enmPool == D3DDDIPOOL_SYSTEMMEM);
3830 WARN(("not implemented %d", pRc->aAllocations[0].enmD3DIfType));
3845 if (pRc->RcDesc.enmPool != D3DDDIPOOL_SYSTEMMEM)
3932 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hResource;
3935 Assert(pData->SubResourceIndex < pRc->cAllocations);
3936 if (pData->SubResourceIndex >= pRc->cAllocations)
3939 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SubResourceIndex];
3943 if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_TEXTURE
3944 || pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_CUBE_TEXTURE
3945 || pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_SURFACE)
3947 Assert(pData->SubResourceIndex < pRc->cAllocations);
3955 PVBOXWDDMDISP_ALLOCATION pTexAlloc = &pRc->aAllocations[0];
3957 switch (pRc->aAllocations[0].enmD3DIfType)
3968 hr = pD3DIfCubeTex->UnlockRect(VBOXDISP_CUBEMAP_INDEX_TO_FACE(pRc, pData->SubResourceIndex),
3969 VBOXDISP_CUBEMAP_INDEX_TO_LEVEL(pRc, pData->SubResourceIndex));
3984 VBOXVDBG_CHECK_SMSYNC(pRc);
3987 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_VOLUME_TEXTURE)
3989 Assert(pData->SubResourceIndex < pRc->cAllocations);
3997 PVBOXWDDMDISP_ALLOCATION pTexAlloc = &pRc->aAllocations[0];
4003 VBOXVDBG_CHECK_SMSYNC(pRc);
4006 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_VERTEXBUFFER)
4008 Assert(pData->SubResourceIndex < pRc->cAllocations);
4039 VBOXVDBG_CHECK_SMSYNC(pRc);
4046 else if (pRc->aAllocations[0].enmD3DIfType == VBOXDISP_D3DIFTYPE_INDEXBUFFER)
4048 Assert(pData->SubResourceIndex < pRc->cAllocations);
4079 VBOXVDBG_CHECK_SMSYNC(pRc);
4088 WARN(("Unlock unsupported %d", pRc->aAllocations[0].enmD3DIfType));
4112 if (pRc->RcDesc.enmPool != D3DDDIPOOL_SYSTEMMEM)
4258 PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(pResource->SurfCount);
4259 if (!pRc)
4268 pRc->hResource = pResource->hResource;
4269 pRc->hKMResource = NULL;
4270 pRc->pDevice = pDevice;
4271 pRc->fFlags.Value = 0;
4272 pRc->fFlags.Generic = 1;
4273 pRc->RcDesc.fFlags = pResource->Flags;
4274 pRc->RcDesc.enmFormat = pResource->Format;
4275 pRc->RcDesc.enmPool = pResource->Pool;
4276 pRc->RcDesc.enmMultisampleType = pResource->MultisampleType;
4277 pRc->RcDesc.MultisampleQuality = pResource->MultisampleQuality;
4278 pRc->RcDesc.MipLevels = pResource->MipLevels;
4279 pRc->RcDesc.Fvf = pResource->Fvf;
4280 pRc->RcDesc.VidPnSourceId = pResource->VidPnSourceId;
4281 pRc->RcDesc.RefreshRate = pResource->RefreshRate;
4282 pRc->RcDesc.enmRotation = pResource->Rotation;
4283 pRc->cAllocations = pResource->SurfCount;
4286 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];
4291 pAllocation->pRc = pRc;
4313 if (pRc->RcDesc.enmPool == D3DDDIPOOL_SYSTEMMEM)
4325 Assert(VBOXWDDMDISP_IS_TEXTURE(pRc->RcDesc.fFlags) && !pRc->RcDesc.fFlags.CubeMap); /* <- tested for textures only! */
4339 if (pRc->RcDesc.fFlags.SharedResource)
4345 if (pRc->RcDesc.fFlags.RenderTarget || pRc->RcDesc.fFlags.Primary)
4351 hr = VBoxD3DIfCreateForRc(pRc);
4365 pRc->fFlags.KmResource = bCreateKMResource;
4373 pRcInfo->fFlags = pRc->fFlags;
4374 pRcInfo->RcDesc = pRc->RcDesc;
4380 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];
4403 hr = VBoxD3DIfSurfGet(pRc, i, &pSurfIf);
4428 Assert(!pRc->fFlags.Opened);
4429 // Assert(!pRc->fFlags.KmResource);
4430 Assert(pRc->fFlags.Generic);
4436 Assert(pRc->fFlags.KmResource);
4447 Assert(!pRc->fFlags.KmResource);
4486 pRc->hKMResource = pDdiAllocate->hKMResource;
4490 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];
4506 pAllocation, pRc->hKMResource, pAllocation->hAllocation,
4525 VBOXVDBG_BREAK_SHARED(pRc);
4529 pResource->hResource = pRc;
4533 vboxResourceFree(pRc);
4547 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)hResource;
4556 for (UINT i = 0; i < pRc->cAllocations; ++i)
4558 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[i];
4565 pAlloc, pRc->hKMResource, pAlloc->hAllocation,
4588 if (pRc->fFlags.KmResource)
4591 Assert(pRc->hResource);
4592 Dealloc.hResource = pRc->hResource;
4601 Assert(!(pRc->fFlags.Opened));
4602 for (UINT j = 0; j < pRc->cAllocations; ++j)
4604 if (pRc->aAllocations[j].hAllocation)
4609 Dealloc.HandleList = &pRc->aAllocations[j].hAllocation;
4616 vboxResourceFree(pRc);
4629 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hResource;
4630 Assert(pRc);
4631 Assert(pRc->cAllocations > pData->SubResourceIndex);
4632 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SubResourceIndex];
4633 Assert(pRc->RcDesc.fFlags.RenderTarget);
4634 Assert(pRc->RcDesc.fFlags.Primary);
4716 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hSrcResource;
4717 Assert(pRc);
4718 Assert(pRc->cAllocations > pData->SrcSubResourceIndex);
4719 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SrcSubResourceIndex];
4973 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hVertexBuffer;
4976 if (pRc)
4978 VBOXVDBG_CHECK_SMSYNC(pRc);
4979 Assert(pRc->cAllocations == 1);
4980 pAlloc = &pRc->aAllocations[0];
5146 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hResource;
5147 Assert(pRc);
5149 HRESULT hr = VBoxD3DIfSurfGet(pRc, pData->SubResourceIndex, &pSurfIf);
5153 VBOXVDBG_CHECK_SMSYNC(pRc);
5162 PVBOXWDDMDISP_ALLOCATION pDAlloc = &pRc->aAllocations[pData->SubResourceIndex];
5287 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hRenderTarget;
5288 VBOXVDBG_CHECK_SMSYNC(pRc);
5289 Assert(pRc);
5290 Assert(pData->SubResourceIndex < pRc->cAllocations);
5291 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SubResourceIndex];
5306 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hZBuffer;
5309 if (pRc)
5311 VBOXVDBG_CHECK_SMSYNC(pRc);
5312 Assert(pRc->cAllocations == 1);
5313 hr = VBoxD3DIfSurfGet(pRc, 0, &pD3D9Surf);
5325 pDevice->pDepthStencilRc = pRc;
5659 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->OverlayInfo.hResource;
5660 Assert(pRc);
5661 Assert(pRc->cAllocations > pData->OverlayInfo.SubResourceIndex);
5662 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->OverlayInfo.SubResourceIndex];
5723 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->OverlayInfo.hResource;
5724 Assert(pRc);
5725 Assert(pRc->cAllocations > pData->OverlayInfo.SubResourceIndex);
5726 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->OverlayInfo.SubResourceIndex];
5767 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->hSource;
5768 Assert(pRc);
5769 Assert(pRc->cAllocations > pData->SourceIndex);
5770 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[pData->SourceIndex];
5848 PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)pData->pHandleList[i];
5849 Assert(pRc->pDevice == pDevice);
5850 if (pRc->hKMResource)
5873 PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(pData->NumAllocations);
5874 Assert(pRc);
5875 if (pRc)
5877 pRc->hResource = pData->hResource;
5878 pRc->hKMResource = pData->hKMResource;
5879 pRc->pDevice = pDevice;
5880 pRc->RcDesc.enmRotation = pData->Rotation;
5881 pRc->fFlags.Value = 0;
5882 pRc->fFlags.Opened = 1;
5883 pRc->fFlags.KmResource = 1;
5887 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];
5909 pAllocation, pRc->hKMResource, pAllocation->hAllocation,
5920 pRc->RcDesc.enmPool = D3DDDIPOOL_LOCALVIDMEM;
5921 pRc->RcDesc.enmMultisampleType = D3DDDIMULTISAMPLE_NONE;
5922 pRc->RcDesc.MultisampleQuality = 0;
5923 pRc->RcDesc.MipLevels = 0;
5924 /*pRc->RcDesc.Fvf;*/
5925 pRc->RcDesc.fFlags.SharedResource = 1;
5934 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[i];
5948 pRc->RcDesc.fFlags.Primary = 1;
5951 pRc->RcDesc.enmFormat = pAllocInfo->SurfDesc.format;
5952 pRc->RcDesc.VidPnSourceId = pAllocInfo->SurfDesc.VidPnSourceId;
5953 pRc->RcDesc.RefreshRate = pAllocInfo->SurfDesc.RefreshRate;
5973 pRc->fFlags.Value |= pRcInfo->fFlags.Value;
5974 pRc->fFlags.Generic = 1;
5975 pRc->RcDesc = pRcInfo->RcDesc;
5976 pRc->cAllocations = pData->NumAllocations;
5977 Assert(pRc->RcDesc.fFlags.SharedResource);
5979 hr = VBoxD3DIfCreateForRc(pRc);
5990 pData->hResource = pRc;
5992 vboxResourceFree(pRc);
6191 PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(2);
6192 Assert(pRc);
6193 if (pRc)
6216 hr = vboxWddmD3DDeviceCreate(pDevice, 0, pRc, &params, TRUE /*BOOL bLockable*/);
6220 vboxResourceFree(pRc);