summaryrefslogtreecommitdiff
path: root/include/VBox/HostServices/VBoxCrOpenGLSvc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/VBox/HostServices/VBoxCrOpenGLSvc.h')
-rw-r--r--include/VBox/HostServices/VBoxCrOpenGLSvc.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/VBox/HostServices/VBoxCrOpenGLSvc.h b/include/VBox/HostServices/VBoxCrOpenGLSvc.h
index 43356073b..f4b0d4099 100644
--- a/include/VBox/HostServices/VBoxCrOpenGLSvc.h
+++ b/include/VBox/HostServices/VBoxCrOpenGLSvc.h
@@ -41,6 +41,7 @@
#define SHCRGL_HOST_FN_CRHGSMI_CMD (10)
#define SHCRGL_HOST_FN_CRHGSMI_CTL (11)
#endif
+#define SHCRGL_HOST_FN_SET_OUTPUT_REDIRECT (20)
/* crOpenGL guest functions */
#define SHCRGL_GUEST_FN_WRITE (2)
#define SHCRGL_GUEST_FN_READ (3)
@@ -64,8 +65,43 @@
#define SHCRGL_CPARMS_SET_PID (1)
#define SHCRGL_CPARMS_WRITE_BUFFER (4)
#define SHCRGL_CPARMS_WRITE_READ_BUFFERED (3)
+#define SHCRGL_CPARMS_SET_OUTPUT_REDIRECT (1)
+/* @todo Move to H3DOR.h begin */
+
+/* Names of supported output redirect formats. */
+#define H3DOR_FMT_RGBA_TOPDOWN "H3DOR_FMT_RGBA_TOPDOWN"
+
+/* Comma separated list of output formats supported by the output redirect target. */
+#define H3DOR_PROP_FORMATS 0
+
+#pragma pack(1)
+typedef struct {
+ /* The caller's context of the redirection. */
+ const void *pvContext;
+ /* Inform caller that a new window will be redirected. */
+ DECLR3CALLBACKMEMBER(void, H3DORBegin, (const void *pvContext, void **ppvInstance,
+ const char *pszFormat));
+ /* The window dimension has been changed. */
+ DECLR3CALLBACKMEMBER(void, H3DORGeometry, (void *pvInstance,
+ int32_t x, int32_t y, uint32_t w, uint32_t h));
+ /* Update the window visible region. */
+ DECLR3CALLBACKMEMBER(void, H3DORVisibleRegion, (void *pvInstance,
+ uint32_t cRects, RTRECT *paRects));
+ /* A rendered 3D frame is ready. Format of pvData is "pszFormat" parameter of H3DORBegin. */
+ DECLR3CALLBACKMEMBER(void, H3DORFrame, (void *pvInstance,
+ void *pvData, uint32_t cbData));
+ /* The window is closed. */
+ DECLR3CALLBACKMEMBER(void, H3DOREnd, (void *pvInstance));
+ /* Obtain caller's parameters: the list of supported formats, etc. */
+ DECLR3CALLBACKMEMBER(int, H3DORContextProperty, (const void *pvContext, uint32_t index,
+ void *pvBuffer, uint32_t cbBuffer, uint32_t *pcbOut));
+} H3DOUTPUTREDIRECT;
+#pragma pack()
+
+/* @todo Move to H3DOR.h end */
+
#ifdef VBOX_WITH_CRHGSMI
#pragma pack(1)
typedef struct