summaryrefslogtreecommitdiff
path: root/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2014-03-26 19:21:20 +0000
committer <>2014-05-08 15:03:54 +0000
commitfb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch)
treec2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/GuestHost/OpenGL/include/cr_protocol.h
parent58ed4748338f9466599adfc8a9171280ed99e23f (diff)
downloadVirtualBox-master.tar.gz
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/cr_protocol.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_protocol.h46
1 files changed, 36 insertions, 10 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_protocol.h b/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
index 5e24f207..1bf785ba 100644
--- a/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
+++ b/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
@@ -7,6 +7,7 @@
#ifndef CR_PROTOCOL_H
#define CR_PROTOCOL_H
+#include <iprt/types.h>
#include <iprt/cdefs.h>
#ifdef DEBUG_misha
#include "cr_error.h"
@@ -21,6 +22,23 @@ extern "C" {
#define CR_PROTOCOL_VERSION_MAJOR 9
#define CR_PROTOCOL_VERSION_MINOR 1
+/* new TexPresent mechanism is available */
+#define CR_VBOX_CAP_TEX_PRESENT 0x00000001
+/* vbva command submission mechanism supported */
+#define CR_VBOX_CAP_CMDVBVA 0x00000002
+
+
+#define CR_PRESENT_SCREEN_MASK 0xffff
+#define CR_PRESENT_FLAGS_OFFSET 16
+#define CR_PRESENT_FLAGS_MASK 0xffff0000
+#define CR_PRESENT_DEFINE_FLAG(_f) (1 << (CR_PRESENT_FLAGS_OFFSET + _f))
+
+#define CR_PRESENT_FLAG_CLEAR_RECTS CR_PRESENT_DEFINE_FLAG(0)
+#define CR_PRESENT_FLAG_TEX_NONINVERT_YCOORD CR_PRESENT_DEFINE_FLAG(1)
+
+#define CR_PRESENT_GET_SCREEN(_cfg) ((_cfg) & CR_PRESENT_SCREEN_MASK)
+#define CR_PRESENT_GET_FLAGS(_cfg) ((_cfg) & CR_PRESENT_FLAGS_MASK)
+
typedef enum {
/* first message types is 'wGL\001', so we can immediately
recognize bad message types */
@@ -51,7 +69,7 @@ typedef union {
/* unsigned int junk[512]; */
} CRNetworkPointer;
-#ifdef DEBUG_misha
+#if 0 //def DEBUG_misha
#define CRDBGPTR_SETZ(_p) crMemset((_p), 0, sizeof (CRNetworkPointer))
#define CRDBGPTR_CHECKZ(_p) do { \
CRNetworkPointer _ptr = {0}; \
@@ -80,26 +98,32 @@ typedef union {
#ifdef VBOX_WITH_CRHGSMI
typedef struct CRVBOXHGSMI_CMDDATA {
- struct VBOXVDMACMD_CHROMIUM_CMD *pCmd;
+ union
+ {
+ struct VBOXVDMACMD_CHROMIUM_CMD *pHgsmiCmd;
+ struct VBOXCMDVBVA_CRCMD_CMD *pVbvaCmd;
+ void *pvCmd;
+ };
int *pCmdRc;
char *pWriteback;
unsigned int *pcbWriteback;
unsigned int cbWriteback;
+ bool fHgsmiCmd;
} CRVBOXHGSMI_CMDDATA, *PCRVBOXHGSMI_CMDDATA;
#ifdef DEBUG
# define CRVBOXHGSMI_CMDDATA_ASSERT_CONSISTENT(_pData) do { \
- CRASSERT(!(_pData)->pCmd == !(_pData)->pCmdRc); \
+ CRASSERT(!(_pData)->pvCmd == !(_pData)->pCmdRc); \
CRASSERT(!(_pData)->pWriteback == !(_pData)->pcbWriteback); \
CRASSERT(!(_pData)->pWriteback == !(_pData)->cbWriteback); \
if ((_pData)->pWriteback) \
{ \
- CRASSERT((_pData)->pCmd); \
+ CRASSERT((_pData)->pvCmd); \
} \
} while (0)
# define CRVBOXHGSMI_CMDDATA_ASSERT_CLEANED(_pData) do { \
- CRASSERT(!(_pData)->pCmd); \
+ CRASSERT(!(_pData)->pvCmd); \
CRASSERT(!(_pData)->pCmdRc); \
CRASSERT(!(_pData)->pWriteback); \
CRASSERT(!(_pData)->pcbWriteback); \
@@ -122,7 +146,8 @@ typedef struct CRVBOXHGSMI_CMDDATA {
# define CRVBOXHGSMI_CMDDATA_ASSERT_ISSETWB(_pData) do { } while (0)
#endif
-#define CRVBOXHGSMI_CMDDATA_IS_SET(_pData) (!!(_pData)->pCmd)
+#define CRVBOXHGSMI_CMDDATA_IS_HGSMICMD(_pData) (!!(_pData)->fHgsmiCmd)
+#define CRVBOXHGSMI_CMDDATA_IS_SET(_pData) (!!(_pData)->pvCmd)
#define CRVBOXHGSMI_CMDDATA_IS_SETWB(_pData) (!!(_pData)->pWriteback)
#define CRVBOXHGSMI_CMDDATA_CLEANUP(_pData) do { \
@@ -131,15 +156,16 @@ typedef struct CRVBOXHGSMI_CMDDATA {
CRVBOXHGSMI_CMDDATA_ASSERT_CONSISTENT(_pData); \
} while (0)
-#define CRVBOXHGSMI_CMDDATA_SET(_pData, _pCmd, _pHdr) do { \
+#define CRVBOXHGSMI_CMDDATA_SET(_pData, _pCmd, _pHdr, _fHgsmiCmd) do { \
CRVBOXHGSMI_CMDDATA_ASSERT_CLEANED(_pData); \
- (_pData)->pCmd = (_pCmd); \
+ (_pData)->pvCmd = (_pCmd); \
(_pData)->pCmdRc = &(_pHdr)->result; \
+ (_pData)->fHgsmiCmd = (_fHgsmiCmd); \
CRVBOXHGSMI_CMDDATA_ASSERT_CONSISTENT(_pData); \
} while (0)
-#define CRVBOXHGSMI_CMDDATA_SETWB(_pData, _pCmd, _pHdr, _pWb, _cbWb, _pcbWb) do { \
- CRVBOXHGSMI_CMDDATA_SET(_pData, _pCmd, _pHdr); \
+#define CRVBOXHGSMI_CMDDATA_SETWB(_pData, _pCmd, _pHdr, _pWb, _cbWb, _pcbWb, _fHgsmiCmd) do { \
+ CRVBOXHGSMI_CMDDATA_SET(_pData, _pCmd, _pHdr, _fHgsmiCmd); \
(_pData)->pWriteback = (_pWb); \
(_pData)->pcbWriteback = (_pcbWb); \
(_pData)->cbWriteback = (_cbWb); \