VirtualBox

source: vbox/trunk/include/VBox/VBoxUhgsmi.h@ 33116

Last change on this file since 33116 was 33116, checked in by vboxsync, 14 years ago

wddm/3d: chromium hgsmi transport (guest part, disabled)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1/*
2 * Copyright (C) 2010 Oracle Corporation
3 *
4 * This file is part of VirtualBox Open Source Edition (OSE), as
5 * available from http://www.virtualbox.org. This file is free software;
6 * you can redistribute it and/or modify it under the terms of the GNU
7 * General Public License (GPL) as published by the Free Software
8 * Foundation, in version 2 as it comes in the "COPYING" file of the
9 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
10 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
11 */
12#ifndef ___VBoxUhgsmi_h__
13#define ___VBoxUhgsmi_h__
14
15#include <iprt/cdefs.h>
16#include <iprt/types.h>
17
18typedef struct VBOXUHGSMI *PVBOXUHGSMI;
19
20typedef struct VBOXUHGSMI_BUFFER *PVBOXUHGSMI_BUFFER;
21typedef void* HVBOXUHGSMI_SYNCHOBJECT;
22
23typedef enum
24{
25 VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE = 0,
26 VBOXUHGSMI_SYNCHOBJECT_TYPE_EVENT,
27 VBOXUHGSMI_SYNCHOBJECT_TYPE_SEMAPHORE
28} VBOXUHGSMI_SYNCHOBJECT_TYPE;
29
30typedef struct VBOXUHGSMI_BUFFER_LOCK_FLAGS
31{
32 union
33 {
34 struct
35 {
36 uint32_t bReadOnly : 1;
37 uint32_t bWriteOnly : 1;
38 uint32_t bDonotWait : 1;
39 uint32_t bDiscard : 1;
40 uint32_t bLockEntire : 1;
41 uint32_t Reserved : 27;
42 };
43 uint32_t Value;
44 };
45} VBOXUHGSMI_BUFFER_LOCK_FLAGS;
46
47typedef struct VBOXUHGSMI_BUFFER_SUBMIT_FLAGS
48{
49 union
50 {
51 struct
52 {
53 uint32_t bHostReadOnly : 1;
54 uint32_t bHostWriteOnly : 1;
55 uint32_t bDoNotRetire : 1; /* <- the buffer will be uset in a subsequent command */
56 uint32_t bDoNotSignalCompletion : 1; /* <- do not signal notification object on completion for this alloc */
57 uint32_t bEntireBuffer : 1;
58 uint32_t Reserved : 27;
59 };
60 uint32_t Value;
61 };
62} VBOXUHGSMI_BUFFER_SUBMIT_FLAGS, *PVBOXUHGSMI_BUFFER_SUBMIT_FLAGS;
63
64/* the caller can specify NULL as a hSynch and specify a valid enmSynchType to make UHGSMI create a proper object itself,
65 * */
66typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_CREATE(PVBOXUHGSMI pHgsmi, uint32_t cbBuf,
67 VBOXUHGSMI_SYNCHOBJECT_TYPE enmSynchType, HVBOXUHGSMI_SYNCHOBJECT hSynch,
68 PVBOXUHGSMI_BUFFER* ppBuf);
69typedef FNVBOXUHGSMI_BUFFER_CREATE *PFNVBOXUHGSMI_BUFFER_CREATE;
70
71typedef struct VBOXUHGSMI_BUFFER_SUBMIT
72{
73 PVBOXUHGSMI_BUFFER pBuf;
74 uint32_t offData;
75 uint32_t cbData;
76 VBOXUHGSMI_BUFFER_SUBMIT_FLAGS fFlags;
77} VBOXUHGSMI_BUFFER_SUBMIT, *PVBOXUHGSMI_BUFFER_SUBMIT;
78
79typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_SUBMIT_ASYNCH(PVBOXUHGSMI pHgsmi, PVBOXUHGSMI_BUFFER_SUBMIT aBuffers, uint32_t cBuffers);
80typedef FNVBOXUHGSMI_BUFFER_SUBMIT_ASYNCH *PFNVBOXUHGSMI_BUFFER_SUBMIT_ASYNCH;
81
82typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_DESTROY(PVBOXUHGSMI_BUFFER pBuf);
83typedef FNVBOXUHGSMI_BUFFER_DESTROY *PFNVBOXUHGSMI_BUFFER_DESTROY;
84
85typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_LOCK(PVBOXUHGSMI_BUFFER pBuf, uint32_t offLock, uint32_t cbLock, VBOXUHGSMI_BUFFER_LOCK_FLAGS fFlags, void**pvLock);
86typedef FNVBOXUHGSMI_BUFFER_LOCK *PFNVBOXUHGSMI_BUFFER_LOCK;
87
88typedef DECLCALLBACK(int) FNVBOXUHGSMI_BUFFER_UNLOCK(PVBOXUHGSMI_BUFFER pBuf);
89typedef FNVBOXUHGSMI_BUFFER_UNLOCK *PFNVBOXUHGSMI_BUFFER_UNLOCK;
90
91typedef struct VBOXUHGSMI
92{
93 PFNVBOXUHGSMI_BUFFER_CREATE pfnBufferCreate;
94 PFNVBOXUHGSMI_BUFFER_SUBMIT_ASYNCH pfnBufferSubmitAsynch;
95 /* user custom data */
96 void *pvUserData;
97} VBOXUHGSMI, *PVBOXUHGSMI;
98
99typedef struct VBOXUHGSMI_BUFFER
100{
101 PFNVBOXUHGSMI_BUFFER_LOCK pfnLock;
102 PFNVBOXUHGSMI_BUFFER_UNLOCK pfnUnlock;
103 PFNVBOXUHGSMI_BUFFER_DESTROY pfnDestroy;
104
105 /* r/o data added for ease of access and simplicity
106 * modifying it leads to unpredictable behavior */
107 HVBOXUHGSMI_SYNCHOBJECT hSynch;
108 VBOXUHGSMI_SYNCHOBJECT_TYPE enmSynchType;
109 uint32_t cbBuffer;
110 bool bSynchCreated;
111 /* user custom data */
112 void *pvUserData;
113} VBOXUHGSMI_BUFFER, *PVBOXUHGSMI_BUFFER;
114
115#endif /* #ifndef ___VBoxUhgsmi_h__ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette