- Timestamp:
- Mar 16, 2022 10:33:19 AM (3 years ago)
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp
r94264 r94265 2578 2578 { 2579 2579 #ifdef VMSVGA3D_DX 2580 DEBUG_BREAKPOINT_TEST(); 2581 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2582 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 2583 return vmsvga3dDXReadbackQuery(pThisCC, idDXContext); 2580 //DEBUG_BREAKPOINT_TEST(); 2581 RT_NOREF(cbCmd); 2582 return vmsvga3dDXReadbackQuery(pThisCC, idDXContext, pCmd); 2584 2583 #else 2585 2584 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 2992 2991 #ifdef VMSVGA3D_DX 2993 2992 DEBUG_BREAKPOINT_TEST(); 2994 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2995 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 2996 return vmsvga3dDXDestroyBlendState(pThisCC, idDXContext); 2993 RT_NOREF(cbCmd); 2994 return vmsvga3dDXDestroyBlendState(pThisCC, idDXContext, pCmd); 2997 2995 #else 2998 2996 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3021 3019 #ifdef VMSVGA3D_DX 3022 3020 DEBUG_BREAKPOINT_TEST(); 3023 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3024 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3025 return vmsvga3dDXDestroyDepthStencilState(pThisCC, idDXContext); 3021 RT_NOREF(cbCmd); 3022 return vmsvga3dDXDestroyDepthStencilState(pThisCC, idDXContext, pCmd); 3026 3023 #else 3027 3024 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3050 3047 #ifdef VMSVGA3D_DX 3051 3048 DEBUG_BREAKPOINT_TEST(); 3052 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3053 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3054 return vmsvga3dDXDestroyRasterizerState(pThisCC, idDXContext); 3049 RT_NOREF(cbCmd); 3050 return vmsvga3dDXDestroyRasterizerState(pThisCC, idDXContext, pCmd); 3055 3051 #else 3056 3052 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3079 3075 #ifdef VMSVGA3D_DX 3080 3076 DEBUG_BREAKPOINT_TEST(); 3081 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3082 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3083 return vmsvga3dDXDestroySamplerState(pThisCC, idDXContext); 3077 RT_NOREF(cbCmd); 3078 return vmsvga3dDXDestroySamplerState(pThisCC, idDXContext, pCmd); 3084 3079 #else 3085 3080 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3152 3147 { 3153 3148 #ifdef VMSVGA3D_DX 3154 DEBUG_BREAKPOINT_TEST();3149 //DEBUG_BREAKPOINT_TEST(); 3155 3150 RT_NOREF(cbCmd); 3156 3151 return vmsvga3dDXDestroyStreamOutput(pThisCC, idDXContext, pCmd); … … 3211 3206 { 3212 3207 #ifdef VMSVGA3D_DX 3213 DEBUG_BREAKPOINT_TEST(); 3214 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3215 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3216 return vmsvga3dDXBufferCopy(pThisCC, idDXContext); 3208 //DEBUG_BREAKPOINT_TEST(); 3209 RT_NOREF(idDXContext, cbCmd); 3210 3211 int rc; 3212 3213 /** @todo Backend should o the copy is both buffers have a hardware resource. */ 3214 SVGA3dSurfaceImageId imageBufferSrc; 3215 imageBufferSrc.sid = pCmd->src; 3216 imageBufferSrc.face = 0; 3217 imageBufferSrc.mipmap = 0; 3218 3219 SVGA3dSurfaceImageId imageBufferDest; 3220 imageBufferDest.sid = pCmd->dest; 3221 imageBufferDest.face = 0; 3222 imageBufferDest.mipmap = 0; 3223 3224 /* 3225 * Map the source buffer. 3226 */ 3227 VMSVGA3D_MAPPED_SURFACE mapBufferSrc; 3228 rc = vmsvga3dSurfaceMap(pThisCC, &imageBufferSrc, NULL, VMSVGA3D_SURFACE_MAP_READ, &mapBufferSrc); 3229 if (RT_SUCCESS(rc)) 3230 { 3231 /* 3232 * Map the destination buffer. 3233 */ 3234 VMSVGA3D_MAPPED_SURFACE mapBufferDest; 3235 rc = vmsvga3dSurfaceMap(pThisCC, &imageBufferDest, NULL, VMSVGA3D_SURFACE_MAP_WRITE, &mapBufferDest); 3236 if (RT_SUCCESS(rc)) 3237 { 3238 /* 3239 * Copy the source buffer to the destination. 3240 */ 3241 uint8_t const *pu8BufferSrc = (uint8_t *)mapBufferSrc.pvData; 3242 uint32_t const cbBufferSrc = mapBufferSrc.box.w * mapBufferSrc.cbPixel; 3243 3244 uint8_t *pu8BufferDest = (uint8_t *)mapBufferDest.pvData; 3245 uint32_t const cbBufferDest = mapBufferDest.box.w * mapBufferDest.cbPixel; 3246 3247 if ( pCmd->srcX < cbBufferSrc 3248 && pCmd->width <= cbBufferSrc- pCmd->srcX 3249 && pCmd->destX < cbBufferDest 3250 && pCmd->width <= cbBufferDest - pCmd->destX) 3251 { 3252 RT_UNTRUSTED_VALIDATED_FENCE(); 3253 3254 memcpy(&pu8BufferDest[pCmd->destX], &pu8BufferSrc[pCmd->srcX], pCmd->width); 3255 } 3256 else 3257 ASSERT_GUEST_FAILED_STMT(rc = VERR_INVALID_PARAMETER); 3258 3259 vmsvga3dSurfaceUnmap(pThisCC, &imageBufferDest, &mapBufferDest, true); 3260 } 3261 3262 vmsvga3dSurfaceUnmap(pThisCC, &imageBufferSrc, &mapBufferSrc, false); 3263 } 3264 3265 return rc; 3217 3266 #else 3218 3267 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3351 3400 { 3352 3401 #ifdef VMSVGA3D_DX 3353 DEBUG_BREAKPOINT_TEST(); 3354 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3355 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3356 return vmsvga3dDXBindAllQuery(pThisCC, idDXContext); 3402 //DEBUG_BREAKPOINT_TEST(); 3403 RT_NOREF(cbCmd); 3404 return vmsvga3dDXBindAllQuery(pThisCC, idDXContext, pCmd); 3357 3405 #else 3358 3406 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3366 3414 { 3367 3415 #ifdef VMSVGA3D_DX 3368 DEBUG_BREAKPOINT_TEST(); 3369 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3370 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3371 return vmsvga3dDXReadbackAllQuery(pThisCC, idDXContext); 3416 //DEBUG_BREAKPOINT_TEST(); 3417 RT_NOREF(cbCmd); 3418 return vmsvga3dDXReadbackAllQuery(pThisCC, idDXContext, pCmd); 3372 3419 #else 3373 3420 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx.cpp
r94264 r94265 38 38 #include "DevVGA-SVGA3d-internal.h" 39 39 #include "DevVGA-SVGA-internal.h" 40 41 42 static int dxReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry *pEntry); 40 43 41 44 … … 1087 1090 1088 1091 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId]; 1089 Assert(pEntry->state == SVGADX_QDSTATE_IDLE || SVGADX_QDSTATE_PENDING);1092 Assert(pEntry->state == SVGADX_QDSTATE_IDLE || pEntry->state == SVGADX_QDSTATE_PENDING || pEntry->state == SVGADX_QDSTATE_FINISHED); 1090 1093 if (pEntry->state != SVGADX_QDSTATE_ACTIVE) 1091 1094 { … … 1129 1132 1130 1133 1131 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext )1134 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackQuery const *pCmd) 1132 1135 { 1133 1136 int rc; … … 1141 1144 AssertRCReturn(rc, rc); 1142 1145 1143 rc = pSvgaR3State->pFuncsDX->pfnDXReadbackQuery(pThisCC, pDXContext); 1146 SVGA3dQueryId const queryId = pCmd->queryId; 1147 1148 ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE); 1149 ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER); 1150 RT_UNTRUSTED_VALIDATED_FENCE(); 1151 1152 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId]; 1153 Assert(pEntry->state == SVGADX_QDSTATE_PENDING); 1154 1155 rc = dxReadbackQuery(pThisCC, pDXContext, queryId, pEntry); 1144 1156 return rc; 1145 1157 } … … 1613 1625 AssertRCReturn(rc, rc); 1614 1626 1615 const SVGA3dBlendStateIdblendId = pCmd->blendId;1627 SVGA3dBlendStateId const blendId = pCmd->blendId; 1616 1628 1617 1629 ASSERT_GUEST_RETURN(pDXContext->cot.paBlendState, VERR_INVALID_STATE); … … 1629 1641 1630 1642 1631 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext )1643 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyBlendState const *pCmd) 1632 1644 { 1633 1645 int rc; … … 1641 1653 AssertRCReturn(rc, rc); 1642 1654 1643 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyBlendState(pThisCC, pDXContext); 1655 SVGA3dBlendStateId const blendId = pCmd->blendId; 1656 1657 ASSERT_GUEST_RETURN(pDXContext->cot.paBlendState, VERR_INVALID_STATE); 1658 ASSERT_GUEST_RETURN(blendId < pDXContext->cot.cBlendState, VERR_INVALID_PARAMETER); 1659 RT_UNTRUSTED_VALIDATED_FENCE(); 1660 1661 pSvgaR3State->pFuncsDX->pfnDXDestroyBlendState(pThisCC, pDXContext, blendId); 1662 1663 SVGACOTableDXBlendStateEntry *pEntry = &pDXContext->cot.paBlendState[blendId]; 1664 RT_ZERO(*pEntry); 1665 1644 1666 return rc; 1645 1667 } … … 1689 1711 1690 1712 1691 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext )1713 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyDepthStencilState const *pCmd) 1692 1714 { 1693 1715 int rc; … … 1701 1723 AssertRCReturn(rc, rc); 1702 1724 1703 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyDepthStencilState(pThisCC, pDXContext); 1725 SVGA3dDepthStencilStateId const depthStencilId = pCmd->depthStencilId; 1726 1727 ASSERT_GUEST_RETURN(pDXContext->cot.paDepthStencil, VERR_INVALID_STATE); 1728 ASSERT_GUEST_RETURN(depthStencilId < pDXContext->cot.cDepthStencil, VERR_INVALID_PARAMETER); 1729 RT_UNTRUSTED_VALIDATED_FENCE(); 1730 1731 pSvgaR3State->pFuncsDX->pfnDXDestroyDepthStencilState(pThisCC, pDXContext, depthStencilId); 1732 1733 SVGACOTableDXDepthStencilEntry *pEntry = &pDXContext->cot.paDepthStencil[depthStencilId]; 1734 RT_ZERO(*pEntry); 1735 1704 1736 return rc; 1705 1737 } … … 1748 1780 1749 1781 1750 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext )1782 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyRasterizerState const *pCmd) 1751 1783 { 1752 1784 int rc; … … 1760 1792 AssertRCReturn(rc, rc); 1761 1793 1762 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyRasterizerState(pThisCC, pDXContext); 1794 SVGA3dRasterizerStateId const rasterizerId = pCmd->rasterizerId; 1795 1796 ASSERT_GUEST_RETURN(pDXContext->cot.paRasterizerState, VERR_INVALID_STATE); 1797 ASSERT_GUEST_RETURN(rasterizerId < pDXContext->cot.cRasterizerState, VERR_INVALID_PARAMETER); 1798 RT_UNTRUSTED_VALIDATED_FENCE(); 1799 1800 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyRasterizerState(pThisCC, pDXContext, rasterizerId); 1801 1802 SVGACOTableDXRasterizerStateEntry *pEntry = &pDXContext->cot.paRasterizerState[rasterizerId]; 1803 RT_ZERO(*pEntry); 1804 1763 1805 return rc; 1764 1806 } … … 1800 1842 1801 1843 1802 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext )1844 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroySamplerState const *pCmd) 1803 1845 { 1804 1846 int rc; … … 1812 1854 AssertRCReturn(rc, rc); 1813 1855 1814 rc = pSvgaR3State->pFuncsDX->pfnDXDestroySamplerState(pThisCC, pDXContext); 1856 SVGA3dSamplerId const samplerId = pCmd->samplerId; 1857 1858 ASSERT_GUEST_RETURN(pDXContext->cot.paSampler, VERR_INVALID_STATE); 1859 ASSERT_GUEST_RETURN(samplerId < pDXContext->cot.cSampler, VERR_INVALID_PARAMETER); 1860 RT_UNTRUSTED_VALIDATED_FENCE(); 1861 1862 pSvgaR3State->pFuncsDX->pfnDXDestroySamplerState(pThisCC, pDXContext, samplerId); 1863 1864 SVGACOTableDXSamplerEntry *pEntry = &pDXContext->cot.paSampler[samplerId]; 1865 RT_ZERO(*pEntry); 1866 1815 1867 return rc; 1816 1868 } … … 2300 2352 2301 2353 2302 int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext) 2303 { 2304 int rc; 2305 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2306 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDXBindAllQuery, VERR_INVALID_STATE); 2307 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 2308 AssertReturn(p3dState, VERR_INVALID_STATE); 2309 2310 PVMSVGA3DDXCONTEXT pDXContext; 2311 rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext); 2312 AssertRCReturn(rc, rc); 2313 2314 rc = pSvgaR3State->pFuncsDX->pfnDXBindAllQuery(pThisCC, pDXContext); 2315 return rc; 2316 } 2317 2318 2319 int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext) 2320 { 2321 int rc; 2322 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2323 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDXReadbackAllQuery, VERR_INVALID_STATE); 2324 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 2325 AssertReturn(p3dState, VERR_INVALID_STATE); 2326 2327 PVMSVGA3DDXCONTEXT pDXContext; 2328 rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext); 2329 AssertRCReturn(rc, rc); 2330 2331 rc = pSvgaR3State->pFuncsDX->pfnDXReadbackAllQuery(pThisCC, pDXContext); 2354 int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBindAllQuery const *pCmd) 2355 { 2356 int rc; 2357 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2358 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDXBindQuery, VERR_INVALID_STATE); 2359 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 2360 AssertReturn(p3dState, VERR_INVALID_STATE); 2361 2362 RT_NOREF(idDXContext); 2363 2364 PVMSVGA3DDXCONTEXT pDXContext; 2365 rc = vmsvga3dDXContextFromCid(p3dState, pCmd->cid, &pDXContext); 2366 AssertRCReturn(rc, rc); 2367 2368 for (uint32_t i = 0; i < pDXContext->cot.cQuery; ++i) 2369 { 2370 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[i]; 2371 if (pEntry->type != SVGA3D_QUERYTYPE_INVALID) 2372 { 2373 pEntry->mobid = pCmd->mobid; 2374 pSvgaR3State->pFuncsDX->pfnDXBindQuery(pThisCC, pDXContext, i); 2375 } 2376 } 2377 2378 return rc; 2379 } 2380 2381 2382 static int dxReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry *pEntry) 2383 { 2384 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2385 2386 PVMSVGAMOB pMob = vmsvgaR3MobGet(pSvgaR3State, pEntry->mobid); 2387 ASSERT_GUEST_RETURN(pMob, VERR_INVALID_STATE); /* No MOB bound. */ 2388 2389 uint32_t const cbMob = vmsvgaR3MobSize(pMob); 2390 ASSERT_GUEST_RETURN(cbMob > pEntry->offset, VERR_INVALID_PARAMETER); 2391 uint32_t const cbAvail = cbMob - pEntry->offset; 2392 2393 /* Create a memory pointer, which is accessible by host. */ 2394 int rc = vmsvgaR3MobBackingStoreCreate(pSvgaR3State, pMob, cbMob); 2395 AssertRCReturn(rc, rc); 2396 2397 void *pvQuery = vmsvgaR3MobBackingStorePtr(pMob, pEntry->offset); 2398 /** @todo Write the query data only. */ 2399 uint32_t cbQuery = 0; /* Actual size of query data returned by backend. */ 2400 rc = pSvgaR3State->pFuncsDX->pfnDXReadbackQuery(pThisCC, pDXContext, queryId, pvQuery, cbAvail, &cbQuery); 2401 if (RT_SUCCESS(rc)) 2402 rc = vmsvgaR3MobBackingStoreWriteToGuest(pSvgaR3State, pMob); 2403 2404 vmsvgaR3MobBackingStoreDelete(pSvgaR3State, pMob); 2405 2406 pEntry->state = SVGADX_QDSTATE_FINISHED; 2407 return rc; 2408 } 2409 2410 2411 int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackAllQuery const *pCmd) 2412 { 2413 int rc; 2414 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 2415 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDXReadbackQuery, VERR_INVALID_STATE); 2416 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 2417 AssertReturn(p3dState, VERR_INVALID_STATE); 2418 2419 RT_NOREF(idDXContext); 2420 2421 PVMSVGA3DDXCONTEXT pDXContext; 2422 rc = vmsvga3dDXContextFromCid(p3dState, pCmd->cid, &pDXContext); 2423 AssertRCReturn(rc, rc); 2424 2425 for (uint32_t i = 0; i < pDXContext->cot.cQuery; ++i) 2426 { 2427 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[i]; 2428 if (pEntry->state == SVGADX_QDSTATE_PENDING) 2429 { 2430 dxReadbackQuery(pThisCC, pDXContext, i, pEntry); 2431 } 2432 } 2433 2332 2434 return rc; 2333 2435 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp
r94264 r94265 237 237 typedef struct DXQUERY 238 238 { 239 SVGA3dQueryType enmQueryType;240 239 ID3D11Query *pQuery; 241 240 } DXQUERY; … … 1276 1275 static void dxDestroyStreamOutput(DXSTREAMOUTPUT *pDXStreamOutput) 1277 1276 { 1278 RT_ NOREF(pDXStreamOutput);1277 RT_ZERO(*pDXStreamOutput); 1279 1278 } 1280 1279 … … 1710 1709 hr = pDevice->pDevice->CreateGeometryShaderWithStreamOutput(pDXShader->pvDXBC, pDXShader->cbDXBC, 1711 1710 pDXStreamOutput->aDeclarationEntry, pDXStreamOutput->cDeclarationEntry, 1712 pEntry->streamOutputStrideInBytes, cSOTarget, pEntry->rasterizedStream, 1711 pEntry->numOutputStreamStrides ? pEntry->streamOutputStrideInBytes : NULL, pEntry->numOutputStreamStrides, 1712 pEntry->rasterizedStream, 1713 1713 /*pClassLinkage=*/ NULL, &pDXShader->pGeometryShader); 1714 1714 Assert(SUCCEEDED(hr)); … … 5509 5509 5510 5510 /* Make sure that 16 bit indices are enough. */ 5511 AssertReturn(vertexCount <= 65535, VERR_NOT_SUPPORTED); 5511 if (vertexCount > 65535) 5512 { 5513 LogRelMax(1, ("VMSVGA: ignore Draw(TRIANGLEFAN, %u)\n", vertexCount)); 5514 return VERR_NOT_SUPPORTED; 5515 } 5512 5516 5513 5517 /* Generate indices. */ … … 5644 5648 5645 5649 /* Make sure that 16 bit indices are enough. */ 5646 AssertReturn(IndexCountTF <= 65535, VERR_NOT_SUPPORTED); 5650 if (IndexCountTF > 65535) 5651 { 5652 LogRelMax(1, ("VMSVGA: ignore DrawIndexed(TRIANGLEFAN, %u)\n", IndexCountTF)); 5653 return VERR_NOT_SUPPORTED; 5654 } 5647 5655 5648 5656 /* Save the current index buffer. */ … … 6129 6137 6130 6138 DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId]; 6131 Assert(pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_INVALID);6132 6139 6133 6140 D3D11_QUERY_DESC desc; … … 6140 6147 AssertReturn(SUCCEEDED(hr), VERR_INVALID_STATE); 6141 6148 6142 pDXQuery->enmQueryType = (SVGA3dQueryType)pEntry->type;6143 6144 6149 return VINF_SUCCESS; 6145 6150 } … … 6148 6153 static int dxDestroyQuery(DXQUERY *pDXQuery) 6149 6154 { 6150 pDXQuery->enmQueryType = SVGA3D_QUERYTYPE_INVALID;6151 6155 D3D_RELEASE(pDXQuery->pQuery); 6152 6156 return VINF_SUCCESS; … … 6184 6188 6185 6189 6186 static int dxBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, DXQUERY *pDXQuery)6190 static int dxBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, DXQUERY *pDXQuery) 6187 6191 { 6188 6192 DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); … … 6190 6194 6191 6195 /* Begin is disabled for some queries. */ 6192 if (pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_TIMESTAMP) 6196 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId]; 6197 if (pEntry->type == SVGA3D_QUERYTYPE_TIMESTAMP) 6193 6198 return VINF_SUCCESS; 6194 6199 pDXDevice->pImmediateContext->Begin(pDXQuery->pQuery); … … 6203 6208 6204 6209 DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId]; 6205 int rc = dxBeginQuery(pThisCC, pDXContext, pDXQuery);6210 int rc = dxBeginQuery(pThisCC, pDXContext, queryId, pDXQuery); 6206 6211 return rc; 6207 6212 } … … 6229 6234 6230 6235 6231 static DECLCALLBACK(int) vmsvga3dBackDXReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 6232 { 6233 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6234 6235 RT_NOREF(pBackend, pDXContext); 6236 AssertFailed(); /** @todo Implement */ 6237 return VERR_NOT_IMPLEMENTED; 6236 static int dxReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, DXQUERY *pDXQuery, 6237 void *pvData, uint32_t cbData, uint32_t *pcbOut) 6238 { 6239 DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 6240 AssertReturn(pDXDevice->pDevice, VERR_INVALID_STATE); 6241 6242 SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId]; 6243 6244 uint32_t cbRequired; 6245 switch (pEntry->type) 6246 { 6247 case SVGA3D_QUERYTYPE_OCCLUSION: cbRequired = sizeof(UINT64); break; 6248 case SVGA3D_QUERYTYPE_TIMESTAMP: cbRequired = sizeof(UINT64); break; 6249 case SVGA3D_QUERYTYPE_TIMESTAMPDISJOINT: cbRequired = sizeof(D3D11_QUERY_DATA_TIMESTAMP_DISJOINT); break; 6250 case SVGA3D_QUERYTYPE_PIPELINESTATS: cbRequired = sizeof(D3D11_QUERY_DATA_PIPELINE_STATISTICS); break; 6251 case SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE: cbRequired = sizeof(BOOL); break; 6252 case SVGA3D_QUERYTYPE_STREAMOUTPUTSTATS: cbRequired = sizeof(D3D11_QUERY_DATA_SO_STATISTICS); break; 6253 case SVGA3D_QUERYTYPE_STREAMOVERFLOWPREDICATE: cbRequired = sizeof(BOOL); break; 6254 case SVGA3D_QUERYTYPE_OCCLUSION64: cbRequired = sizeof(UINT64); break; 6255 case SVGA3D_QUERYTYPE_SOSTATS_STREAM0: cbRequired = sizeof(D3D11_QUERY_DATA_SO_STATISTICS); break; 6256 case SVGA3D_QUERYTYPE_SOSTATS_STREAM1: cbRequired = sizeof(D3D11_QUERY_DATA_SO_STATISTICS); break; 6257 case SVGA3D_QUERYTYPE_SOSTATS_STREAM2: cbRequired = sizeof(D3D11_QUERY_DATA_SO_STATISTICS); break; 6258 case SVGA3D_QUERYTYPE_SOSTATS_STREAM3: cbRequired = sizeof(D3D11_QUERY_DATA_SO_STATISTICS); break; 6259 case SVGA3D_QUERYTYPE_SOP_STREAM0: cbRequired = sizeof(BOOL); break; 6260 case SVGA3D_QUERYTYPE_SOP_STREAM1: cbRequired = sizeof(BOOL); break; 6261 case SVGA3D_QUERYTYPE_SOP_STREAM2: cbRequired = sizeof(BOOL); break; 6262 case SVGA3D_QUERYTYPE_SOP_STREAM3: cbRequired = sizeof(BOOL); break; 6263 default: 6264 AssertFailedReturn(VERR_INVALID_STATE); 6265 } 6266 6267 ASSERT_GUEST_RETURN(cbData > cbRequired, VERR_INVALID_PARAMETER); 6268 6269 while (pDXDevice->pImmediateContext->GetData(pDXQuery->pQuery, pvData, cbRequired, 0) != S_OK) 6270 { 6271 } 6272 6273 *pcbOut = cbRequired; 6274 return VINF_SUCCESS; 6275 } 6276 6277 6278 static DECLCALLBACK(int) vmsvga3dBackDXReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, 6279 SVGA3dQueryId queryId, void *pvData, uint32_t cbData, uint32_t *pcbOut) 6280 { 6281 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6282 RT_NOREF(pBackend); 6283 6284 DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId]; 6285 int rc = dxReadbackQuery(pThisCC, pDXContext, queryId, pDXQuery, pvData, cbData, pcbOut); 6286 return rc; 6238 6287 } 6239 6288 … … 6709 6758 /* Not much can be done here because ID3D11Device::CreateInputLayout requires 6710 6759 * a pShaderBytecodeWithInputSignature which is not known at this moment. 6711 * InputLayout object will be created in SVGA_3D_CMD_DX_SET_INPUT_LAYOUT.6760 * InputLayout object will be created in setupPipeline. 6712 6761 */ 6713 6762 … … 6742 6791 } 6743 6792 6793 6744 6794 static DECLCALLBACK(int) vmsvga3dBackDXDefineBlendState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, 6745 6795 SVGA3dBlendStateId blendId, SVGACOTableDXBlendStateEntry const *pEntry) … … 6752 6802 6753 6803 6754 static DECLCALLBACK(int) vmsvga3dBackDXDestroyBlendState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext )6755 { 6756 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6757 6758 RT_NOREF(pBackend, pDXContext); 6759 AssertFailed(); /** @todo Implement */6760 return V ERR_NOT_IMPLEMENTED;6804 static DECLCALLBACK(int) vmsvga3dBackDXDestroyBlendState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dBlendStateId blendId) 6805 { 6806 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6807 RT_NOREF(pBackend); 6808 6809 D3D_RELEASE(pDXContext->pBackendDXContext->papBlendState[blendId]); 6810 return VINF_SUCCESS; 6761 6811 } 6762 6812 … … 6783 6833 6784 6834 6785 static DECLCALLBACK(int) vmsvga3dBackDXDestroyDepthStencilState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext )6786 { 6787 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6788 6789 RT_NOREF(pBackend, pDXContext); 6790 AssertFailed(); /** @todo Implement */6791 return V ERR_NOT_IMPLEMENTED;6835 static DECLCALLBACK(int) vmsvga3dBackDXDestroyDepthStencilState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilStateId depthStencilId) 6836 { 6837 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6838 RT_NOREF(pBackend); 6839 6840 D3D_RELEASE(pDXContext->pBackendDXContext->papDepthStencilState[depthStencilId]); 6841 return VINF_SUCCESS; 6792 6842 } 6793 6843 … … 6814 6864 6815 6865 6816 static DECLCALLBACK(int) vmsvga3dBackDXDestroyRasterizerState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext )6817 { 6818 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6819 6820 RT_NOREF(pBackend, pDXContext); 6821 AssertFailed(); /** @todo Implement */6822 return V ERR_NOT_IMPLEMENTED;6866 static DECLCALLBACK(int) vmsvga3dBackDXDestroyRasterizerState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dRasterizerStateId rasterizerId) 6867 { 6868 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6869 RT_NOREF(pBackend); 6870 6871 D3D_RELEASE(pDXContext->pBackendDXContext->papRasterizerState[rasterizerId]); 6872 return VINF_SUCCESS; 6823 6873 } 6824 6874 … … 6845 6895 6846 6896 6847 static DECLCALLBACK(int) vmsvga3dBackDXDestroySamplerState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 6848 { 6849 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6850 6851 RT_NOREF(pBackend, pDXContext); 6852 AssertFailed(); /** @todo Implement */ 6853 return VERR_NOT_IMPLEMENTED; 6854 } 6855 6897 static DECLCALLBACK(int) vmsvga3dBackDXDestroySamplerState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dSamplerId samplerId) 6898 { 6899 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 6900 RT_NOREF(pBackend); 6901 6902 D3D_RELEASE(pDXContext->pBackendDXContext->papSamplerState[samplerId]); 6903 return VINF_SUCCESS; 6904 } 6856 6905 6857 6906 … … 7247 7296 DXQUERY *pDXQuery = &pBackendDXContext->paQuery[i]; 7248 7297 if ( pEntry->type != SVGA3D_QUERYTYPE_INVALID 7249 && pDXQuery-> enmQueryType == SVGA3D_QUERYTYPE_INVALID)7298 && pDXQuery->pQuery == NULL) 7250 7299 dxDefineQuery(pThisCC, pDXContext, i, pEntry); 7251 7300 else 7252 Assert(pEntry->type == pDXQuery->enmQueryType);7301 Assert(pEntry->type == SVGA3D_QUERYTYPE_INVALID || pDXQuery->pQuery); 7253 7302 } 7254 7303 break; … … 7312 7361 7313 7362 static DECLCALLBACK(int) vmsvga3dBackDXMoveQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7314 {7315 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;7316 7317 RT_NOREF(pBackend, pDXContext);7318 AssertFailed(); /** @todo Implement */7319 return VERR_NOT_IMPLEMENTED;7320 }7321 7322 7323 static DECLCALLBACK(int) vmsvga3dBackDXBindAllQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7324 {7325 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;7326 7327 RT_NOREF(pBackend, pDXContext);7328 AssertFailed(); /** @todo Implement */7329 return VERR_NOT_IMPLEMENTED;7330 }7331 7332 7333 static DECLCALLBACK(int) vmsvga3dBackDXReadbackAllQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7334 7363 { 7335 7364 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 8024 8053 p->pfnDXSurfaceCopyAndReadback = vmsvga3dBackDXSurfaceCopyAndReadback; 8025 8054 p->pfnDXMoveQuery = vmsvga3dBackDXMoveQuery; 8026 p->pfnDXBindAllQuery = vmsvga3dBackDXBindAllQuery;8027 p->pfnDXReadbackAllQuery = vmsvga3dBackDXReadbackAllQuery;8028 8055 p->pfnDXMobFence64 = vmsvga3dBackDXMobFence64; 8029 8056 p->pfnDXBindAllShader = vmsvga3dBackDXBindAllShader; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r94264 r94265 447 447 DECLCALLBACKMEMBER(int, pfnDXBeginQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)); 448 448 DECLCALLBACKMEMBER(int, pfnDXEndQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)); 449 DECLCALLBACKMEMBER(int, pfnDXReadbackQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));449 DECLCALLBACKMEMBER(int, pfnDXReadbackQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, void *pvData, uint32_t cbData, uint32_t *pcbOut)); 450 450 DECLCALLBACKMEMBER(int, pfnDXSetPredication, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 451 451 DECLCALLBACKMEMBER(int, pfnDXSetSOTargets, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t cSoTarget, SVGA3dSoTarget const *paSoTarget)); … … 467 467 DECLCALLBACKMEMBER(int, pfnDXDestroyElementLayout, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId)); 468 468 DECLCALLBACKMEMBER(int, pfnDXDefineBlendState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dBlendStateId blendId, SVGACOTableDXBlendStateEntry const *pEntry)); 469 DECLCALLBACKMEMBER(int, pfnDXDestroyBlendState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));469 DECLCALLBACKMEMBER(int, pfnDXDestroyBlendState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dBlendStateId blendId)); 470 470 DECLCALLBACKMEMBER(int, pfnDXDefineDepthStencilState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilStateId depthStencilId, SVGACOTableDXDepthStencilEntry const *pEntry)); 471 DECLCALLBACKMEMBER(int, pfnDXDestroyDepthStencilState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));471 DECLCALLBACKMEMBER(int, pfnDXDestroyDepthStencilState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilStateId depthStencilId)); 472 472 DECLCALLBACKMEMBER(int, pfnDXDefineRasterizerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dRasterizerStateId rasterizerId, SVGACOTableDXRasterizerStateEntry const *pEntry)); 473 DECLCALLBACKMEMBER(int, pfnDXDestroyRasterizerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));473 DECLCALLBACKMEMBER(int, pfnDXDestroyRasterizerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dRasterizerStateId rasterizerId)); 474 474 DECLCALLBACKMEMBER(int, pfnDXDefineSamplerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dSamplerId samplerId, SVGACOTableDXSamplerEntry const *pEntry)); 475 DECLCALLBACKMEMBER(int, pfnDXDestroySamplerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));475 DECLCALLBACKMEMBER(int, pfnDXDestroySamplerState, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dSamplerId samplerId)); 476 476 DECLCALLBACKMEMBER(int, pfnDXDefineShader, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dShaderId shaderId, SVGACOTableDXShaderEntry const *pEntry)); 477 477 DECLCALLBACKMEMBER(int, pfnDXDestroyShader, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dShaderId shaderId)); … … 484 484 DECLCALLBACKMEMBER(int, pfnDXSurfaceCopyAndReadback, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 485 485 DECLCALLBACKMEMBER(int, pfnDXMoveQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 486 DECLCALLBACKMEMBER(int, pfnDXBindAllQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));487 DECLCALLBACKMEMBER(int, pfnDXReadbackAllQuery, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));488 486 DECLCALLBACKMEMBER(int, pfnDXMobFence64, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 489 487 DECLCALLBACKMEMBER(int, pfnDXBindAllShader, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); … … 577 575 int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBeginQuery const *pCmd); 578 576 int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXEndQuery const *pCmd); 579 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext );577 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackQuery const *pCmd); 580 578 int vmsvga3dDXSetPredication(PVGASTATECC pThisCC, uint32_t idDXContext); 581 579 int vmsvga3dDXSetSOTargets(PVGASTATECC pThisCC, uint32_t idDXContext, uint32_t cSoTarget, SVGA3dSoTarget const *paSoTarget); … … 597 595 int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyElementLayout const *pCmd); 598 596 int vmsvga3dDXDefineBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineBlendState const *pCmd); 599 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext );597 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyBlendState const *pCmd); 600 598 int vmsvga3dDXDefineDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineDepthStencilState const *pCmd); 601 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext );599 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyDepthStencilState const *pCmd); 602 600 int vmsvga3dDXDefineRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineRasterizerState const *pCmd); 603 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext );601 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyRasterizerState const *pCmd); 604 602 int vmsvga3dDXDefineSamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineSamplerState const *pCmd); 605 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext );603 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroySamplerState const *pCmd); 606 604 int vmsvga3dDXDefineShader(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineShader const *pCmd); 607 605 int vmsvga3dDXDestroyShader(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyShader const *pCmd); … … 615 613 int vmsvga3dDXSurfaceCopyAndReadback(PVGASTATECC pThisCC, uint32_t idDXContext); 616 614 int vmsvga3dDXMoveQuery(PVGASTATECC pThisCC, uint32_t idDXContext); 617 int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext );618 int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext );615 int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBindAllQuery const *pCmd); 616 int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackAllQuery const *pCmd); 619 617 int vmsvga3dDXMobFence64(PVGASTATECC pThisCC, uint32_t idDXContext); 620 618 int vmsvga3dDXBindAllShader(PVGASTATECC pThisCC, uint32_t idDXContext);
Note:
See TracChangeset
for help on using the changeset viewer.