svga3d_dx.h 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635
  1. /* SPDX-License-Identifier: GPL-2.0 OR MIT */
  2. /**********************************************************
  3. * Copyright 2012-2015 VMware, Inc.
  4. *
  5. * Permission is hereby granted, free of charge, to any person
  6. * obtaining a copy of this software and associated documentation
  7. * files (the "Software"), to deal in the Software without
  8. * restriction, including without limitation the rights to use, copy,
  9. * modify, merge, publish, distribute, sublicense, and/or sell copies
  10. * of the Software, and to permit persons to whom the Software is
  11. * furnished to do so, subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be
  14. * included in all copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  17. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  19. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  20. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  21. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  22. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  23. * SOFTWARE.
  24. *
  25. **********************************************************/
  26. /*
  27. * svga3d_dx.h --
  28. *
  29. * SVGA 3d hardware definitions for DX10 support.
  30. */
  31. #ifndef _SVGA3D_DX_H_
  32. #define _SVGA3D_DX_H_
  33. #define INCLUDE_ALLOW_MODULE
  34. #define INCLUDE_ALLOW_USERLEVEL
  35. #define INCLUDE_ALLOW_VMCORE
  36. #include "includeCheck.h"
  37. #include "svga3d_limits.h"
  38. #define SVGA3D_INPUT_MIN 0
  39. #define SVGA3D_INPUT_PER_VERTEX_DATA 0
  40. #define SVGA3D_INPUT_PER_INSTANCE_DATA 1
  41. #define SVGA3D_INPUT_MAX 2
  42. typedef uint32 SVGA3dInputClassification;
  43. #define SVGA3D_RESOURCE_TYPE_MIN 1
  44. #define SVGA3D_RESOURCE_BUFFER 1
  45. #define SVGA3D_RESOURCE_TEXTURE1D 2
  46. #define SVGA3D_RESOURCE_TEXTURE2D 3
  47. #define SVGA3D_RESOURCE_TEXTURE3D 4
  48. #define SVGA3D_RESOURCE_TEXTURECUBE 5
  49. #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6
  50. #define SVGA3D_RESOURCE_BUFFEREX 6
  51. #define SVGA3D_RESOURCE_TYPE_MAX 7
  52. typedef uint32 SVGA3dResourceType;
  53. #define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0)
  54. #define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1)
  55. #define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2)
  56. #define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3)
  57. #define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \
  58. SVGA3D_COLOR_WRITE_ENABLE_GREEN | \
  59. SVGA3D_COLOR_WRITE_ENABLE_BLUE | \
  60. SVGA3D_COLOR_WRITE_ENABLE_ALPHA)
  61. typedef uint8 SVGA3dColorWriteEnable;
  62. #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0
  63. #define SVGA3D_DEPTH_WRITE_MASK_ALL 1
  64. typedef uint8 SVGA3dDepthWriteMask;
  65. #define SVGA3D_FILTER_MIP_LINEAR (1 << 0)
  66. #define SVGA3D_FILTER_MAG_LINEAR (1 << 2)
  67. #define SVGA3D_FILTER_MIN_LINEAR (1 << 4)
  68. #define SVGA3D_FILTER_ANISOTROPIC (1 << 6)
  69. #define SVGA3D_FILTER_COMPARE (1 << 7)
  70. typedef uint32 SVGA3dFilter;
  71. #define SVGA3D_CULL_INVALID 0
  72. #define SVGA3D_CULL_MIN 1
  73. #define SVGA3D_CULL_NONE 1
  74. #define SVGA3D_CULL_FRONT 2
  75. #define SVGA3D_CULL_BACK 3
  76. #define SVGA3D_CULL_MAX 4
  77. typedef uint8 SVGA3dCullMode;
  78. #define SVGA3D_COMPARISON_INVALID 0
  79. #define SVGA3D_COMPARISON_MIN 1
  80. #define SVGA3D_COMPARISON_NEVER 1
  81. #define SVGA3D_COMPARISON_LESS 2
  82. #define SVGA3D_COMPARISON_EQUAL 3
  83. #define SVGA3D_COMPARISON_LESS_EQUAL 4
  84. #define SVGA3D_COMPARISON_GREATER 5
  85. #define SVGA3D_COMPARISON_NOT_EQUAL 6
  86. #define SVGA3D_COMPARISON_GREATER_EQUAL 7
  87. #define SVGA3D_COMPARISON_ALWAYS 8
  88. #define SVGA3D_COMPARISON_MAX 9
  89. typedef uint8 SVGA3dComparisonFunc;
  90. /*
  91. * SVGA3D_MULTISAMPLE_RAST_DISABLE disables MSAA for all primitives.
  92. * SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE, which is supported in SM41,
  93. * disables MSAA for lines only.
  94. */
  95. #define SVGA3D_MULTISAMPLE_RAST_DISABLE 0
  96. #define SVGA3D_MULTISAMPLE_RAST_ENABLE 1
  97. #define SVGA3D_MULTISAMPLE_RAST_DX_MAX 1
  98. #define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE 2
  99. #define SVGA3D_MULTISAMPLE_RAST_MAX 2
  100. typedef uint8 SVGA3dMultisampleRastEnable;
  101. #define SVGA3D_DX_MAX_VERTEXBUFFERS 32
  102. #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16
  103. #define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32
  104. #define SVGA3D_DX_MAX_SOTARGETS 4
  105. #define SVGA3D_DX_MAX_SRVIEWS 128
  106. #define SVGA3D_DX_MAX_CONSTBUFFERS 16
  107. #define SVGA3D_DX_MAX_SAMPLERS 16
  108. #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))
  109. typedef uint32 SVGA3dShaderResourceViewId;
  110. typedef uint32 SVGA3dRenderTargetViewId;
  111. typedef uint32 SVGA3dDepthStencilViewId;
  112. typedef uint32 SVGA3dShaderId;
  113. typedef uint32 SVGA3dElementLayoutId;
  114. typedef uint32 SVGA3dSamplerId;
  115. typedef uint32 SVGA3dBlendStateId;
  116. typedef uint32 SVGA3dDepthStencilStateId;
  117. typedef uint32 SVGA3dRasterizerStateId;
  118. typedef uint32 SVGA3dQueryId;
  119. typedef uint32 SVGA3dStreamOutputId;
  120. typedef union {
  121. struct {
  122. float r;
  123. float g;
  124. float b;
  125. float a;
  126. };
  127. float value[4];
  128. } SVGA3dRGBAFloat;
  129. typedef
  130. #include "vmware_pack_begin.h"
  131. struct {
  132. uint32 cid;
  133. SVGAMobId mobid;
  134. }
  135. #include "vmware_pack_end.h"
  136. SVGAOTableDXContextEntry;
  137. typedef
  138. #include "vmware_pack_begin.h"
  139. struct SVGA3dCmdDXDefineContext {
  140. uint32 cid;
  141. }
  142. #include "vmware_pack_end.h"
  143. SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
  144. typedef
  145. #include "vmware_pack_begin.h"
  146. struct SVGA3dCmdDXDestroyContext {
  147. uint32 cid;
  148. }
  149. #include "vmware_pack_end.h"
  150. SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */
  151. /*
  152. * Bind a DX context.
  153. *
  154. * validContents should be set to 0 for new contexts,
  155. * and 1 if this is an old context which is getting paged
  156. * back on to the device.
  157. *
  158. * For new contexts, it is recommended that the driver
  159. * issue commands to initialize all interesting state
  160. * prior to rendering.
  161. */
  162. typedef
  163. #include "vmware_pack_begin.h"
  164. struct SVGA3dCmdDXBindContext {
  165. uint32 cid;
  166. SVGAMobId mobid;
  167. uint32 validContents;
  168. }
  169. #include "vmware_pack_end.h"
  170. SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */
  171. /*
  172. * Readback a DX context.
  173. * (Request that the device flush the contents back into guest memory.)
  174. */
  175. typedef
  176. #include "vmware_pack_begin.h"
  177. struct SVGA3dCmdDXReadbackContext {
  178. uint32 cid;
  179. }
  180. #include "vmware_pack_end.h"
  181. SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
  182. /*
  183. * Invalidate a guest-backed context.
  184. */
  185. typedef
  186. #include "vmware_pack_begin.h"
  187. struct SVGA3dCmdDXInvalidateContext {
  188. uint32 cid;
  189. }
  190. #include "vmware_pack_end.h"
  191. SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
  192. typedef
  193. #include "vmware_pack_begin.h"
  194. struct SVGA3dCmdDXSetSingleConstantBuffer {
  195. uint32 slot;
  196. SVGA3dShaderType type;
  197. SVGA3dSurfaceId sid;
  198. uint32 offsetInBytes;
  199. uint32 sizeInBytes;
  200. }
  201. #include "vmware_pack_end.h"
  202. SVGA3dCmdDXSetSingleConstantBuffer;
  203. /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
  204. typedef
  205. #include "vmware_pack_begin.h"
  206. struct SVGA3dCmdDXSetShaderResources {
  207. uint32 startView;
  208. SVGA3dShaderType type;
  209. /*
  210. * Followed by a variable number of SVGA3dShaderResourceViewId's.
  211. */
  212. }
  213. #include "vmware_pack_end.h"
  214. SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
  215. typedef
  216. #include "vmware_pack_begin.h"
  217. struct SVGA3dCmdDXSetShader {
  218. SVGA3dShaderId shaderId;
  219. SVGA3dShaderType type;
  220. }
  221. #include "vmware_pack_end.h"
  222. SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */
  223. typedef
  224. #include "vmware_pack_begin.h"
  225. struct SVGA3dCmdDXSetSamplers {
  226. uint32 startSampler;
  227. SVGA3dShaderType type;
  228. /*
  229. * Followed by a variable number of SVGA3dSamplerId's.
  230. */
  231. }
  232. #include "vmware_pack_end.h"
  233. SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
  234. typedef
  235. #include "vmware_pack_begin.h"
  236. struct SVGA3dCmdDXDraw {
  237. uint32 vertexCount;
  238. uint32 startVertexLocation;
  239. }
  240. #include "vmware_pack_end.h"
  241. SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */
  242. typedef
  243. #include "vmware_pack_begin.h"
  244. struct SVGA3dCmdDXDrawIndexed {
  245. uint32 indexCount;
  246. uint32 startIndexLocation;
  247. int32 baseVertexLocation;
  248. }
  249. #include "vmware_pack_end.h"
  250. SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
  251. typedef
  252. #include "vmware_pack_begin.h"
  253. struct SVGA3dCmdDXDrawInstanced {
  254. uint32 vertexCountPerInstance;
  255. uint32 instanceCount;
  256. uint32 startVertexLocation;
  257. uint32 startInstanceLocation;
  258. }
  259. #include "vmware_pack_end.h"
  260. SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
  261. typedef
  262. #include "vmware_pack_begin.h"
  263. struct SVGA3dCmdDXDrawIndexedInstanced {
  264. uint32 indexCountPerInstance;
  265. uint32 instanceCount;
  266. uint32 startIndexLocation;
  267. int32 baseVertexLocation;
  268. uint32 startInstanceLocation;
  269. }
  270. #include "vmware_pack_end.h"
  271. SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
  272. typedef
  273. #include "vmware_pack_begin.h"
  274. struct SVGA3dCmdDXDrawAuto {
  275. uint32 pad0;
  276. }
  277. #include "vmware_pack_end.h"
  278. SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */
  279. typedef
  280. #include "vmware_pack_begin.h"
  281. struct SVGA3dCmdDXSetInputLayout {
  282. SVGA3dElementLayoutId elementLayoutId;
  283. }
  284. #include "vmware_pack_end.h"
  285. SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
  286. typedef
  287. #include "vmware_pack_begin.h"
  288. struct SVGA3dVertexBuffer {
  289. SVGA3dSurfaceId sid;
  290. uint32 stride;
  291. uint32 offset;
  292. }
  293. #include "vmware_pack_end.h"
  294. SVGA3dVertexBuffer;
  295. typedef
  296. #include "vmware_pack_begin.h"
  297. struct SVGA3dCmdDXSetVertexBuffers {
  298. uint32 startBuffer;
  299. /* Followed by a variable number of SVGA3dVertexBuffer's. */
  300. }
  301. #include "vmware_pack_end.h"
  302. SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
  303. typedef
  304. #include "vmware_pack_begin.h"
  305. struct SVGA3dCmdDXSetIndexBuffer {
  306. SVGA3dSurfaceId sid;
  307. SVGA3dSurfaceFormat format;
  308. uint32 offset;
  309. }
  310. #include "vmware_pack_end.h"
  311. SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
  312. typedef
  313. #include "vmware_pack_begin.h"
  314. struct SVGA3dCmdDXSetTopology {
  315. SVGA3dPrimitiveType topology;
  316. }
  317. #include "vmware_pack_end.h"
  318. SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
  319. typedef
  320. #include "vmware_pack_begin.h"
  321. struct SVGA3dCmdDXSetRenderTargets {
  322. SVGA3dDepthStencilViewId depthStencilViewId;
  323. /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
  324. }
  325. #include "vmware_pack_end.h"
  326. SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
  327. typedef
  328. #include "vmware_pack_begin.h"
  329. struct SVGA3dCmdDXSetBlendState {
  330. SVGA3dBlendStateId blendId;
  331. float blendFactor[4];
  332. uint32 sampleMask;
  333. }
  334. #include "vmware_pack_end.h"
  335. SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
  336. typedef
  337. #include "vmware_pack_begin.h"
  338. struct SVGA3dCmdDXSetDepthStencilState {
  339. SVGA3dDepthStencilStateId depthStencilId;
  340. uint32 stencilRef;
  341. }
  342. #include "vmware_pack_end.h"
  343. SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
  344. typedef
  345. #include "vmware_pack_begin.h"
  346. struct SVGA3dCmdDXSetRasterizerState {
  347. SVGA3dRasterizerStateId rasterizerId;
  348. }
  349. #include "vmware_pack_end.h"
  350. SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
  351. #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
  352. typedef uint32 SVGA3dDXQueryFlags;
  353. /*
  354. * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device
  355. * to track query state transitions, but are not intended to be used by the
  356. * driver.
  357. */
  358. #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */
  359. #define SVGADX_QDSTATE_MIN 0
  360. #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */
  361. #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */
  362. #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */
  363. #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */
  364. #define SVGADX_QDSTATE_MAX 4
  365. typedef uint8 SVGADXQueryDeviceState;
  366. typedef
  367. #include "vmware_pack_begin.h"
  368. struct {
  369. SVGA3dQueryTypeUint8 type;
  370. uint16 pad0;
  371. SVGADXQueryDeviceState state;
  372. SVGA3dDXQueryFlags flags;
  373. SVGAMobId mobid;
  374. uint32 offset;
  375. }
  376. #include "vmware_pack_end.h"
  377. SVGACOTableDXQueryEntry;
  378. typedef
  379. #include "vmware_pack_begin.h"
  380. struct SVGA3dCmdDXDefineQuery {
  381. SVGA3dQueryId queryId;
  382. SVGA3dQueryType type;
  383. SVGA3dDXQueryFlags flags;
  384. }
  385. #include "vmware_pack_end.h"
  386. SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
  387. typedef
  388. #include "vmware_pack_begin.h"
  389. struct SVGA3dCmdDXDestroyQuery {
  390. SVGA3dQueryId queryId;
  391. }
  392. #include "vmware_pack_end.h"
  393. SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
  394. typedef
  395. #include "vmware_pack_begin.h"
  396. struct SVGA3dCmdDXBindQuery {
  397. SVGA3dQueryId queryId;
  398. SVGAMobId mobid;
  399. }
  400. #include "vmware_pack_end.h"
  401. SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */
  402. typedef
  403. #include "vmware_pack_begin.h"
  404. struct SVGA3dCmdDXSetQueryOffset {
  405. SVGA3dQueryId queryId;
  406. uint32 mobOffset;
  407. }
  408. #include "vmware_pack_end.h"
  409. SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
  410. typedef
  411. #include "vmware_pack_begin.h"
  412. struct SVGA3dCmdDXBeginQuery {
  413. SVGA3dQueryId queryId;
  414. }
  415. #include "vmware_pack_end.h"
  416. SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
  417. typedef
  418. #include "vmware_pack_begin.h"
  419. struct SVGA3dCmdDXEndQuery {
  420. SVGA3dQueryId queryId;
  421. }
  422. #include "vmware_pack_end.h"
  423. SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */
  424. typedef
  425. #include "vmware_pack_begin.h"
  426. struct SVGA3dCmdDXReadbackQuery {
  427. SVGA3dQueryId queryId;
  428. }
  429. #include "vmware_pack_end.h"
  430. SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */
  431. typedef
  432. #include "vmware_pack_begin.h"
  433. struct SVGA3dCmdDXMoveQuery {
  434. SVGA3dQueryId queryId;
  435. SVGAMobId mobid;
  436. uint32 mobOffset;
  437. }
  438. #include "vmware_pack_end.h"
  439. SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */
  440. typedef
  441. #include "vmware_pack_begin.h"
  442. struct SVGA3dCmdDXBindAllQuery {
  443. uint32 cid;
  444. SVGAMobId mobid;
  445. }
  446. #include "vmware_pack_end.h"
  447. SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
  448. typedef
  449. #include "vmware_pack_begin.h"
  450. struct SVGA3dCmdDXReadbackAllQuery {
  451. uint32 cid;
  452. }
  453. #include "vmware_pack_end.h"
  454. SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
  455. typedef
  456. #include "vmware_pack_begin.h"
  457. struct SVGA3dCmdDXSetPredication {
  458. SVGA3dQueryId queryId;
  459. uint32 predicateValue;
  460. }
  461. #include "vmware_pack_end.h"
  462. SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */
  463. typedef
  464. #include "vmware_pack_begin.h"
  465. struct MKS3dDXSOState {
  466. uint32 offset; /* Starting offset */
  467. uint32 intOffset; /* Internal offset */
  468. uint32 vertexCount; /* vertices written */
  469. uint32 sizeInBytes; /* max bytes to write */
  470. }
  471. #include "vmware_pack_end.h"
  472. SVGA3dDXSOState;
  473. /* Set the offset field to this value to append SO values to the buffer */
  474. #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
  475. typedef
  476. #include "vmware_pack_begin.h"
  477. struct SVGA3dSoTarget {
  478. SVGA3dSurfaceId sid;
  479. uint32 offset;
  480. uint32 sizeInBytes;
  481. }
  482. #include "vmware_pack_end.h"
  483. SVGA3dSoTarget;
  484. typedef
  485. #include "vmware_pack_begin.h"
  486. struct SVGA3dCmdDXSetSOTargets {
  487. uint32 pad0;
  488. /* Followed by a variable number of SVGA3dSOTarget's. */
  489. }
  490. #include "vmware_pack_end.h"
  491. SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
  492. typedef
  493. #include "vmware_pack_begin.h"
  494. struct SVGA3dViewport
  495. {
  496. float x;
  497. float y;
  498. float width;
  499. float height;
  500. float minDepth;
  501. float maxDepth;
  502. }
  503. #include "vmware_pack_end.h"
  504. SVGA3dViewport;
  505. typedef
  506. #include "vmware_pack_begin.h"
  507. struct SVGA3dCmdDXSetViewports {
  508. uint32 pad0;
  509. /* Followed by a variable number of SVGA3dViewport's. */
  510. }
  511. #include "vmware_pack_end.h"
  512. SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
  513. #define SVGA3D_DX_MAX_VIEWPORTS 16
  514. typedef
  515. #include "vmware_pack_begin.h"
  516. struct SVGA3dCmdDXSetScissorRects {
  517. uint32 pad0;
  518. /* Followed by a variable number of SVGASignedRect's. */
  519. }
  520. #include "vmware_pack_end.h"
  521. SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
  522. #define SVGA3D_DX_MAX_SCISSORRECTS 16
  523. typedef
  524. #include "vmware_pack_begin.h"
  525. struct SVGA3dCmdDXClearRenderTargetView {
  526. SVGA3dRenderTargetViewId renderTargetViewId;
  527. SVGA3dRGBAFloat rgba;
  528. }
  529. #include "vmware_pack_end.h"
  530. SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
  531. typedef
  532. #include "vmware_pack_begin.h"
  533. struct SVGA3dCmdDXClearDepthStencilView {
  534. uint16 flags;
  535. uint16 stencil;
  536. SVGA3dDepthStencilViewId depthStencilViewId;
  537. float depth;
  538. }
  539. #include "vmware_pack_end.h"
  540. SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
  541. typedef
  542. #include "vmware_pack_begin.h"
  543. struct SVGA3dCmdDXPredCopyRegion {
  544. SVGA3dSurfaceId dstSid;
  545. uint32 dstSubResource;
  546. SVGA3dSurfaceId srcSid;
  547. uint32 srcSubResource;
  548. SVGA3dCopyBox box;
  549. }
  550. #include "vmware_pack_end.h"
  551. SVGA3dCmdDXPredCopyRegion;
  552. /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
  553. typedef
  554. #include "vmware_pack_begin.h"
  555. struct SVGA3dCmdDXPredCopy {
  556. SVGA3dSurfaceId dstSid;
  557. SVGA3dSurfaceId srcSid;
  558. }
  559. #include "vmware_pack_end.h"
  560. SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */
  561. typedef
  562. #include "vmware_pack_begin.h"
  563. struct SVGA3dCmdDXPredConvertRegion {
  564. SVGA3dSurfaceId dstSid;
  565. uint32 dstSubResource;
  566. SVGA3dBox destBox;
  567. SVGA3dSurfaceId srcSid;
  568. uint32 srcSubResource;
  569. SVGA3dBox srcBox;
  570. }
  571. #include "vmware_pack_end.h"
  572. SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */
  573. typedef
  574. #include "vmware_pack_begin.h"
  575. struct SVGA3dCmdDXPredConvert {
  576. SVGA3dSurfaceId dstSid;
  577. SVGA3dSurfaceId srcSid;
  578. }
  579. #include "vmware_pack_end.h"
  580. SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */
  581. typedef
  582. #include "vmware_pack_begin.h"
  583. struct SVGA3dCmdDXBufferCopy {
  584. SVGA3dSurfaceId dest;
  585. SVGA3dSurfaceId src;
  586. uint32 destX;
  587. uint32 srcX;
  588. uint32 width;
  589. }
  590. #include "vmware_pack_end.h"
  591. SVGA3dCmdDXBufferCopy;
  592. /* SVGA_3D_CMD_DX_BUFFER_COPY */
  593. /*
  594. * Perform a surface copy between a multisample, and a non-multisampled
  595. * surface.
  596. */
  597. typedef
  598. #include "vmware_pack_begin.h"
  599. struct {
  600. SVGA3dSurfaceId dstSid;
  601. uint32 dstSubResource;
  602. SVGA3dSurfaceId srcSid;
  603. uint32 srcSubResource;
  604. SVGA3dSurfaceFormat copyFormat;
  605. }
  606. #include "vmware_pack_end.h"
  607. SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */
  608. /*
  609. * Perform a predicated surface copy between a multisample, and a
  610. * non-multisampled surface.
  611. */
  612. typedef
  613. #include "vmware_pack_begin.h"
  614. struct {
  615. SVGA3dSurfaceId dstSid;
  616. uint32 dstSubResource;
  617. SVGA3dSurfaceId srcSid;
  618. uint32 srcSubResource;
  619. SVGA3dSurfaceFormat copyFormat;
  620. }
  621. #include "vmware_pack_end.h"
  622. SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */
  623. typedef uint32 SVGA3dDXPresentBltMode;
  624. #define SVGADX_PRESENTBLT_LINEAR (1 << 0)
  625. #define SVGADX_PRESENTBLT_FORCE_SRC_SRGB (1 << 1)
  626. #define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2)
  627. #define SVGADX_PRESENTBLT_MODE_MAX (1 << 3)
  628. typedef
  629. #include "vmware_pack_begin.h"
  630. struct SVGA3dCmdDXPresentBlt {
  631. SVGA3dSurfaceId srcSid;
  632. uint32 srcSubResource;
  633. SVGA3dSurfaceId dstSid;
  634. uint32 destSubResource;
  635. SVGA3dBox boxSrc;
  636. SVGA3dBox boxDest;
  637. SVGA3dDXPresentBltMode mode;
  638. }
  639. #include "vmware_pack_end.h"
  640. SVGA3dCmdDXPresentBlt; /* SVGA_3D_CMD_DX_PRESENTBLT*/
  641. typedef
  642. #include "vmware_pack_begin.h"
  643. struct SVGA3dCmdDXGenMips {
  644. SVGA3dShaderResourceViewId shaderResourceViewId;
  645. }
  646. #include "vmware_pack_end.h"
  647. SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */
  648. /*
  649. * Update a sub-resource in a guest-backed resource.
  650. * (Inform the device that the guest-contents have been updated.)
  651. */
  652. typedef
  653. #include "vmware_pack_begin.h"
  654. struct SVGA3dCmdDXUpdateSubResource {
  655. SVGA3dSurfaceId sid;
  656. uint32 subResource;
  657. SVGA3dBox box;
  658. }
  659. #include "vmware_pack_end.h"
  660. SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */
  661. /*
  662. * Readback a subresource in a guest-backed resource.
  663. * (Request the device to flush the dirty contents into the guest.)
  664. */
  665. typedef
  666. #include "vmware_pack_begin.h"
  667. struct SVGA3dCmdDXReadbackSubResource {
  668. SVGA3dSurfaceId sid;
  669. uint32 subResource;
  670. }
  671. #include "vmware_pack_end.h"
  672. SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */
  673. /*
  674. * Invalidate an image in a guest-backed surface.
  675. * (Notify the device that the contents can be lost.)
  676. */
  677. typedef
  678. #include "vmware_pack_begin.h"
  679. struct SVGA3dCmdDXInvalidateSubResource {
  680. SVGA3dSurfaceId sid;
  681. uint32 subResource;
  682. }
  683. #include "vmware_pack_end.h"
  684. SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
  685. /*
  686. * Raw byte wise transfer from a buffer surface into another surface
  687. * of the requested box. Supported if 3d is enabled and SVGA_CAP_DX
  688. * is set. This command does not take a context.
  689. */
  690. typedef
  691. #include "vmware_pack_begin.h"
  692. struct SVGA3dCmdDXTransferFromBuffer {
  693. SVGA3dSurfaceId srcSid;
  694. uint32 srcOffset;
  695. uint32 srcPitch;
  696. uint32 srcSlicePitch;
  697. SVGA3dSurfaceId destSid;
  698. uint32 destSubResource;
  699. SVGA3dBox destBox;
  700. }
  701. #include "vmware_pack_end.h"
  702. SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
  703. /*
  704. * Raw byte wise transfer from a buffer surface into another surface
  705. * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
  706. * The context is implied from the command buffer header.
  707. */
  708. typedef
  709. #include "vmware_pack_begin.h"
  710. struct SVGA3dCmdDXPredTransferFromBuffer {
  711. SVGA3dSurfaceId srcSid;
  712. uint32 srcOffset;
  713. uint32 srcPitch;
  714. uint32 srcSlicePitch;
  715. SVGA3dSurfaceId destSid;
  716. uint32 destSubResource;
  717. SVGA3dBox destBox;
  718. }
  719. #include "vmware_pack_end.h"
  720. SVGA3dCmdDXPredTransferFromBuffer;
  721. /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
  722. typedef
  723. #include "vmware_pack_begin.h"
  724. struct SVGA3dCmdDXSurfaceCopyAndReadback {
  725. SVGA3dSurfaceId srcSid;
  726. SVGA3dSurfaceId destSid;
  727. SVGA3dCopyBox box;
  728. }
  729. #include "vmware_pack_end.h"
  730. SVGA3dCmdDXSurfaceCopyAndReadback;
  731. /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
  732. /*
  733. * SVGA_DX_HINT_NONE: Does nothing.
  734. *
  735. * SVGA_DX_HINT_PREFETCH_OBJECT:
  736. * SVGA_DX_HINT_PREEVICT_OBJECT:
  737. * Consumes a SVGAObjectRef, and hints that the host should consider
  738. * fetching/evicting the specified object.
  739. *
  740. * An id of SVGA3D_INVALID_ID can be used if the guest isn't sure
  741. * what object was affected. (For instance, if the guest knows that
  742. * it is about to evict a DXShader, but doesn't know precisely which one,
  743. * the device can still use this to help limit it's search, or track
  744. * how many page-outs have happened.)
  745. *
  746. * SVGA_DX_HINT_PREFETCH_COBJECT:
  747. * SVGA_DX_HINT_PREEVICT_COBJECT:
  748. * Same as the above, except they consume an SVGACObjectRef.
  749. */
  750. typedef uint32 SVGADXHintId;
  751. #define SVGA_DX_HINT_NONE 0
  752. #define SVGA_DX_HINT_PREFETCH_OBJECT 1
  753. #define SVGA_DX_HINT_PREEVICT_OBJECT 2
  754. #define SVGA_DX_HINT_PREFETCH_COBJECT 3
  755. #define SVGA_DX_HINT_PREEVICT_COBJECT 4
  756. #define SVGA_DX_HINT_MAX 5
  757. typedef
  758. #include "vmware_pack_begin.h"
  759. struct SVGAObjectRef {
  760. SVGAOTableType type;
  761. uint32 id;
  762. }
  763. #include "vmware_pack_end.h"
  764. SVGAObjectRef;
  765. typedef
  766. #include "vmware_pack_begin.h"
  767. struct SVGACObjectRef {
  768. SVGACOTableType type;
  769. uint32 cid;
  770. uint32 id;
  771. }
  772. #include "vmware_pack_end.h"
  773. SVGACObjectRef;
  774. typedef
  775. #include "vmware_pack_begin.h"
  776. struct SVGA3dCmdDXHint {
  777. SVGADXHintId hintId;
  778. /*
  779. * Followed by variable sized data depending on the hintId.
  780. */
  781. }
  782. #include "vmware_pack_end.h"
  783. SVGA3dCmdDXHint;
  784. /* SVGA_3D_CMD_DX_HINT */
  785. typedef
  786. #include "vmware_pack_begin.h"
  787. struct SVGA3dCmdDXBufferUpdate {
  788. SVGA3dSurfaceId sid;
  789. uint32 x;
  790. uint32 width;
  791. }
  792. #include "vmware_pack_end.h"
  793. SVGA3dCmdDXBufferUpdate;
  794. /* SVGA_3D_CMD_DX_BUFFER_UPDATE */
  795. typedef
  796. #include "vmware_pack_begin.h"
  797. struct SVGA3dCmdDXSetConstantBufferOffset {
  798. uint32 slot;
  799. uint32 offsetInBytes;
  800. }
  801. #include "vmware_pack_end.h"
  802. SVGA3dCmdDXSetConstantBufferOffset;
  803. typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;
  804. /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */
  805. typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;
  806. /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */
  807. typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
  808. /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
  809. typedef
  810. #include "vmware_pack_begin.h"
  811. struct {
  812. union {
  813. struct {
  814. uint32 firstElement;
  815. uint32 numElements;
  816. uint32 pad0;
  817. uint32 pad1;
  818. } buffer;
  819. struct {
  820. uint32 mostDetailedMip;
  821. uint32 firstArraySlice;
  822. uint32 mipLevels;
  823. uint32 arraySize;
  824. } tex; /* 1d, 2d, 3d, cube */
  825. struct {
  826. uint32 firstElement;
  827. uint32 numElements;
  828. uint32 flags;
  829. uint32 pad0;
  830. } bufferex;
  831. };
  832. }
  833. #include "vmware_pack_end.h"
  834. SVGA3dShaderResourceViewDesc;
  835. typedef
  836. #include "vmware_pack_begin.h"
  837. struct {
  838. SVGA3dSurfaceId sid;
  839. SVGA3dSurfaceFormat format;
  840. SVGA3dResourceType resourceDimension;
  841. SVGA3dShaderResourceViewDesc desc;
  842. uint32 pad;
  843. }
  844. #include "vmware_pack_end.h"
  845. SVGACOTableDXSRViewEntry;
  846. typedef
  847. #include "vmware_pack_begin.h"
  848. struct SVGA3dCmdDXDefineShaderResourceView {
  849. SVGA3dShaderResourceViewId shaderResourceViewId;
  850. SVGA3dSurfaceId sid;
  851. SVGA3dSurfaceFormat format;
  852. SVGA3dResourceType resourceDimension;
  853. SVGA3dShaderResourceViewDesc desc;
  854. }
  855. #include "vmware_pack_end.h"
  856. SVGA3dCmdDXDefineShaderResourceView;
  857. /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
  858. typedef
  859. #include "vmware_pack_begin.h"
  860. struct SVGA3dCmdDXDestroyShaderResourceView {
  861. SVGA3dShaderResourceViewId shaderResourceViewId;
  862. }
  863. #include "vmware_pack_end.h"
  864. SVGA3dCmdDXDestroyShaderResourceView;
  865. /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
  866. typedef
  867. #include "vmware_pack_begin.h"
  868. struct SVGA3dRenderTargetViewDesc {
  869. union {
  870. struct {
  871. uint32 firstElement;
  872. uint32 numElements;
  873. uint32 padding0;
  874. } buffer;
  875. struct {
  876. uint32 mipSlice;
  877. uint32 firstArraySlice;
  878. uint32 arraySize;
  879. } tex; /* 1d, 2d, cube */
  880. struct {
  881. uint32 mipSlice;
  882. uint32 firstW;
  883. uint32 wSize;
  884. } tex3D;
  885. };
  886. }
  887. #include "vmware_pack_end.h"
  888. SVGA3dRenderTargetViewDesc;
  889. typedef
  890. #include "vmware_pack_begin.h"
  891. struct {
  892. SVGA3dSurfaceId sid;
  893. SVGA3dSurfaceFormat format;
  894. SVGA3dResourceType resourceDimension;
  895. SVGA3dRenderTargetViewDesc desc;
  896. uint32 pad[2];
  897. }
  898. #include "vmware_pack_end.h"
  899. SVGACOTableDXRTViewEntry;
  900. typedef
  901. #include "vmware_pack_begin.h"
  902. struct SVGA3dCmdDXDefineRenderTargetView {
  903. SVGA3dRenderTargetViewId renderTargetViewId;
  904. SVGA3dSurfaceId sid;
  905. SVGA3dSurfaceFormat format;
  906. SVGA3dResourceType resourceDimension;
  907. SVGA3dRenderTargetViewDesc desc;
  908. }
  909. #include "vmware_pack_end.h"
  910. SVGA3dCmdDXDefineRenderTargetView;
  911. /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
  912. typedef
  913. #include "vmware_pack_begin.h"
  914. struct SVGA3dCmdDXDestroyRenderTargetView {
  915. SVGA3dRenderTargetViewId renderTargetViewId;
  916. }
  917. #include "vmware_pack_end.h"
  918. SVGA3dCmdDXDestroyRenderTargetView;
  919. /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */
  920. /*
  921. */
  922. #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01
  923. #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02
  924. #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03
  925. typedef uint8 SVGA3DCreateDSViewFlags;
  926. typedef
  927. #include "vmware_pack_begin.h"
  928. struct {
  929. SVGA3dSurfaceId sid;
  930. SVGA3dSurfaceFormat format;
  931. SVGA3dResourceType resourceDimension;
  932. uint32 mipSlice;
  933. uint32 firstArraySlice;
  934. uint32 arraySize;
  935. SVGA3DCreateDSViewFlags flags;
  936. uint8 pad0;
  937. uint16 pad1;
  938. uint32 pad2;
  939. }
  940. #include "vmware_pack_end.h"
  941. SVGACOTableDXDSViewEntry;
  942. typedef
  943. #include "vmware_pack_begin.h"
  944. struct SVGA3dCmdDXDefineDepthStencilView {
  945. SVGA3dDepthStencilViewId depthStencilViewId;
  946. SVGA3dSurfaceId sid;
  947. SVGA3dSurfaceFormat format;
  948. SVGA3dResourceType resourceDimension;
  949. uint32 mipSlice;
  950. uint32 firstArraySlice;
  951. uint32 arraySize;
  952. SVGA3DCreateDSViewFlags flags;
  953. uint8 pad0;
  954. uint16 pad1;
  955. }
  956. #include "vmware_pack_end.h"
  957. SVGA3dCmdDXDefineDepthStencilView;
  958. /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
  959. typedef
  960. #include "vmware_pack_begin.h"
  961. struct SVGA3dCmdDXDestroyDepthStencilView {
  962. SVGA3dDepthStencilViewId depthStencilViewId;
  963. }
  964. #include "vmware_pack_end.h"
  965. SVGA3dCmdDXDestroyDepthStencilView;
  966. /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
  967. typedef
  968. #include "vmware_pack_begin.h"
  969. struct SVGA3dInputElementDesc {
  970. uint32 inputSlot;
  971. uint32 alignedByteOffset;
  972. SVGA3dSurfaceFormat format;
  973. SVGA3dInputClassification inputSlotClass;
  974. uint32 instanceDataStepRate;
  975. uint32 inputRegister;
  976. }
  977. #include "vmware_pack_end.h"
  978. SVGA3dInputElementDesc;
  979. typedef
  980. #include "vmware_pack_begin.h"
  981. struct {
  982. uint32 elid;
  983. uint32 numDescs;
  984. SVGA3dInputElementDesc desc[32];
  985. uint32 pad[62];
  986. }
  987. #include "vmware_pack_end.h"
  988. SVGACOTableDXElementLayoutEntry;
  989. typedef
  990. #include "vmware_pack_begin.h"
  991. struct SVGA3dCmdDXDefineElementLayout {
  992. SVGA3dElementLayoutId elementLayoutId;
  993. /* Followed by a variable number of SVGA3dInputElementDesc's. */
  994. }
  995. #include "vmware_pack_end.h"
  996. SVGA3dCmdDXDefineElementLayout;
  997. /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
  998. typedef
  999. #include "vmware_pack_begin.h"
  1000. struct SVGA3dCmdDXDestroyElementLayout {
  1001. SVGA3dElementLayoutId elementLayoutId;
  1002. }
  1003. #include "vmware_pack_end.h"
  1004. SVGA3dCmdDXDestroyElementLayout;
  1005. /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
  1006. #define SVGA3D_DX_MAX_RENDER_TARGETS 8
  1007. typedef
  1008. #include "vmware_pack_begin.h"
  1009. struct SVGA3dDXBlendStatePerRT {
  1010. uint8 blendEnable;
  1011. uint8 srcBlend;
  1012. uint8 destBlend;
  1013. uint8 blendOp;
  1014. uint8 srcBlendAlpha;
  1015. uint8 destBlendAlpha;
  1016. uint8 blendOpAlpha;
  1017. SVGA3dColorWriteEnable renderTargetWriteMask;
  1018. uint8 logicOpEnable;
  1019. uint8 logicOp;
  1020. uint16 pad0;
  1021. }
  1022. #include "vmware_pack_end.h"
  1023. SVGA3dDXBlendStatePerRT;
  1024. typedef
  1025. #include "vmware_pack_begin.h"
  1026. struct {
  1027. uint8 alphaToCoverageEnable;
  1028. uint8 independentBlendEnable;
  1029. uint16 pad0;
  1030. SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
  1031. uint32 pad1[7];
  1032. }
  1033. #include "vmware_pack_end.h"
  1034. SVGACOTableDXBlendStateEntry;
  1035. /*
  1036. */
  1037. typedef
  1038. #include "vmware_pack_begin.h"
  1039. struct SVGA3dCmdDXDefineBlendState {
  1040. SVGA3dBlendStateId blendId;
  1041. uint8 alphaToCoverageEnable;
  1042. uint8 independentBlendEnable;
  1043. uint16 pad0;
  1044. SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
  1045. }
  1046. #include "vmware_pack_end.h"
  1047. SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
  1048. typedef
  1049. #include "vmware_pack_begin.h"
  1050. struct SVGA3dCmdDXDestroyBlendState {
  1051. SVGA3dBlendStateId blendId;
  1052. }
  1053. #include "vmware_pack_end.h"
  1054. SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
  1055. typedef
  1056. #include "vmware_pack_begin.h"
  1057. struct {
  1058. uint8 depthEnable;
  1059. SVGA3dDepthWriteMask depthWriteMask;
  1060. SVGA3dComparisonFunc depthFunc;
  1061. uint8 stencilEnable;
  1062. uint8 frontEnable;
  1063. uint8 backEnable;
  1064. uint8 stencilReadMask;
  1065. uint8 stencilWriteMask;
  1066. uint8 frontStencilFailOp;
  1067. uint8 frontStencilDepthFailOp;
  1068. uint8 frontStencilPassOp;
  1069. SVGA3dComparisonFunc frontStencilFunc;
  1070. uint8 backStencilFailOp;
  1071. uint8 backStencilDepthFailOp;
  1072. uint8 backStencilPassOp;
  1073. SVGA3dComparisonFunc backStencilFunc;
  1074. }
  1075. #include "vmware_pack_end.h"
  1076. SVGACOTableDXDepthStencilEntry;
  1077. /*
  1078. */
  1079. typedef
  1080. #include "vmware_pack_begin.h"
  1081. struct SVGA3dCmdDXDefineDepthStencilState {
  1082. SVGA3dDepthStencilStateId depthStencilId;
  1083. uint8 depthEnable;
  1084. SVGA3dDepthWriteMask depthWriteMask;
  1085. SVGA3dComparisonFunc depthFunc;
  1086. uint8 stencilEnable;
  1087. uint8 frontEnable;
  1088. uint8 backEnable;
  1089. uint8 stencilReadMask;
  1090. uint8 stencilWriteMask;
  1091. uint8 frontStencilFailOp;
  1092. uint8 frontStencilDepthFailOp;
  1093. uint8 frontStencilPassOp;
  1094. SVGA3dComparisonFunc frontStencilFunc;
  1095. uint8 backStencilFailOp;
  1096. uint8 backStencilDepthFailOp;
  1097. uint8 backStencilPassOp;
  1098. SVGA3dComparisonFunc backStencilFunc;
  1099. }
  1100. #include "vmware_pack_end.h"
  1101. SVGA3dCmdDXDefineDepthStencilState;
  1102. /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
  1103. typedef
  1104. #include "vmware_pack_begin.h"
  1105. struct SVGA3dCmdDXDestroyDepthStencilState {
  1106. SVGA3dDepthStencilStateId depthStencilId;
  1107. }
  1108. #include "vmware_pack_end.h"
  1109. SVGA3dCmdDXDestroyDepthStencilState;
  1110. /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
  1111. typedef
  1112. #include "vmware_pack_begin.h"
  1113. struct {
  1114. uint8 fillMode;
  1115. SVGA3dCullMode cullMode;
  1116. uint8 frontCounterClockwise;
  1117. uint8 provokingVertexLast;
  1118. int32 depthBias;
  1119. float depthBiasClamp;
  1120. float slopeScaledDepthBias;
  1121. uint8 depthClipEnable;
  1122. uint8 scissorEnable;
  1123. SVGA3dMultisampleRastEnable multisampleEnable;
  1124. uint8 antialiasedLineEnable;
  1125. float lineWidth;
  1126. uint8 lineStippleEnable;
  1127. uint8 lineStippleFactor;
  1128. uint16 lineStipplePattern;
  1129. uint32 forcedSampleCount;
  1130. }
  1131. #include "vmware_pack_end.h"
  1132. SVGACOTableDXRasterizerStateEntry;
  1133. /*
  1134. */
  1135. typedef
  1136. #include "vmware_pack_begin.h"
  1137. struct SVGA3dCmdDXDefineRasterizerState {
  1138. SVGA3dRasterizerStateId rasterizerId;
  1139. uint8 fillMode;
  1140. SVGA3dCullMode cullMode;
  1141. uint8 frontCounterClockwise;
  1142. uint8 provokingVertexLast;
  1143. int32 depthBias;
  1144. float depthBiasClamp;
  1145. float slopeScaledDepthBias;
  1146. uint8 depthClipEnable;
  1147. uint8 scissorEnable;
  1148. SVGA3dMultisampleRastEnable multisampleEnable;
  1149. uint8 antialiasedLineEnable;
  1150. float lineWidth;
  1151. uint8 lineStippleEnable;
  1152. uint8 lineStippleFactor;
  1153. uint16 lineStipplePattern;
  1154. }
  1155. #include "vmware_pack_end.h"
  1156. SVGA3dCmdDXDefineRasterizerState;
  1157. /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
  1158. typedef
  1159. #include "vmware_pack_begin.h"
  1160. struct SVGA3dCmdDXDestroyRasterizerState {
  1161. SVGA3dRasterizerStateId rasterizerId;
  1162. }
  1163. #include "vmware_pack_end.h"
  1164. SVGA3dCmdDXDestroyRasterizerState;
  1165. /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
  1166. typedef
  1167. #include "vmware_pack_begin.h"
  1168. struct {
  1169. SVGA3dFilter filter;
  1170. uint8 addressU;
  1171. uint8 addressV;
  1172. uint8 addressW;
  1173. uint8 pad0;
  1174. float mipLODBias;
  1175. uint8 maxAnisotropy;
  1176. SVGA3dComparisonFunc comparisonFunc;
  1177. uint16 pad1;
  1178. SVGA3dRGBAFloat borderColor;
  1179. float minLOD;
  1180. float maxLOD;
  1181. uint32 pad2[6];
  1182. }
  1183. #include "vmware_pack_end.h"
  1184. SVGACOTableDXSamplerEntry;
  1185. /*
  1186. */
  1187. typedef
  1188. #include "vmware_pack_begin.h"
  1189. struct SVGA3dCmdDXDefineSamplerState {
  1190. SVGA3dSamplerId samplerId;
  1191. SVGA3dFilter filter;
  1192. uint8 addressU;
  1193. uint8 addressV;
  1194. uint8 addressW;
  1195. uint8 pad0;
  1196. float mipLODBias;
  1197. uint8 maxAnisotropy;
  1198. SVGA3dComparisonFunc comparisonFunc;
  1199. uint16 pad1;
  1200. SVGA3dRGBAFloat borderColor;
  1201. float minLOD;
  1202. float maxLOD;
  1203. }
  1204. #include "vmware_pack_end.h"
  1205. SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
  1206. typedef
  1207. #include "vmware_pack_begin.h"
  1208. struct SVGA3dCmdDXDestroySamplerState {
  1209. SVGA3dSamplerId samplerId;
  1210. }
  1211. #include "vmware_pack_end.h"
  1212. SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
  1213. typedef
  1214. #include "vmware_pack_begin.h"
  1215. struct SVGA3dCmdDXDefineShader {
  1216. SVGA3dShaderId shaderId;
  1217. SVGA3dShaderType type;
  1218. uint32 sizeInBytes; /* Number of bytes of shader text. */
  1219. }
  1220. #include "vmware_pack_end.h"
  1221. SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
  1222. typedef
  1223. #include "vmware_pack_begin.h"
  1224. struct SVGACOTableDXShaderEntry {
  1225. SVGA3dShaderType type;
  1226. uint32 sizeInBytes;
  1227. uint32 offsetInBytes;
  1228. SVGAMobId mobid;
  1229. uint32 pad[4];
  1230. }
  1231. #include "vmware_pack_end.h"
  1232. SVGACOTableDXShaderEntry;
  1233. typedef
  1234. #include "vmware_pack_begin.h"
  1235. struct SVGA3dCmdDXDestroyShader {
  1236. SVGA3dShaderId shaderId;
  1237. }
  1238. #include "vmware_pack_end.h"
  1239. SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
  1240. typedef
  1241. #include "vmware_pack_begin.h"
  1242. struct SVGA3dCmdDXBindShader {
  1243. uint32 cid;
  1244. uint32 shid;
  1245. SVGAMobId mobid;
  1246. uint32 offsetInBytes;
  1247. }
  1248. #include "vmware_pack_end.h"
  1249. SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */
  1250. typedef
  1251. #include "vmware_pack_begin.h"
  1252. struct SVGA3dCmdDXBindAllShader {
  1253. uint32 cid;
  1254. SVGAMobId mobid;
  1255. }
  1256. #include "vmware_pack_end.h"
  1257. SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */
  1258. typedef
  1259. #include "vmware_pack_begin.h"
  1260. struct SVGA3dCmdDXCondBindAllShader {
  1261. uint32 cid;
  1262. SVGAMobId testMobid;
  1263. SVGAMobId mobid;
  1264. }
  1265. #include "vmware_pack_end.h"
  1266. SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */
  1267. /*
  1268. * The maximum number of streamout decl's in each streamout entry.
  1269. */
  1270. #define SVGA3D_MAX_STREAMOUT_DECLS 64
  1271. typedef
  1272. #include "vmware_pack_begin.h"
  1273. struct SVGA3dStreamOutputDeclarationEntry {
  1274. uint32 outputSlot;
  1275. uint32 registerIndex;
  1276. uint8 registerMask;
  1277. uint8 pad0;
  1278. uint16 pad1;
  1279. uint32 stream;
  1280. }
  1281. #include "vmware_pack_end.h"
  1282. SVGA3dStreamOutputDeclarationEntry;
  1283. typedef
  1284. #include "vmware_pack_begin.h"
  1285. struct SVGAOTableStreamOutputEntry {
  1286. uint32 numOutputStreamEntries;
  1287. SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
  1288. uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
  1289. uint32 rasterizedStream;
  1290. uint32 pad[250];
  1291. }
  1292. #include "vmware_pack_end.h"
  1293. SVGACOTableDXStreamOutputEntry;
  1294. typedef
  1295. #include "vmware_pack_begin.h"
  1296. struct SVGA3dCmdDXDefineStreamOutput {
  1297. SVGA3dStreamOutputId soid;
  1298. uint32 numOutputStreamEntries;
  1299. SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
  1300. uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
  1301. uint32 rasterizedStream;
  1302. }
  1303. #include "vmware_pack_end.h"
  1304. SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
  1305. typedef
  1306. #include "vmware_pack_begin.h"
  1307. struct SVGA3dCmdDXDestroyStreamOutput {
  1308. SVGA3dStreamOutputId soid;
  1309. }
  1310. #include "vmware_pack_end.h"
  1311. SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
  1312. typedef
  1313. #include "vmware_pack_begin.h"
  1314. struct SVGA3dCmdDXSetStreamOutput {
  1315. SVGA3dStreamOutputId soid;
  1316. }
  1317. #include "vmware_pack_end.h"
  1318. SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
  1319. typedef
  1320. #include "vmware_pack_begin.h"
  1321. struct {
  1322. uint64 value;
  1323. uint32 mobId;
  1324. uint32 mobOffset;
  1325. }
  1326. #include "vmware_pack_end.h"
  1327. SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
  1328. /*
  1329. * SVGA3dCmdSetCOTable --
  1330. *
  1331. * This command allows the guest to bind a mob to a context-object table.
  1332. */
  1333. typedef
  1334. #include "vmware_pack_begin.h"
  1335. struct SVGA3dCmdDXSetCOTable {
  1336. uint32 cid;
  1337. uint32 mobid;
  1338. SVGACOTableType type;
  1339. uint32 validSizeInBytes;
  1340. }
  1341. #include "vmware_pack_end.h"
  1342. SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */
  1343. /*
  1344. * Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that
  1345. * the new COTable contains the same contents as the old one, except possibly
  1346. * for some new invalid entries at the end.
  1347. *
  1348. * If there is an old cotable mob bound, it also has to still be valid.
  1349. *
  1350. * (Otherwise, guests should use the DXSetCOTableBase command.)
  1351. */
  1352. typedef
  1353. #include "vmware_pack_begin.h"
  1354. struct SVGA3dCmdDXGrowCOTable {
  1355. uint32 cid;
  1356. uint32 mobid;
  1357. SVGACOTableType type;
  1358. uint32 validSizeInBytes;
  1359. }
  1360. #include "vmware_pack_end.h"
  1361. SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */
  1362. typedef
  1363. #include "vmware_pack_begin.h"
  1364. struct SVGA3dCmdDXReadbackCOTable {
  1365. uint32 cid;
  1366. SVGACOTableType type;
  1367. }
  1368. #include "vmware_pack_end.h"
  1369. SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
  1370. typedef
  1371. #include "vmware_pack_begin.h"
  1372. struct SVGA3dCOTableData {
  1373. uint32 mobid;
  1374. }
  1375. #include "vmware_pack_end.h"
  1376. SVGA3dCOTableData;
  1377. typedef
  1378. #include "vmware_pack_begin.h"
  1379. struct SVGA3dBufferBinding {
  1380. uint32 bufferId;
  1381. uint32 stride;
  1382. uint32 offset;
  1383. }
  1384. #include "vmware_pack_end.h"
  1385. SVGA3dBufferBinding;
  1386. typedef
  1387. #include "vmware_pack_begin.h"
  1388. struct SVGA3dConstantBufferBinding {
  1389. uint32 sid;
  1390. uint32 offsetInBytes;
  1391. uint32 sizeInBytes;
  1392. }
  1393. #include "vmware_pack_end.h"
  1394. SVGA3dConstantBufferBinding;
  1395. typedef
  1396. #include "vmware_pack_begin.h"
  1397. struct SVGADXInputAssemblyMobFormat {
  1398. uint32 layoutId;
  1399. SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
  1400. uint32 indexBufferSid;
  1401. uint32 pad;
  1402. uint32 indexBufferOffset;
  1403. uint32 indexBufferFormat;
  1404. uint32 topology;
  1405. }
  1406. #include "vmware_pack_end.h"
  1407. SVGADXInputAssemblyMobFormat;
  1408. typedef
  1409. #include "vmware_pack_begin.h"
  1410. struct SVGADXContextMobFormat {
  1411. SVGADXInputAssemblyMobFormat inputAssembly;
  1412. struct {
  1413. uint32 blendStateId;
  1414. uint32 blendFactor[4];
  1415. uint32 sampleMask;
  1416. uint32 depthStencilStateId;
  1417. uint32 stencilRef;
  1418. uint32 rasterizerStateId;
  1419. uint32 depthStencilViewId;
  1420. uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
  1421. uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];
  1422. } renderState;
  1423. struct {
  1424. uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
  1425. uint32 soid;
  1426. } streamOut;
  1427. uint32 pad0[11];
  1428. uint8 numViewports;
  1429. uint8 numScissorRects;
  1430. uint16 pad1[1];
  1431. uint32 pad2[3];
  1432. SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
  1433. uint32 pad3[32];
  1434. SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
  1435. uint32 pad4[64];
  1436. struct {
  1437. uint32 queryID;
  1438. uint32 value;
  1439. } predication;
  1440. uint32 pad5[2];
  1441. struct {
  1442. uint32 shaderId;
  1443. SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
  1444. uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];
  1445. uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];
  1446. } shaderState[SVGA3D_NUM_SHADERTYPE];
  1447. uint32 pad6[26];
  1448. SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
  1449. SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
  1450. uint32 pad7[380];
  1451. }
  1452. #include "vmware_pack_end.h"
  1453. SVGADXContextMobFormat;
  1454. typedef
  1455. #include "vmware_pack_begin.h"
  1456. struct SVGA3dCmdDXTempSetContext {
  1457. uint32 dxcid;
  1458. }
  1459. #include "vmware_pack_end.h"
  1460. SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */
  1461. #endif /* _SVGA3D_DX_H_ */