VirtualBox

Changeset 49332 in vbox for trunk/include


Ignore:
Timestamp:
Oct 30, 2013 1:13:02 PM (11 years ago)
Author:
vboxsync
Message:

wddm: 1. switch to using common VBVA code 2.dx-based command submission - work in progress 3.some prototyping for getting 3D data for video recording/take snapshot

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxVideo.h

    r44529 r49332  
    14221422    VBOXVDMACMD_CHROMIUM_CTL_TYPE_SAVESTATE_END,
    14231423    VBOXVDMACMD_CHROMIUM_CTL_TYPE_CRHGSMI_SETUP_COMPLETION,
     1424    VBOXVDMACMD_CHROMIUM_CTL_TYPE_CRCONNECT,
    14241425    VBOXVDMACMD_CHROMIUM_CTL_TYPE_SIZEHACK = 0xfffffffe
    14251426} VBOXVDMACMD_CHROMIUM_CTL_TYPE;
     
    14421443} VBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP, *PVBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP;
    14431444
     1445
    14441446typedef struct PDMIDISPLAYVBVACALLBACKS *HCRHGSMICMDCOMPLETION;
    14451447typedef DECLCALLBACK(int) FNCRHGSMICMDCOMPLETION(HCRHGSMICMDCOMPLETION hCompletion, PVBOXVDMACMD_CHROMIUM_CMD pCmd, int rc);
     
    14521454    PFNCRHGSMICMDCOMPLETION pfnCompletion;
    14531455} VBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP_COMPLETION, *PVBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP_COMPLETION;
     1456
     1457typedef struct VBOXCRCON_SERVER *HVBOXCRCON_SERVER;
     1458typedef struct PDMIDISPLAYVBVACALLBACKS* HVBOXCRCON_CLIENT;
     1459
     1460typedef struct VBOXCRCON_3DRGN_CLIENT* HVBOXCRCON_3DRGN_CLIENT;
     1461typedef struct VBOXCRCON_3DRGN_ASYNCCLIENT* HVBOXCRCON_3DRGN_ASYNCCLIENT;
     1462
     1463/* server callbacks */
     1464/* submit chromium cmd */
     1465typedef DECLCALLBACK(int) FNVBOXCRCON_SVR_CRCMD(HVBOXCRCON_SERVER hServer, PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd);
     1466typedef FNVBOXCRCON_SVR_CRCMD *PFNVBOXCRCON_SVR_CRCMD;
     1467
     1468/* submit chromium control cmd */
     1469typedef DECLCALLBACK(int) FNVBOXCRCON_SVR_CRCTL(HVBOXCRCON_SERVER hServer, PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCmd);
     1470typedef FNVBOXCRCON_SVR_CRCTL *PFNVBOXCRCON_SVR_CRCTL;
     1471
     1472/* request 3D data.
     1473 * The protocol is the following:
     1474 * 1. if there is no 3D data displayed on screen, returns VINF_EOF immediately w/o calling any PFNVBOXCRCON_3DRGN_XXX callbacks
     1475 * 2. otherwise calls PFNVBOXCRCON_3DRGN_ONSUBMIT, submits the "regions get" request to the CrOpenGL server to process it asynchronously and returns VINF_SUCCESS
     1476 * 2.a on "regions get" request processing calls PFNVBOXCRCON_3DRGN_BEGIN,
     1477 * 2.b then PFNVBOXCRCON_3DRGN_REPORT zero or more times for each 3D region,
     1478 * 2.c and then PFNVBOXCRCON_3DRGN_END
     1479 * 3. returns VERR_XXX code on failure
     1480 * */
     1481typedef DECLCALLBACK(int) FNVBOXCRCON_SVR_3DRGN_GET(HVBOXCRCON_SERVER hServer, HVBOXCRCON_3DRGN_CLIENT hRgnClient, uint32_t idScreen);
     1482typedef FNVBOXCRCON_SVR_3DRGN_GET *PFNVBOXCRCON_SVR_3DRGN_GET;
     1483
     1484/* 3D Regions Client callbacks */
     1485/* called from the PFNVBOXCRCON_SVR_3DRGN_GET callback in case server has 3D data and is going to process the request asynchronously,
     1486 * see comments for PFNVBOXCRCON_SVR_3DRGN_GET above */
     1487typedef DECLCALLBACK(int) FNVBOXCRCON_3DRGN_ONSUBMIT(HVBOXCRCON_3DRGN_CLIENT hRgnClient, uint32_t idScreen, HVBOXCRCON_3DRGN_ASYNCCLIENT *phRgnAsyncClient);
     1488typedef FNVBOXCRCON_3DRGN_ONSUBMIT *PFNVBOXCRCON_3DRGN_ONSUBMIT;
     1489
     1490/* called from the "regions get" command processing thread, to indicate that the "regions get" is started.
     1491 * see comments for PFNVBOXCRCON_SVR_3DRGN_GET above */
     1492typedef DECLCALLBACK(int) FNVBOXCRCON_3DRGN_BEGIN(HVBOXCRCON_3DRGN_ASYNCCLIENT hRgnAsyncClient, uint32_t idScreen);
     1493typedef FNVBOXCRCON_3DRGN_BEGIN *PFNVBOXCRCON_3DRGN_BEGIN;
     1494
     1495/* called from the "regions get" command processing thread, to report a 3D region.
     1496 * see comments for PFNVBOXCRCON_SVR_3DRGN_GET above */
     1497typedef DECLCALLBACK(int) FNVBOXCRCON_3DRGN_REPORT(HVBOXCRCON_3DRGN_ASYNCCLIENT hRgnAsyncClient, uint32_t idScreen, void *pvData, uint32_t cbStride, const RTRECT *pRect);
     1498typedef FNVBOXCRCON_3DRGN_REPORT *PFNVBOXCRCON_3DRGN_REPORT;
     1499
     1500/* called from the "regions get" command processing thread, to indicate that the "regions get" is completed.
     1501 * see comments for PFNVBOXCRCON_SVR_3DRGN_GET above */
     1502typedef DECLCALLBACK(int) FNVBOXCRCON_3DRGN_END(HVBOXCRCON_3DRGN_ASYNCCLIENT hRgnAsyncClient, uint32_t idScreen);
     1503typedef FNVBOXCRCON_3DRGN_END *PFNVBOXCRCON_3DRGN_END;
     1504
     1505
     1506/* client callbacks */
     1507/* complete chromium cmd */
     1508typedef DECLCALLBACK(int) FNVBOXCRCON_CLT_CRCTL_COMPLETE(HVBOXCRCON_CLIENT hClient, PVBOXVDMACMD_CHROMIUM_CTL pCtl, int rc);
     1509typedef FNVBOXCRCON_CLT_CRCTL_COMPLETE *PFNVBOXCRCON_CLT_CRCTL_COMPLETE;
     1510
     1511/* complete chromium control cmd */
     1512typedef DECLCALLBACK(int) FNVBOXCRCON_CLT_CRCMD_COMPLETE(HVBOXCRCON_CLIENT hClient, PVBOXVDMACMD_CHROMIUM_CMD pCmd, int rc);
     1513typedef FNVBOXCRCON_CLT_CRCMD_COMPLETE *PFNVBOXCRCON_CLT_CRCMD_COMPLETE;
     1514
     1515typedef struct VBOXCRCON_SERVER_CALLBACKS
     1516{
     1517    HVBOXCRCON_SERVER hServer;
     1518    PFNVBOXCRCON_SVR_CRCMD pfnCrCmd;
     1519    PFNVBOXCRCON_SVR_CRCTL pfnCrCtl;
     1520    PFNVBOXCRCON_SVR_3DRGN_GET pfn3DRgnGet;
     1521} VBOXCRCON_SERVER_CALLBACKS, *PVBOXCRCON_SERVER_CALLBACKS;
     1522
     1523typedef struct VBOXCRCON_CLIENT_CALLBACKS
     1524{
     1525    HVBOXCRCON_CLIENT hClient;
     1526    PFNVBOXCRCON_CLT_CRCMD_COMPLETE pfnCrCmdComplete;
     1527    PFNVBOXCRCON_CLT_CRCTL_COMPLETE pfnCrCtlComplete;
     1528    PFNVBOXCRCON_3DRGN_ONSUBMIT pfn3DRgnOnSubmit;
     1529    PFNVBOXCRCON_3DRGN_BEGIN pfn3DRgnBegin;
     1530    PFNVBOXCRCON_3DRGN_REPORT pfn3DRgnReport;
     1531    PFNVBOXCRCON_3DRGN_END pfn3DRgnEnd;
     1532} VBOXCRCON_CLIENT_CALLBACKS, *PVBOXCRCON_CLIENT_CALLBACKS;
     1533
     1534/* issued by Main to establish connection between Main and CrOpenGL service */
     1535typedef struct VBOXVDMACMD_CHROMIUM_CTL_CRCONNECT
     1536{
     1537    VBOXVDMACMD_CHROMIUM_CTL Hdr;
     1538    /*input (filled by Client) :*/
     1539    /*class VMMDev*/void *pVMMDev;
     1540    VBOXCRCON_CLIENT_CALLBACKS ClientCallbacks;
     1541    /*output (filled by Server) :*/
     1542    VBOXCRCON_SERVER_CALLBACKS ServerCallbacks;
     1543} VBOXVDMACMD_CHROMIUM_CTL_CRCONNECT, *PVBOXVDMACMD_CHROMIUM_CTL_CRCONNECT;
     1544
    14541545# pragma pack()
     1546
    14551547#endif
    14561548
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