svga3d_dx.h 41 KB

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