VirtualBox

Changeset 94265 in vbox for trunk


Ignore:
Timestamp:
Mar 16, 2022 10:33:19 AM (3 years ago)
Author:
vboxsync
Message:

Devices/Graphics: DXQuery commands; DXDestroy commands; DXBufferCopy: bugref:9830

Location:
trunk/src/VBox/Devices/Graphics
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp

    r94264 r94265  
    25782578{
    25792579#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);
    25842583#else
    25852584    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    29922991#ifdef VMSVGA3D_DX
    29932992    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);
    29972995#else
    29982996    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    30213019#ifdef VMSVGA3D_DX
    30223020    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);
    30263023#else
    30273024    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    30503047#ifdef VMSVGA3D_DX
    30513048    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);
    30553051#else
    30563052    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    30793075#ifdef VMSVGA3D_DX
    30803076    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);
    30843079#else
    30853080    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    31523147{
    31533148#ifdef VMSVGA3D_DX
    3154     DEBUG_BREAKPOINT_TEST();
     3149    //DEBUG_BREAKPOINT_TEST();
    31553150    RT_NOREF(cbCmd);
    31563151    return vmsvga3dDXDestroyStreamOutput(pThisCC, idDXContext, pCmd);
     
    32113206{
    32123207#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;
    32173266#else
    32183267    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    33513400{
    33523401#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);
    33573405#else
    33583406    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    33663414{
    33673415#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);
    33723419#else
    33733420    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx.cpp

    r94264 r94265  
    3838#include "DevVGA-SVGA3d-internal.h"
    3939#include "DevVGA-SVGA-internal.h"
     40
     41
     42static int dxReadbackQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry *pEntry);
    4043
    4144
     
    10871090
    10881091    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);
    10901093    if (pEntry->state != SVGADX_QDSTATE_ACTIVE)
    10911094    {
     
    11291132
    11301133
    1131 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     1134int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackQuery const *pCmd)
    11321135{
    11331136    int rc;
     
    11411144    AssertRCReturn(rc, rc);
    11421145
    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);
    11441156    return rc;
    11451157}
     
    16131625    AssertRCReturn(rc, rc);
    16141626
    1615     const SVGA3dBlendStateId blendId = pCmd->blendId;
     1627    SVGA3dBlendStateId const blendId = pCmd->blendId;
    16161628
    16171629    ASSERT_GUEST_RETURN(pDXContext->cot.paBlendState, VERR_INVALID_STATE);
     
    16291641
    16301642
    1631 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext)
     1643int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyBlendState const *pCmd)
    16321644{
    16331645    int rc;
     
    16411653    AssertRCReturn(rc, rc);
    16421654
    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
    16441666    return rc;
    16451667}
     
    16891711
    16901712
    1691 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext)
     1713int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyDepthStencilState const *pCmd)
    16921714{
    16931715    int rc;
     
    17011723    AssertRCReturn(rc, rc);
    17021724
    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
    17041736    return rc;
    17051737}
     
    17481780
    17491781
    1750 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext)
     1782int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyRasterizerState const *pCmd)
    17511783{
    17521784    int rc;
     
    17601792    AssertRCReturn(rc, rc);
    17611793
    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
    17631805    return rc;
    17641806}
     
    18001842
    18011843
    1802 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext)
     1844int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroySamplerState const *pCmd)
    18031845{
    18041846    int rc;
     
    18121854    AssertRCReturn(rc, rc);
    18131855
    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
    18151867    return rc;
    18161868}
     
    23002352
    23012353
    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);
     2354int 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
     2382static 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
     2411int 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
    23322434    return rc;
    23332435}
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp

    r94264 r94265  
    237237typedef struct DXQUERY
    238238{
    239     SVGA3dQueryType             enmQueryType;
    240239    ID3D11Query                *pQuery;
    241240} DXQUERY;
     
    12761275static void dxDestroyStreamOutput(DXSTREAMOUTPUT *pDXStreamOutput)
    12771276{
    1278     RT_NOREF(pDXStreamOutput);
     1277    RT_ZERO(*pDXStreamOutput);
    12791278}
    12801279
     
    17101709                hr = pDevice->pDevice->CreateGeometryShaderWithStreamOutput(pDXShader->pvDXBC, pDXShader->cbDXBC,
    17111710                    pDXStreamOutput->aDeclarationEntry, pDXStreamOutput->cDeclarationEntry,
    1712                     pEntry->streamOutputStrideInBytes, cSOTarget, pEntry->rasterizedStream,
     1711                    pEntry->numOutputStreamStrides ? pEntry->streamOutputStrideInBytes : NULL, pEntry->numOutputStreamStrides,
     1712                    pEntry->rasterizedStream,
    17131713                    /*pClassLinkage=*/ NULL, &pDXShader->pGeometryShader);
    17141714                Assert(SUCCEEDED(hr));
     
    55095509
    55105510        /* 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        }
    55125516
    55135517        /* Generate indices. */
     
    56445648
    56455649    /* 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    }
    56475655
    56485656    /* Save the current index buffer. */
     
    61296137
    61306138    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
    6131     Assert(pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_INVALID);
    61326139
    61336140    D3D11_QUERY_DESC desc;
     
    61406147    AssertReturn(SUCCEEDED(hr), VERR_INVALID_STATE);
    61416148
    6142     pDXQuery->enmQueryType = (SVGA3dQueryType)pEntry->type;
    6143 
    61446149    return VINF_SUCCESS;
    61456150}
     
    61486153static int dxDestroyQuery(DXQUERY *pDXQuery)
    61496154{
    6150     pDXQuery->enmQueryType = SVGA3D_QUERYTYPE_INVALID;
    61516155    D3D_RELEASE(pDXQuery->pQuery);
    61526156    return VINF_SUCCESS;
     
    61846188
    61856189
    6186 static int dxBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, DXQUERY *pDXQuery)
     6190static int dxBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, DXQUERY *pDXQuery)
    61876191{
    61886192    DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext);
     
    61906194
    61916195    /* 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)
    61936198        return VINF_SUCCESS;
    61946199    pDXDevice->pImmediateContext->Begin(pDXQuery->pQuery);
     
    62036208
    62046209    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
    6205     int rc = dxBeginQuery(pThisCC, pDXContext, pDXQuery);
     6210    int rc = dxBeginQuery(pThisCC, pDXContext, queryId, pDXQuery);
    62066211    return rc;
    62076212}
     
    62296234
    62306235
    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;
     6236static 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
     6278static 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;
    62386287}
    62396288
     
    67096758    /* Not much can be done here because ID3D11Device::CreateInputLayout requires
    67106759     * 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.
    67126761     */
    67136762
     
    67426791}
    67436792
     6793
    67446794static DECLCALLBACK(int) vmsvga3dBackDXDefineBlendState(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext,
    67456795                                                        SVGA3dBlendStateId blendId, SVGACOTableDXBlendStateEntry const *pEntry)
     
    67526802
    67536803
    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 VERR_NOT_IMPLEMENTED;
     6804static 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;
    67616811}
    67626812
     
    67836833
    67846834
    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 VERR_NOT_IMPLEMENTED;
     6835static 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;
    67926842}
    67936843
     
    68146864
    68156865
    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 VERR_NOT_IMPLEMENTED;
     6866static 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;
    68236873}
    68246874
     
    68456895
    68466896
    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 
     6897static 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}
    68566905
    68576906
     
    72477296                DXQUERY *pDXQuery = &pBackendDXContext->paQuery[i];
    72487297                if (   pEntry->type != SVGA3D_QUERYTYPE_INVALID
    7249                     && pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_INVALID)
     7298                    && pDXQuery->pQuery == NULL)
    72507299                    dxDefineQuery(pThisCC, pDXContext, i, pEntry);
    72517300                else
    7252                     Assert(pEntry->type == pDXQuery->enmQueryType);
     7301                    Assert(pEntry->type == SVGA3D_QUERYTYPE_INVALID || pDXQuery->pQuery);
    72537302            }
    72547303            break;
     
    73127361
    73137362static 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)
    73347363{
    73357364    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     
    80248053                p->pfnDXSurfaceCopyAndReadback    = vmsvga3dBackDXSurfaceCopyAndReadback;
    80258054                p->pfnDXMoveQuery                 = vmsvga3dBackDXMoveQuery;
    8026                 p->pfnDXBindAllQuery              = vmsvga3dBackDXBindAllQuery;
    8027                 p->pfnDXReadbackAllQuery          = vmsvga3dBackDXReadbackAllQuery;
    80288055                p->pfnDXMobFence64                = vmsvga3dBackDXMobFence64;
    80298056                p->pfnDXBindAllShader             = vmsvga3dBackDXBindAllShader;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

    r94264 r94265  
    447447    DECLCALLBACKMEMBER(int, pfnDXBeginQuery,                (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId));
    448448    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));
    450450    DECLCALLBACKMEMBER(int, pfnDXSetPredication,            (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    451451    DECLCALLBACKMEMBER(int, pfnDXSetSOTargets,              (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t cSoTarget, SVGA3dSoTarget const *paSoTarget));
     
    467467    DECLCALLBACKMEMBER(int, pfnDXDestroyElementLayout,      (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId));
    468468    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));
    470470    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));
    472472    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));
    474474    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));
    476476    DECLCALLBACKMEMBER(int, pfnDXDefineShader,              (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dShaderId shaderId, SVGACOTableDXShaderEntry const *pEntry));
    477477    DECLCALLBACKMEMBER(int, pfnDXDestroyShader,             (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dShaderId shaderId));
     
    484484    DECLCALLBACKMEMBER(int, pfnDXSurfaceCopyAndReadback,    (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    485485    DECLCALLBACKMEMBER(int, pfnDXMoveQuery,                 (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    486     DECLCALLBACKMEMBER(int, pfnDXBindAllQuery,              (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    487     DECLCALLBACKMEMBER(int, pfnDXReadbackAllQuery,          (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    488486    DECLCALLBACKMEMBER(int, pfnDXMobFence64,                (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    489487    DECLCALLBACKMEMBER(int, pfnDXBindAllShader,             (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
     
    577575int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBeginQuery const *pCmd);
    578576int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXEndQuery const *pCmd);
    579 int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
     577int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackQuery const *pCmd);
    580578int vmsvga3dDXSetPredication(PVGASTATECC pThisCC, uint32_t idDXContext);
    581579int vmsvga3dDXSetSOTargets(PVGASTATECC pThisCC, uint32_t idDXContext, uint32_t cSoTarget, SVGA3dSoTarget const *paSoTarget);
     
    597595int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyElementLayout const *pCmd);
    598596int vmsvga3dDXDefineBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineBlendState const *pCmd);
    599 int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext);
     597int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyBlendState const *pCmd);
    600598int vmsvga3dDXDefineDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineDepthStencilState const *pCmd);
    601 int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext);
     599int vmsvga3dDXDestroyDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyDepthStencilState const *pCmd);
    602600int vmsvga3dDXDefineRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineRasterizerState const *pCmd);
    603 int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext);
     601int vmsvga3dDXDestroyRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyRasterizerState const *pCmd);
    604602int vmsvga3dDXDefineSamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineSamplerState const *pCmd);
    605 int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext);
     603int vmsvga3dDXDestroySamplerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroySamplerState const *pCmd);
    606604int vmsvga3dDXDefineShader(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineShader const *pCmd);
    607605int vmsvga3dDXDestroyShader(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyShader const *pCmd);
     
    615613int vmsvga3dDXSurfaceCopyAndReadback(PVGASTATECC pThisCC, uint32_t idDXContext);
    616614int vmsvga3dDXMoveQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    617 int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    618 int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
     615int vmsvga3dDXBindAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBindAllQuery const *pCmd);
     616int vmsvga3dDXReadbackAllQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXReadbackAllQuery const *pCmd);
    619617int vmsvga3dDXMobFence64(PVGASTATECC pThisCC, uint32_t idDXContext);
    620618int vmsvga3dDXBindAllShader(PVGASTATECC pThisCC, uint32_t idDXContext);
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