Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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