svga3d_dx.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488
  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_DEPTH_WRITE_MASK_ZERO 0
  54. #define SVGA3D_DEPTH_WRITE_MASK_ALL 1
  55. typedef uint8 SVGA3dDepthWriteMask;
  56. #define SVGA3D_FILTER_MIP_LINEAR (1 << 0)
  57. #define SVGA3D_FILTER_MAG_LINEAR (1 << 2)
  58. #define SVGA3D_FILTER_MIN_LINEAR (1 << 4)
  59. #define SVGA3D_FILTER_ANISOTROPIC (1 << 6)
  60. #define SVGA3D_FILTER_COMPARE (1 << 7)
  61. typedef uint32 SVGA3dFilter;
  62. #define SVGA3D_CULL_INVALID 0
  63. #define SVGA3D_CULL_MIN 1
  64. #define SVGA3D_CULL_NONE 1
  65. #define SVGA3D_CULL_FRONT 2
  66. #define SVGA3D_CULL_BACK 3
  67. #define SVGA3D_CULL_MAX 4
  68. typedef uint8 SVGA3dCullMode;
  69. #define SVGA3D_COMPARISON_INVALID 0
  70. #define SVGA3D_COMPARISON_MIN 1
  71. #define SVGA3D_COMPARISON_NEVER 1
  72. #define SVGA3D_COMPARISON_LESS 2
  73. #define SVGA3D_COMPARISON_EQUAL 3
  74. #define SVGA3D_COMPARISON_LESS_EQUAL 4
  75. #define SVGA3D_COMPARISON_GREATER 5
  76. #define SVGA3D_COMPARISON_NOT_EQUAL 6
  77. #define SVGA3D_COMPARISON_GREATER_EQUAL 7
  78. #define SVGA3D_COMPARISON_ALWAYS 8
  79. #define SVGA3D_COMPARISON_MAX 9
  80. typedef uint8 SVGA3dComparisonFunc;
  81. #define SVGA3D_DX_MAX_VERTEXBUFFERS 32
  82. #define SVGA3D_DX_MAX_SOTARGETS 4
  83. #define SVGA3D_DX_MAX_SRVIEWS 128
  84. #define SVGA3D_DX_MAX_CONSTBUFFERS 16
  85. #define SVGA3D_DX_MAX_SAMPLERS 16
  86. /* Id limits */
  87. static const uint32 SVGA3dBlendObjectCountPerContext = 4096;
  88. static const uint32 SVGA3dDepthStencilObjectCountPerContext = 4096;
  89. typedef uint32 SVGA3dSurfaceId;
  90. typedef uint32 SVGA3dShaderResourceViewId;
  91. typedef uint32 SVGA3dRenderTargetViewId;
  92. typedef uint32 SVGA3dDepthStencilViewId;
  93. typedef uint32 SVGA3dShaderId;
  94. typedef uint32 SVGA3dElementLayoutId;
  95. typedef uint32 SVGA3dSamplerId;
  96. typedef uint32 SVGA3dBlendStateId;
  97. typedef uint32 SVGA3dDepthStencilStateId;
  98. typedef uint32 SVGA3dRasterizerStateId;
  99. typedef uint32 SVGA3dQueryId;
  100. typedef uint32 SVGA3dStreamOutputId;
  101. typedef union {
  102. struct {
  103. float r;
  104. float g;
  105. float b;
  106. float a;
  107. };
  108. float value[4];
  109. } SVGA3dRGBAFloat;
  110. typedef
  111. #include "vmware_pack_begin.h"
  112. struct {
  113. uint32 cid;
  114. SVGAMobId mobid;
  115. }
  116. #include "vmware_pack_end.h"
  117. SVGAOTableDXContextEntry;
  118. typedef
  119. #include "vmware_pack_begin.h"
  120. struct SVGA3dCmdDXDefineContext {
  121. uint32 cid;
  122. }
  123. #include "vmware_pack_end.h"
  124. SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
  125. typedef
  126. #include "vmware_pack_begin.h"
  127. struct SVGA3dCmdDXDestroyContext {
  128. uint32 cid;
  129. }
  130. #include "vmware_pack_end.h"
  131. SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */
  132. /*
  133. * Bind a DX context.
  134. *
  135. * validContents should be set to 0 for new contexts,
  136. * and 1 if this is an old context which is getting paged
  137. * back on to the device.
  138. *
  139. * For new contexts, it is recommended that the driver
  140. * issue commands to initialize all interesting state
  141. * prior to rendering.
  142. */
  143. typedef
  144. #include "vmware_pack_begin.h"
  145. struct SVGA3dCmdDXBindContext {
  146. uint32 cid;
  147. SVGAMobId mobid;
  148. uint32 validContents;
  149. }
  150. #include "vmware_pack_end.h"
  151. SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */
  152. /*
  153. * Readback a DX context.
  154. * (Request that the device flush the contents back into guest memory.)
  155. */
  156. typedef
  157. #include "vmware_pack_begin.h"
  158. struct SVGA3dCmdDXReadbackContext {
  159. uint32 cid;
  160. }
  161. #include "vmware_pack_end.h"
  162. SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
  163. /*
  164. * Invalidate a guest-backed context.
  165. */
  166. typedef
  167. #include "vmware_pack_begin.h"
  168. struct SVGA3dCmdDXInvalidateContext {
  169. uint32 cid;
  170. }
  171. #include "vmware_pack_end.h"
  172. SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
  173. typedef
  174. #include "vmware_pack_begin.h"
  175. struct SVGA3dReplyFormatData {
  176. uint32 formatSupport;
  177. uint32 msaa2xQualityLevels:5;
  178. uint32 msaa4xQualityLevels:5;
  179. uint32 msaa8xQualityLevels:5;
  180. uint32 msaa16xQualityLevels:5;
  181. uint32 msaa32xQualityLevels:5;
  182. uint32 pad:7;
  183. }
  184. #include "vmware_pack_end.h"
  185. SVGA3dReplyFormatData;
  186. typedef
  187. #include "vmware_pack_begin.h"
  188. struct SVGA3dCmdDXSetSingleConstantBuffer {
  189. uint32 slot;
  190. SVGA3dShaderType type;
  191. SVGA3dSurfaceId sid;
  192. uint32 offsetInBytes;
  193. uint32 sizeInBytes;
  194. }
  195. #include "vmware_pack_end.h"
  196. SVGA3dCmdDXSetSingleConstantBuffer;
  197. /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
  198. typedef
  199. #include "vmware_pack_begin.h"
  200. struct SVGA3dCmdDXSetShaderResources {
  201. uint32 startView;
  202. SVGA3dShaderType type;
  203. /*
  204. * Followed by a variable number of SVGA3dShaderResourceViewId's.
  205. */
  206. }
  207. #include "vmware_pack_end.h"
  208. SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
  209. typedef
  210. #include "vmware_pack_begin.h"
  211. struct SVGA3dCmdDXSetShader {
  212. SVGA3dShaderId shaderId;
  213. SVGA3dShaderType type;
  214. }
  215. #include "vmware_pack_end.h"
  216. SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */
  217. typedef
  218. #include "vmware_pack_begin.h"
  219. struct SVGA3dCmdDXSetSamplers {
  220. uint32 startSampler;
  221. SVGA3dShaderType type;
  222. /*
  223. * Followed by a variable number of SVGA3dSamplerId's.
  224. */
  225. }
  226. #include "vmware_pack_end.h"
  227. SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
  228. typedef
  229. #include "vmware_pack_begin.h"
  230. struct SVGA3dCmdDXDraw {
  231. uint32 vertexCount;
  232. uint32 startVertexLocation;
  233. }
  234. #include "vmware_pack_end.h"
  235. SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */
  236. typedef
  237. #include "vmware_pack_begin.h"
  238. struct SVGA3dCmdDXDrawIndexed {
  239. uint32 indexCount;
  240. uint32 startIndexLocation;
  241. int32 baseVertexLocation;
  242. }
  243. #include "vmware_pack_end.h"
  244. SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
  245. typedef
  246. #include "vmware_pack_begin.h"
  247. struct SVGA3dCmdDXDrawInstanced {
  248. uint32 vertexCountPerInstance;
  249. uint32 instanceCount;
  250. uint32 startVertexLocation;
  251. uint32 startInstanceLocation;
  252. }
  253. #include "vmware_pack_end.h"
  254. SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
  255. typedef
  256. #include "vmware_pack_begin.h"
  257. struct SVGA3dCmdDXDrawIndexedInstanced {
  258. uint32 indexCountPerInstance;
  259. uint32 instanceCount;
  260. uint32 startIndexLocation;
  261. int32 baseVertexLocation;
  262. uint32 startInstanceLocation;
  263. }
  264. #include "vmware_pack_end.h"
  265. SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
  266. typedef
  267. #include "vmware_pack_begin.h"
  268. struct SVGA3dCmdDXDrawAuto {
  269. uint32 pad0;
  270. }
  271. #include "vmware_pack_end.h"
  272. SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */
  273. typedef
  274. #include "vmware_pack_begin.h"
  275. struct SVGA3dCmdDXSetInputLayout {
  276. SVGA3dElementLayoutId elementLayoutId;
  277. }
  278. #include "vmware_pack_end.h"
  279. SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
  280. typedef
  281. #include "vmware_pack_begin.h"
  282. struct SVGA3dVertexBuffer {
  283. SVGA3dSurfaceId sid;
  284. uint32 stride;
  285. uint32 offset;
  286. }
  287. #include "vmware_pack_end.h"
  288. SVGA3dVertexBuffer;
  289. typedef
  290. #include "vmware_pack_begin.h"
  291. struct SVGA3dCmdDXSetVertexBuffers {
  292. uint32 startBuffer;
  293. /* Followed by a variable number of SVGA3dVertexBuffer's. */
  294. }
  295. #include "vmware_pack_end.h"
  296. SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
  297. typedef
  298. #include "vmware_pack_begin.h"
  299. struct SVGA3dCmdDXSetIndexBuffer {
  300. SVGA3dSurfaceId sid;
  301. SVGA3dSurfaceFormat format;
  302. uint32 offset;
  303. }
  304. #include "vmware_pack_end.h"
  305. SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
  306. typedef
  307. #include "vmware_pack_begin.h"
  308. struct SVGA3dCmdDXSetTopology {
  309. SVGA3dPrimitiveType topology;
  310. }
  311. #include "vmware_pack_end.h"
  312. SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
  313. typedef
  314. #include "vmware_pack_begin.h"
  315. struct SVGA3dCmdDXSetRenderTargets {
  316. SVGA3dDepthStencilViewId depthStencilViewId;
  317. /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
  318. }
  319. #include "vmware_pack_end.h"
  320. SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
  321. typedef
  322. #include "vmware_pack_begin.h"
  323. struct SVGA3dCmdDXSetBlendState {
  324. SVGA3dBlendStateId blendId;
  325. float blendFactor[4];
  326. uint32 sampleMask;
  327. }
  328. #include "vmware_pack_end.h"
  329. SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
  330. typedef
  331. #include "vmware_pack_begin.h"
  332. struct SVGA3dCmdDXSetDepthStencilState {
  333. SVGA3dDepthStencilStateId depthStencilId;
  334. uint32 stencilRef;
  335. }
  336. #include "vmware_pack_end.h"
  337. SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
  338. typedef
  339. #include "vmware_pack_begin.h"
  340. struct SVGA3dCmdDXSetRasterizerState {
  341. SVGA3dRasterizerStateId rasterizerId;
  342. }
  343. #include "vmware_pack_end.h"
  344. SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
  345. #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
  346. typedef uint32 SVGA3dDXQueryFlags;
  347. /*
  348. * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device
  349. * to track query state transitions, but are not intended to be used by the
  350. * driver.
  351. */
  352. #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */
  353. #define SVGADX_QDSTATE_MIN 0
  354. #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */
  355. #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */
  356. #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */
  357. #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */
  358. #define SVGADX_QDSTATE_MAX 4
  359. typedef uint8 SVGADXQueryDeviceState;
  360. typedef
  361. #include "vmware_pack_begin.h"
  362. struct {
  363. SVGA3dQueryTypeUint8 type;
  364. uint16 pad0;
  365. SVGADXQueryDeviceState state;
  366. SVGA3dDXQueryFlags flags;
  367. SVGAMobId mobid;
  368. uint32 offset;
  369. }
  370. #include "vmware_pack_end.h"
  371. SVGACOTableDXQueryEntry;
  372. typedef
  373. #include "vmware_pack_begin.h"
  374. struct SVGA3dCmdDXDefineQuery {
  375. SVGA3dQueryId queryId;
  376. SVGA3dQueryType type;
  377. SVGA3dDXQueryFlags flags;
  378. }
  379. #include "vmware_pack_end.h"
  380. SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
  381. typedef
  382. #include "vmware_pack_begin.h"
  383. struct SVGA3dCmdDXDestroyQuery {
  384. SVGA3dQueryId queryId;
  385. }
  386. #include "vmware_pack_end.h"
  387. SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
  388. typedef
  389. #include "vmware_pack_begin.h"
  390. struct SVGA3dCmdDXBindQuery {
  391. SVGA3dQueryId queryId;
  392. SVGAMobId mobid;
  393. }
  394. #include "vmware_pack_end.h"
  395. SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */
  396. typedef
  397. #include "vmware_pack_begin.h"
  398. struct SVGA3dCmdDXSetQueryOffset {
  399. SVGA3dQueryId queryId;
  400. uint32 mobOffset;
  401. }
  402. #include "vmware_pack_end.h"
  403. SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
  404. typedef
  405. #include "vmware_pack_begin.h"
  406. struct SVGA3dCmdDXBeginQuery {
  407. SVGA3dQueryId queryId;
  408. }
  409. #include "vmware_pack_end.h"
  410. SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
  411. typedef
  412. #include "vmware_pack_begin.h"
  413. struct SVGA3dCmdDXEndQuery {
  414. SVGA3dQueryId queryId;
  415. }
  416. #include "vmware_pack_end.h"
  417. SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */
  418. typedef
  419. #include "vmware_pack_begin.h"
  420. struct SVGA3dCmdDXReadbackQuery {
  421. SVGA3dQueryId queryId;
  422. }
  423. #include "vmware_pack_end.h"
  424. SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */
  425. typedef
  426. #include "vmware_pack_begin.h"
  427. struct SVGA3dCmdDXMoveQuery {
  428. SVGA3dQueryId queryId;
  429. SVGAMobId mobid;
  430. uint32 mobOffset;
  431. }
  432. #include "vmware_pack_end.h"
  433. SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */
  434. typedef
  435. #include "vmware_pack_begin.h"
  436. struct SVGA3dCmdDXBindAllQuery {
  437. uint32 cid;
  438. SVGAMobId mobid;
  439. }
  440. #include "vmware_pack_end.h"
  441. SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
  442. typedef
  443. #include "vmware_pack_begin.h"
  444. struct SVGA3dCmdDXReadbackAllQuery {
  445. uint32 cid;
  446. }
  447. #include "vmware_pack_end.h"
  448. SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
  449. typedef
  450. #include "vmware_pack_begin.h"
  451. struct SVGA3dCmdDXSetPredication {
  452. SVGA3dQueryId queryId;
  453. uint32 predicateValue;
  454. }
  455. #include "vmware_pack_end.h"
  456. SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */
  457. typedef
  458. #include "vmware_pack_begin.h"
  459. struct MKS3dDXSOState {
  460. uint32 offset; /* Starting offset */
  461. uint32 intOffset; /* Internal offset */
  462. uint32 vertexCount; /* vertices written */
  463. uint32 sizeInBytes; /* max bytes to write */
  464. }
  465. #include "vmware_pack_end.h"
  466. SVGA3dDXSOState;
  467. /* Set the offset field to this value to append SO values to the buffer */
  468. #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
  469. typedef
  470. #include "vmware_pack_begin.h"
  471. struct SVGA3dSoTarget {
  472. SVGA3dSurfaceId sid;
  473. uint32 offset;
  474. uint32 sizeInBytes;
  475. }
  476. #include "vmware_pack_end.h"
  477. SVGA3dSoTarget;
  478. typedef
  479. #include "vmware_pack_begin.h"
  480. struct SVGA3dCmdDXSetSOTargets {
  481. uint32 pad0;
  482. /* Followed by a variable number of SVGA3dSOTarget's. */
  483. }
  484. #include "vmware_pack_end.h"
  485. SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
  486. typedef
  487. #include "vmware_pack_begin.h"
  488. struct SVGA3dViewport
  489. {
  490. float x;
  491. float y;
  492. float width;
  493. float height;
  494. float minDepth;
  495. float maxDepth;
  496. }
  497. #include "vmware_pack_end.h"
  498. SVGA3dViewport;
  499. typedef
  500. #include "vmware_pack_begin.h"
  501. struct SVGA3dCmdDXSetViewports {
  502. uint32 pad0;
  503. /* Followed by a variable number of SVGA3dViewport's. */
  504. }
  505. #include "vmware_pack_end.h"
  506. SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
  507. #define SVGA3D_DX_MAX_VIEWPORTS 16
  508. typedef
  509. #include "vmware_pack_begin.h"
  510. struct SVGA3dCmdDXSetScissorRects {
  511. uint32 pad0;
  512. /* Followed by a variable number of SVGASignedRect's. */
  513. }
  514. #include "vmware_pack_end.h"
  515. SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
  516. #define SVGA3D_DX_MAX_SCISSORRECTS 16
  517. typedef
  518. #include "vmware_pack_begin.h"
  519. struct SVGA3dCmdDXClearRenderTargetView {
  520. SVGA3dRenderTargetViewId renderTargetViewId;
  521. SVGA3dRGBAFloat rgba;
  522. }
  523. #include "vmware_pack_end.h"
  524. SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
  525. typedef
  526. #include "vmware_pack_begin.h"
  527. struct SVGA3dCmdDXClearDepthStencilView {
  528. uint16 flags;
  529. uint16 stencil;
  530. SVGA3dDepthStencilViewId depthStencilViewId;
  531. float depth;
  532. }
  533. #include "vmware_pack_end.h"
  534. SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
  535. typedef
  536. #include "vmware_pack_begin.h"
  537. struct SVGA3dCmdDXPredCopyRegion {
  538. SVGA3dSurfaceId dstSid;
  539. uint32 dstSubResource;
  540. SVGA3dSurfaceId srcSid;
  541. uint32 srcSubResource;
  542. SVGA3dCopyBox box;
  543. }
  544. #include "vmware_pack_end.h"
  545. SVGA3dCmdDXPredCopyRegion;
  546. /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
  547. typedef
  548. #include "vmware_pack_begin.h"
  549. struct SVGA3dCmdDXPredCopy {
  550. SVGA3dSurfaceId dstSid;
  551. SVGA3dSurfaceId srcSid;
  552. }
  553. #include "vmware_pack_end.h"
  554. SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */
  555. typedef
  556. #include "vmware_pack_begin.h"
  557. struct SVGA3dCmdDXBufferCopy {
  558. SVGA3dSurfaceId dest;
  559. SVGA3dSurfaceId src;
  560. uint32 destX;
  561. uint32 srcX;
  562. uint32 width;
  563. }
  564. #include "vmware_pack_end.h"
  565. SVGA3dCmdDXBufferCopy;
  566. /* SVGA_3D_CMD_DX_BUFFER_COPY */
  567. typedef uint32 SVGA3dDXStretchBltMode;
  568. #define SVGADX_STRETCHBLT_LINEAR (1 << 0)
  569. #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
  570. typedef
  571. #include "vmware_pack_begin.h"
  572. struct SVGA3dCmdDXStretchBlt {
  573. SVGA3dSurfaceId srcSid;
  574. uint32 srcSubResource;
  575. SVGA3dSurfaceId dstSid;
  576. uint32 destSubResource;
  577. SVGA3dBox boxSrc;
  578. SVGA3dBox boxDest;
  579. SVGA3dDXStretchBltMode mode;
  580. }
  581. #include "vmware_pack_end.h"
  582. SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */
  583. typedef
  584. #include "vmware_pack_begin.h"
  585. struct SVGA3dCmdDXGenMips {
  586. SVGA3dShaderResourceViewId shaderResourceViewId;
  587. }
  588. #include "vmware_pack_end.h"
  589. SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */
  590. /*
  591. * Defines a resource/DX surface. Resources share the surfaceId namespace.
  592. *
  593. */
  594. typedef
  595. #include "vmware_pack_begin.h"
  596. struct SVGA3dCmdDefineGBSurface_v2 {
  597. uint32 sid;
  598. SVGA3dSurfaceFlags surfaceFlags;
  599. SVGA3dSurfaceFormat format;
  600. uint32 numMipLevels;
  601. uint32 multisampleCount;
  602. SVGA3dTextureFilter autogenFilter;
  603. SVGA3dSize size;
  604. uint32 arraySize;
  605. uint32 pad;
  606. }
  607. #include "vmware_pack_end.h"
  608. SVGA3dCmdDefineGBSurface_v2; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */
  609. /*
  610. * Update a sub-resource in a guest-backed resource.
  611. * (Inform the device that the guest-contents have been updated.)
  612. */
  613. typedef
  614. #include "vmware_pack_begin.h"
  615. struct SVGA3dCmdDXUpdateSubResource {
  616. SVGA3dSurfaceId sid;
  617. uint32 subResource;
  618. SVGA3dBox box;
  619. }
  620. #include "vmware_pack_end.h"
  621. SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */
  622. /*
  623. * Readback a subresource in a guest-backed resource.
  624. * (Request the device to flush the dirty contents into the guest.)
  625. */
  626. typedef
  627. #include "vmware_pack_begin.h"
  628. struct SVGA3dCmdDXReadbackSubResource {
  629. SVGA3dSurfaceId sid;
  630. uint32 subResource;
  631. }
  632. #include "vmware_pack_end.h"
  633. SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */
  634. /*
  635. * Invalidate an image in a guest-backed surface.
  636. * (Notify the device that the contents can be lost.)
  637. */
  638. typedef
  639. #include "vmware_pack_begin.h"
  640. struct SVGA3dCmdDXInvalidateSubResource {
  641. SVGA3dSurfaceId sid;
  642. uint32 subResource;
  643. }
  644. #include "vmware_pack_end.h"
  645. SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
  646. /*
  647. * Raw byte wise transfer from a buffer surface into another surface
  648. * of the requested box.
  649. */
  650. typedef
  651. #include "vmware_pack_begin.h"
  652. struct SVGA3dCmdDXTransferFromBuffer {
  653. SVGA3dSurfaceId srcSid;
  654. uint32 srcOffset;
  655. uint32 srcPitch;
  656. uint32 srcSlicePitch;
  657. SVGA3dSurfaceId destSid;
  658. uint32 destSubResource;
  659. SVGA3dBox destBox;
  660. }
  661. #include "vmware_pack_end.h"
  662. SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
  663. /*
  664. * Raw byte wise transfer from a buffer surface into another surface
  665. * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
  666. * The context is implied from the command buffer header.
  667. */
  668. typedef
  669. #include "vmware_pack_begin.h"
  670. struct SVGA3dCmdDXPredTransferFromBuffer {
  671. SVGA3dSurfaceId srcSid;
  672. uint32 srcOffset;
  673. uint32 srcPitch;
  674. uint32 srcSlicePitch;
  675. SVGA3dSurfaceId destSid;
  676. uint32 destSubResource;
  677. SVGA3dBox destBox;
  678. }
  679. #include "vmware_pack_end.h"
  680. SVGA3dCmdDXPredTransferFromBuffer;
  681. /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
  682. typedef
  683. #include "vmware_pack_begin.h"
  684. struct SVGA3dCmdDXSurfaceCopyAndReadback {
  685. SVGA3dSurfaceId srcSid;
  686. SVGA3dSurfaceId destSid;
  687. SVGA3dCopyBox box;
  688. }
  689. #include "vmware_pack_end.h"
  690. SVGA3dCmdDXSurfaceCopyAndReadback;
  691. /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
  692. typedef
  693. #include "vmware_pack_begin.h"
  694. struct {
  695. union {
  696. struct {
  697. uint32 firstElement;
  698. uint32 numElements;
  699. uint32 pad0;
  700. uint32 pad1;
  701. } buffer;
  702. struct {
  703. uint32 mostDetailedMip;
  704. uint32 firstArraySlice;
  705. uint32 mipLevels;
  706. uint32 arraySize;
  707. } tex;
  708. struct {
  709. uint32 firstElement;
  710. uint32 numElements;
  711. uint32 flags;
  712. uint32 pad0;
  713. } bufferex;
  714. };
  715. }
  716. #include "vmware_pack_end.h"
  717. SVGA3dShaderResourceViewDesc;
  718. typedef
  719. #include "vmware_pack_begin.h"
  720. struct {
  721. SVGA3dSurfaceId sid;
  722. SVGA3dSurfaceFormat format;
  723. SVGA3dResourceType resourceDimension;
  724. SVGA3dShaderResourceViewDesc desc;
  725. uint32 pad;
  726. }
  727. #include "vmware_pack_end.h"
  728. SVGACOTableDXSRViewEntry;
  729. typedef
  730. #include "vmware_pack_begin.h"
  731. struct SVGA3dCmdDXDefineShaderResourceView {
  732. SVGA3dShaderResourceViewId shaderResourceViewId;
  733. SVGA3dSurfaceId sid;
  734. SVGA3dSurfaceFormat format;
  735. SVGA3dResourceType resourceDimension;
  736. SVGA3dShaderResourceViewDesc desc;
  737. }
  738. #include "vmware_pack_end.h"
  739. SVGA3dCmdDXDefineShaderResourceView;
  740. /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
  741. typedef
  742. #include "vmware_pack_begin.h"
  743. struct SVGA3dCmdDXDestroyShaderResourceView {
  744. SVGA3dShaderResourceViewId shaderResourceViewId;
  745. }
  746. #include "vmware_pack_end.h"
  747. SVGA3dCmdDXDestroyShaderResourceView;
  748. /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
  749. typedef
  750. #include "vmware_pack_begin.h"
  751. struct SVGA3dRenderTargetViewDesc {
  752. union {
  753. struct {
  754. uint32 firstElement;
  755. uint32 numElements;
  756. } buffer;
  757. struct {
  758. uint32 mipSlice;
  759. uint32 firstArraySlice;
  760. uint32 arraySize;
  761. } tex; /* 1d, 2d, cube */
  762. struct {
  763. uint32 mipSlice;
  764. uint32 firstW;
  765. uint32 wSize;
  766. } tex3D;
  767. };
  768. }
  769. #include "vmware_pack_end.h"
  770. SVGA3dRenderTargetViewDesc;
  771. typedef
  772. #include "vmware_pack_begin.h"
  773. struct {
  774. SVGA3dSurfaceId sid;
  775. SVGA3dSurfaceFormat format;
  776. SVGA3dResourceType resourceDimension;
  777. SVGA3dRenderTargetViewDesc desc;
  778. uint32 pad[2];
  779. }
  780. #include "vmware_pack_end.h"
  781. SVGACOTableDXRTViewEntry;
  782. typedef
  783. #include "vmware_pack_begin.h"
  784. struct SVGA3dCmdDXDefineRenderTargetView {
  785. SVGA3dRenderTargetViewId renderTargetViewId;
  786. SVGA3dSurfaceId sid;
  787. SVGA3dSurfaceFormat format;
  788. SVGA3dResourceType resourceDimension;
  789. SVGA3dRenderTargetViewDesc desc;
  790. }
  791. #include "vmware_pack_end.h"
  792. SVGA3dCmdDXDefineRenderTargetView;
  793. /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
  794. typedef
  795. #include "vmware_pack_begin.h"
  796. struct SVGA3dCmdDXDestroyRenderTargetView {
  797. SVGA3dRenderTargetViewId renderTargetViewId;
  798. }
  799. #include "vmware_pack_end.h"
  800. SVGA3dCmdDXDestroyRenderTargetView;
  801. /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */
  802. /*
  803. */
  804. #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01
  805. #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02
  806. #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03
  807. typedef uint8 SVGA3DCreateDSViewFlags;
  808. typedef
  809. #include "vmware_pack_begin.h"
  810. struct {
  811. SVGA3dSurfaceId sid;
  812. SVGA3dSurfaceFormat format;
  813. SVGA3dResourceType resourceDimension;
  814. uint32 mipSlice;
  815. uint32 firstArraySlice;
  816. uint32 arraySize;
  817. SVGA3DCreateDSViewFlags flags;
  818. uint8 pad0;
  819. uint16 pad1;
  820. uint32 pad2;
  821. }
  822. #include "vmware_pack_end.h"
  823. SVGACOTableDXDSViewEntry;
  824. typedef
  825. #include "vmware_pack_begin.h"
  826. struct SVGA3dCmdDXDefineDepthStencilView {
  827. SVGA3dDepthStencilViewId depthStencilViewId;
  828. SVGA3dSurfaceId sid;
  829. SVGA3dSurfaceFormat format;
  830. SVGA3dResourceType resourceDimension;
  831. uint32 mipSlice;
  832. uint32 firstArraySlice;
  833. uint32 arraySize;
  834. SVGA3DCreateDSViewFlags flags;
  835. uint8 pad0;
  836. uint16 pad1;
  837. }
  838. #include "vmware_pack_end.h"
  839. SVGA3dCmdDXDefineDepthStencilView;
  840. /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
  841. typedef
  842. #include "vmware_pack_begin.h"
  843. struct SVGA3dCmdDXDestroyDepthStencilView {
  844. SVGA3dDepthStencilViewId depthStencilViewId;
  845. }
  846. #include "vmware_pack_end.h"
  847. SVGA3dCmdDXDestroyDepthStencilView;
  848. /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
  849. typedef
  850. #include "vmware_pack_begin.h"
  851. struct SVGA3dInputElementDesc {
  852. uint32 inputSlot;
  853. uint32 alignedByteOffset;
  854. SVGA3dSurfaceFormat format;
  855. SVGA3dInputClassification inputSlotClass;
  856. uint32 instanceDataStepRate;
  857. uint32 inputRegister;
  858. }
  859. #include "vmware_pack_end.h"
  860. SVGA3dInputElementDesc;
  861. typedef
  862. #include "vmware_pack_begin.h"
  863. struct {
  864. /*
  865. * XXX: How many of these can there be?
  866. */
  867. uint32 elid;
  868. uint32 numDescs;
  869. SVGA3dInputElementDesc desc[32];
  870. uint32 pad[62];
  871. }
  872. #include "vmware_pack_end.h"
  873. SVGACOTableDXElementLayoutEntry;
  874. typedef
  875. #include "vmware_pack_begin.h"
  876. struct SVGA3dCmdDXDefineElementLayout {
  877. SVGA3dElementLayoutId elementLayoutId;
  878. /* Followed by a variable number of SVGA3dInputElementDesc's. */
  879. }
  880. #include "vmware_pack_end.h"
  881. SVGA3dCmdDXDefineElementLayout;
  882. /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
  883. typedef
  884. #include "vmware_pack_begin.h"
  885. struct SVGA3dCmdDXDestroyElementLayout {
  886. SVGA3dElementLayoutId elementLayoutId;
  887. }
  888. #include "vmware_pack_end.h"
  889. SVGA3dCmdDXDestroyElementLayout;
  890. /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
  891. #define SVGA3D_DX_MAX_RENDER_TARGETS 8
  892. typedef
  893. #include "vmware_pack_begin.h"
  894. struct SVGA3dDXBlendStatePerRT {
  895. uint8 blendEnable;
  896. uint8 srcBlend;
  897. uint8 destBlend;
  898. uint8 blendOp;
  899. uint8 srcBlendAlpha;
  900. uint8 destBlendAlpha;
  901. uint8 blendOpAlpha;
  902. uint8 renderTargetWriteMask;
  903. uint8 logicOpEnable;
  904. uint8 logicOp;
  905. uint16 pad0;
  906. }
  907. #include "vmware_pack_end.h"
  908. SVGA3dDXBlendStatePerRT;
  909. typedef
  910. #include "vmware_pack_begin.h"
  911. struct {
  912. uint8 alphaToCoverageEnable;
  913. uint8 independentBlendEnable;
  914. uint16 pad0;
  915. SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
  916. uint32 pad1[7];
  917. }
  918. #include "vmware_pack_end.h"
  919. SVGACOTableDXBlendStateEntry;
  920. /*
  921. */
  922. typedef
  923. #include "vmware_pack_begin.h"
  924. struct SVGA3dCmdDXDefineBlendState {
  925. SVGA3dBlendStateId blendId;
  926. uint8 alphaToCoverageEnable;
  927. uint8 independentBlendEnable;
  928. uint16 pad0;
  929. SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
  930. }
  931. #include "vmware_pack_end.h"
  932. SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
  933. typedef
  934. #include "vmware_pack_begin.h"
  935. struct SVGA3dCmdDXDestroyBlendState {
  936. SVGA3dBlendStateId blendId;
  937. }
  938. #include "vmware_pack_end.h"
  939. SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
  940. typedef
  941. #include "vmware_pack_begin.h"
  942. struct {
  943. uint8 depthEnable;
  944. SVGA3dDepthWriteMask depthWriteMask;
  945. SVGA3dComparisonFunc depthFunc;
  946. uint8 stencilEnable;
  947. uint8 frontEnable;
  948. uint8 backEnable;
  949. uint8 stencilReadMask;
  950. uint8 stencilWriteMask;
  951. uint8 frontStencilFailOp;
  952. uint8 frontStencilDepthFailOp;
  953. uint8 frontStencilPassOp;
  954. SVGA3dComparisonFunc frontStencilFunc;
  955. uint8 backStencilFailOp;
  956. uint8 backStencilDepthFailOp;
  957. uint8 backStencilPassOp;
  958. SVGA3dComparisonFunc backStencilFunc;
  959. }
  960. #include "vmware_pack_end.h"
  961. SVGACOTableDXDepthStencilEntry;
  962. /*
  963. */
  964. typedef
  965. #include "vmware_pack_begin.h"
  966. struct SVGA3dCmdDXDefineDepthStencilState {
  967. SVGA3dDepthStencilStateId depthStencilId;
  968. uint8 depthEnable;
  969. SVGA3dDepthWriteMask depthWriteMask;
  970. SVGA3dComparisonFunc depthFunc;
  971. uint8 stencilEnable;
  972. uint8 frontEnable;
  973. uint8 backEnable;
  974. uint8 stencilReadMask;
  975. uint8 stencilWriteMask;
  976. uint8 frontStencilFailOp;
  977. uint8 frontStencilDepthFailOp;
  978. uint8 frontStencilPassOp;
  979. SVGA3dComparisonFunc frontStencilFunc;
  980. uint8 backStencilFailOp;
  981. uint8 backStencilDepthFailOp;
  982. uint8 backStencilPassOp;
  983. SVGA3dComparisonFunc backStencilFunc;
  984. }
  985. #include "vmware_pack_end.h"
  986. SVGA3dCmdDXDefineDepthStencilState;
  987. /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
  988. typedef
  989. #include "vmware_pack_begin.h"
  990. struct SVGA3dCmdDXDestroyDepthStencilState {
  991. SVGA3dDepthStencilStateId depthStencilId;
  992. }
  993. #include "vmware_pack_end.h"
  994. SVGA3dCmdDXDestroyDepthStencilState;
  995. /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
  996. typedef
  997. #include "vmware_pack_begin.h"
  998. struct {
  999. uint8 fillMode;
  1000. SVGA3dCullMode cullMode;
  1001. uint8 frontCounterClockwise;
  1002. uint8 provokingVertexLast;
  1003. int32 depthBias;
  1004. float depthBiasClamp;
  1005. float slopeScaledDepthBias;
  1006. uint8 depthClipEnable;
  1007. uint8 scissorEnable;
  1008. uint8 multisampleEnable;
  1009. uint8 antialiasedLineEnable;
  1010. float lineWidth;
  1011. uint8 lineStippleEnable;
  1012. uint8 lineStippleFactor;
  1013. uint16 lineStipplePattern;
  1014. uint32 forcedSampleCount;
  1015. }
  1016. #include "vmware_pack_end.h"
  1017. SVGACOTableDXRasterizerStateEntry;
  1018. /*
  1019. */
  1020. typedef
  1021. #include "vmware_pack_begin.h"
  1022. struct SVGA3dCmdDXDefineRasterizerState {
  1023. SVGA3dRasterizerStateId rasterizerId;
  1024. uint8 fillMode;
  1025. SVGA3dCullMode cullMode;
  1026. uint8 frontCounterClockwise;
  1027. uint8 provokingVertexLast;
  1028. int32 depthBias;
  1029. float depthBiasClamp;
  1030. float slopeScaledDepthBias;
  1031. uint8 depthClipEnable;
  1032. uint8 scissorEnable;
  1033. uint8 multisampleEnable;
  1034. uint8 antialiasedLineEnable;
  1035. float lineWidth;
  1036. uint8 lineStippleEnable;
  1037. uint8 lineStippleFactor;
  1038. uint16 lineStipplePattern;
  1039. }
  1040. #include "vmware_pack_end.h"
  1041. SVGA3dCmdDXDefineRasterizerState;
  1042. /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
  1043. typedef
  1044. #include "vmware_pack_begin.h"
  1045. struct SVGA3dCmdDXDestroyRasterizerState {
  1046. SVGA3dRasterizerStateId rasterizerId;
  1047. }
  1048. #include "vmware_pack_end.h"
  1049. SVGA3dCmdDXDestroyRasterizerState;
  1050. /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
  1051. typedef
  1052. #include "vmware_pack_begin.h"
  1053. struct {
  1054. SVGA3dFilter filter;
  1055. uint8 addressU;
  1056. uint8 addressV;
  1057. uint8 addressW;
  1058. uint8 pad0;
  1059. float mipLODBias;
  1060. uint8 maxAnisotropy;
  1061. SVGA3dComparisonFunc comparisonFunc;
  1062. uint16 pad1;
  1063. SVGA3dRGBAFloat borderColor;
  1064. float minLOD;
  1065. float maxLOD;
  1066. uint32 pad2[6];
  1067. }
  1068. #include "vmware_pack_end.h"
  1069. SVGACOTableDXSamplerEntry;
  1070. /*
  1071. */
  1072. typedef
  1073. #include "vmware_pack_begin.h"
  1074. struct SVGA3dCmdDXDefineSamplerState {
  1075. SVGA3dSamplerId samplerId;
  1076. SVGA3dFilter filter;
  1077. uint8 addressU;
  1078. uint8 addressV;
  1079. uint8 addressW;
  1080. uint8 pad0;
  1081. float mipLODBias;
  1082. uint8 maxAnisotropy;
  1083. SVGA3dComparisonFunc comparisonFunc;
  1084. uint16 pad1;
  1085. SVGA3dRGBAFloat borderColor;
  1086. float minLOD;
  1087. float maxLOD;
  1088. }
  1089. #include "vmware_pack_end.h"
  1090. SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
  1091. typedef
  1092. #include "vmware_pack_begin.h"
  1093. struct SVGA3dCmdDXDestroySamplerState {
  1094. SVGA3dSamplerId samplerId;
  1095. }
  1096. #include "vmware_pack_end.h"
  1097. SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
  1098. /*
  1099. */
  1100. typedef
  1101. #include "vmware_pack_begin.h"
  1102. struct SVGA3dSignatureEntry {
  1103. uint8 systemValue;
  1104. uint8 reg; /* register is a reserved word */
  1105. uint16 mask;
  1106. uint8 registerComponentType;
  1107. uint8 minPrecision;
  1108. uint16 pad0;
  1109. }
  1110. #include "vmware_pack_end.h"
  1111. SVGA3dSignatureEntry;
  1112. typedef
  1113. #include "vmware_pack_begin.h"
  1114. struct SVGA3dCmdDXDefineShader {
  1115. SVGA3dShaderId shaderId;
  1116. SVGA3dShaderType type;
  1117. uint32 sizeInBytes; /* Number of bytes of shader text. */
  1118. }
  1119. #include "vmware_pack_end.h"
  1120. SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
  1121. typedef
  1122. #include "vmware_pack_begin.h"
  1123. struct SVGACOTableDXShaderEntry {
  1124. SVGA3dShaderType type;
  1125. uint32 sizeInBytes;
  1126. uint32 offsetInBytes;
  1127. SVGAMobId mobid;
  1128. uint32 numInputSignatureEntries;
  1129. uint32 numOutputSignatureEntries;
  1130. uint32 numPatchConstantSignatureEntries;
  1131. uint32 pad;
  1132. }
  1133. #include "vmware_pack_end.h"
  1134. SVGACOTableDXShaderEntry;
  1135. typedef
  1136. #include "vmware_pack_begin.h"
  1137. struct SVGA3dCmdDXDestroyShader {
  1138. SVGA3dShaderId shaderId;
  1139. }
  1140. #include "vmware_pack_end.h"
  1141. SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
  1142. typedef
  1143. #include "vmware_pack_begin.h"
  1144. struct SVGA3dCmdDXBindShader {
  1145. uint32 cid;
  1146. uint32 shid;
  1147. SVGAMobId mobid;
  1148. uint32 offsetInBytes;
  1149. }
  1150. #include "vmware_pack_end.h"
  1151. SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */
  1152. /*
  1153. * The maximum number of streamout decl's in each streamout entry.
  1154. */
  1155. #define SVGA3D_MAX_STREAMOUT_DECLS 64
  1156. typedef
  1157. #include "vmware_pack_begin.h"
  1158. struct SVGA3dStreamOutputDeclarationEntry {
  1159. uint32 outputSlot;
  1160. uint32 registerIndex;
  1161. uint8 registerMask;
  1162. uint8 pad0;
  1163. uint16 pad1;
  1164. uint32 stream;
  1165. }
  1166. #include "vmware_pack_end.h"
  1167. SVGA3dStreamOutputDeclarationEntry;
  1168. typedef
  1169. #include "vmware_pack_begin.h"
  1170. struct SVGAOTableStreamOutputEntry {
  1171. uint32 numOutputStreamEntries;
  1172. SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
  1173. uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
  1174. uint32 rasterizedStream;
  1175. uint32 pad[250];
  1176. }
  1177. #include "vmware_pack_end.h"
  1178. SVGACOTableDXStreamOutputEntry;
  1179. typedef
  1180. #include "vmware_pack_begin.h"
  1181. struct SVGA3dCmdDXDefineStreamOutput {
  1182. SVGA3dStreamOutputId soid;
  1183. uint32 numOutputStreamEntries;
  1184. SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
  1185. uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
  1186. uint32 rasterizedStream;
  1187. }
  1188. #include "vmware_pack_end.h"
  1189. SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
  1190. typedef
  1191. #include "vmware_pack_begin.h"
  1192. struct SVGA3dCmdDXDestroyStreamOutput {
  1193. SVGA3dStreamOutputId soid;
  1194. }
  1195. #include "vmware_pack_end.h"
  1196. SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
  1197. typedef
  1198. #include "vmware_pack_begin.h"
  1199. struct SVGA3dCmdDXSetStreamOutput {
  1200. SVGA3dStreamOutputId soid;
  1201. }
  1202. #include "vmware_pack_end.h"
  1203. SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
  1204. typedef
  1205. #include "vmware_pack_begin.h"
  1206. struct {
  1207. uint64 value;
  1208. uint32 mobId;
  1209. uint32 mobOffset;
  1210. }
  1211. #include "vmware_pack_end.h"
  1212. SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
  1213. /*
  1214. * SVGA3dCmdSetCOTable --
  1215. *
  1216. * This command allows the guest to bind a mob to a context-object table.
  1217. */
  1218. typedef
  1219. #include "vmware_pack_begin.h"
  1220. struct SVGA3dCmdDXSetCOTable {
  1221. uint32 cid;
  1222. uint32 mobid;
  1223. SVGACOTableType type;
  1224. uint32 validSizeInBytes;
  1225. }
  1226. #include "vmware_pack_end.h"
  1227. SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */
  1228. typedef
  1229. #include "vmware_pack_begin.h"
  1230. struct SVGA3dCmdDXReadbackCOTable {
  1231. uint32 cid;
  1232. SVGACOTableType type;
  1233. }
  1234. #include "vmware_pack_end.h"
  1235. SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
  1236. typedef
  1237. #include "vmware_pack_begin.h"
  1238. struct SVGA3dCOTableData {
  1239. uint32 mobid;
  1240. }
  1241. #include "vmware_pack_end.h"
  1242. SVGA3dCOTableData;
  1243. typedef
  1244. #include "vmware_pack_begin.h"
  1245. struct SVGA3dBufferBinding {
  1246. uint32 bufferId;
  1247. uint32 stride;
  1248. uint32 offset;
  1249. }
  1250. #include "vmware_pack_end.h"
  1251. SVGA3dBufferBinding;
  1252. typedef
  1253. #include "vmware_pack_begin.h"
  1254. struct SVGA3dConstantBufferBinding {
  1255. uint32 sid;
  1256. uint32 offsetInBytes;
  1257. uint32 sizeInBytes;
  1258. }
  1259. #include "vmware_pack_end.h"
  1260. SVGA3dConstantBufferBinding;
  1261. typedef
  1262. #include "vmware_pack_begin.h"
  1263. struct SVGADXInputAssemblyMobFormat {
  1264. uint32 layoutId;
  1265. SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
  1266. uint32 indexBufferSid;
  1267. uint32 pad;
  1268. uint32 indexBufferOffset;
  1269. uint32 indexBufferFormat;
  1270. uint32 topology;
  1271. }
  1272. #include "vmware_pack_end.h"
  1273. SVGADXInputAssemblyMobFormat;
  1274. typedef
  1275. #include "vmware_pack_begin.h"
  1276. struct SVGADXContextMobFormat {
  1277. SVGADXInputAssemblyMobFormat inputAssembly;
  1278. struct {
  1279. uint32 blendStateId;
  1280. uint32 blendFactor[4];
  1281. uint32 sampleMask;
  1282. uint32 depthStencilStateId;
  1283. uint32 stencilRef;
  1284. uint32 rasterizerStateId;
  1285. uint32 depthStencilViewId;
  1286. uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
  1287. uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];
  1288. } renderState;
  1289. struct {
  1290. uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
  1291. uint32 soid;
  1292. } streamOut;
  1293. uint32 pad0[11];
  1294. uint8 numViewports;
  1295. uint8 numScissorRects;
  1296. uint16 pad1[1];
  1297. uint32 pad2[3];
  1298. SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
  1299. uint32 pad3[32];
  1300. SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
  1301. uint32 pad4[64];
  1302. struct {
  1303. uint32 queryID;
  1304. uint32 value;
  1305. } predication;
  1306. uint32 pad5[2];
  1307. struct {
  1308. uint32 shaderId;
  1309. SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
  1310. uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];
  1311. uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];
  1312. } shaderState[SVGA3D_NUM_SHADERTYPE];
  1313. uint32 pad6[26];
  1314. SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
  1315. SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
  1316. uint32 pad7[381];
  1317. }
  1318. #include "vmware_pack_end.h"
  1319. SVGADXContextMobFormat;
  1320. typedef
  1321. #include "vmware_pack_begin.h"
  1322. struct SVGA3dCmdDXTempSetContext {
  1323. uint32 dxcid;
  1324. }
  1325. #include "vmware_pack_end.h"
  1326. SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */
  1327. #endif /* _SVGA3D_DX_H_ */