forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/gpu/drm/vmwgfx/device_include/svga3d_dx.h
....@@ -1,6 +1,6 @@
11 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
22 /**********************************************************
3
- * Copyright 2012-2015 VMware, Inc.
3
+ * Copyright 2012-2019 VMware, Inc.
44 *
55 * Permission is hereby granted, free of charge, to any person
66 * obtaining a copy of this software and associated documentation
....@@ -118,12 +118,14 @@
118118 #define SVGA3D_DX_MAX_SRVIEWS 128
119119 #define SVGA3D_DX_MAX_CONSTBUFFERS 16
120120 #define SVGA3D_DX_MAX_SAMPLERS 16
121
+#define SVGA3D_DX_MAX_CLASS_INSTANCES 253
121122
122123 #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))
123124
124125 typedef uint32 SVGA3dShaderResourceViewId;
125126 typedef uint32 SVGA3dRenderTargetViewId;
126127 typedef uint32 SVGA3dDepthStencilViewId;
128
+typedef uint32 SVGA3dUAViewId;
127129
128130 typedef uint32 SVGA3dShaderId;
129131 typedef uint32 SVGA3dElementLayoutId;
....@@ -144,6 +146,17 @@
144146
145147 float value[4];
146148 } SVGA3dRGBAFloat;
149
+
150
+typedef union {
151
+ struct {
152
+ uint32 r;
153
+ uint32 g;
154
+ uint32 b;
155
+ uint32 a;
156
+ };
157
+
158
+ uint32 value[4];
159
+} SVGA3dRGBAUint32;
147160
148161 typedef
149162 #include "vmware_pack_begin.h"
....@@ -249,6 +262,39 @@
249262 #include "vmware_pack_end.h"
250263 SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */
251264
265
+typedef union {
266
+ struct {
267
+ uint32 cbOffset : 12;
268
+ uint32 cbId : 4;
269
+ uint32 baseSamp : 4;
270
+ uint32 baseTex : 7;
271
+ uint32 reserved : 5;
272
+ };
273
+ uint32 value;
274
+} SVGA3dIfaceData;
275
+
276
+typedef
277
+#include "vmware_pack_begin.h"
278
+struct SVGA3dCmdDXSetShaderIface {
279
+ SVGA3dShaderType type;
280
+ uint32 numClassInstances;
281
+ uint32 index;
282
+ uint32 iface;
283
+ SVGA3dIfaceData data;
284
+}
285
+#include "vmware_pack_end.h"
286
+SVGA3dCmdDXSetShaderIface; /* SVGA_3D_CMD_DX_SET_SHADER_IFACE */
287
+
288
+typedef
289
+#include "vmware_pack_begin.h"
290
+struct SVGA3dCmdDXBindShaderIface {
291
+ uint32 cid;
292
+ SVGAMobId mobid;
293
+ uint32 offsetInBytes;
294
+}
295
+#include "vmware_pack_end.h"
296
+SVGA3dCmdDXBindShaderIface; /* SVGA_3D_CMD_DX_BIND_SHADER_IFACE */
297
+
252298 typedef
253299 #include "vmware_pack_begin.h"
254300 struct SVGA3dCmdDXSetSamplers {
....@@ -306,11 +352,52 @@
306352
307353 typedef
308354 #include "vmware_pack_begin.h"
355
+struct SVGA3dCmdDXDrawIndexedInstancedIndirect {
356
+ SVGA3dSurfaceId argsBufferSid;
357
+ uint32 byteOffsetForArgs;
358
+}
359
+#include "vmware_pack_end.h"
360
+SVGA3dCmdDXDrawIndexedInstancedIndirect;
361
+/* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT */
362
+
363
+typedef
364
+#include "vmware_pack_begin.h"
365
+struct SVGA3dCmdDXDrawInstancedIndirect {
366
+ SVGA3dSurfaceId argsBufferSid;
367
+ uint32 byteOffsetForArgs;
368
+}
369
+#include "vmware_pack_end.h"
370
+SVGA3dCmdDXDrawInstancedIndirect;
371
+/* SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT */
372
+
373
+typedef
374
+#include "vmware_pack_begin.h"
309375 struct SVGA3dCmdDXDrawAuto {
310376 uint32 pad0;
311377 }
312378 #include "vmware_pack_end.h"
313379 SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */
380
+
381
+typedef
382
+#include "vmware_pack_begin.h"
383
+struct SVGA3dCmdDXDispatch {
384
+ uint32 threadGroupCountX;
385
+ uint32 threadGroupCountY;
386
+ uint32 threadGroupCountZ;
387
+}
388
+#include "vmware_pack_end.h"
389
+SVGA3dCmdDXDispatch;
390
+/* SVGA_3D_CMD_DX_DISPATCH */
391
+
392
+typedef
393
+#include "vmware_pack_begin.h"
394
+struct SVGA3dCmdDXDispatchIndirect {
395
+ SVGA3dSurfaceId argsBufferSid;
396
+ uint32 byteOffsetForArgs;
397
+}
398
+#include "vmware_pack_end.h"
399
+SVGA3dCmdDXDispatchIndirect;
400
+/* SVGA_3D_CMD_DX_DISPATCH_INDIRECT */
314401
315402 typedef
316403 #include "vmware_pack_begin.h"
....@@ -525,7 +612,7 @@
525612 uint32 offset; /* Starting offset */
526613 uint32 intOffset; /* Internal offset */
527614 uint32 vertexCount; /* vertices written */
528
- uint32 sizeInBytes; /* max bytes to write */
615
+ uint32 dead;
529616 }
530617 #include "vmware_pack_end.h"
531618 SVGA3dDXSOState;
....@@ -786,6 +873,31 @@
786873 SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
787874
788875
876
+#define SVGA3D_TRANSFER_TO_BUFFER_READBACK (1 << 0)
877
+#define SVGA3D_TRANSFER_TO_BUFFER_FLAGS_MASK (1 << 0)
878
+typedef uint32 SVGA3dTransferToBufferFlags;
879
+
880
+/*
881
+ * Raw byte wise transfer to a buffer surface from another surface
882
+ * of the requested box. Supported if SVGA_CAP_DX2 is set. This
883
+ * command does not take a context.
884
+ */
885
+typedef
886
+#include "vmware_pack_begin.h"
887
+struct SVGA3dCmdDXTransferToBuffer {
888
+ SVGA3dSurfaceId srcSid;
889
+ uint32 srcSubResource;
890
+ SVGA3dBox srcBox;
891
+ SVGA3dSurfaceId destSid;
892
+ uint32 destOffset;
893
+ uint32 destPitch;
894
+ uint32 destSlicePitch;
895
+ SVGA3dTransferToBufferFlags flags;
896
+}
897
+#include "vmware_pack_end.h"
898
+SVGA3dCmdDXTransferToBuffer; /* SVGA_3D_CMD_DX_TRANSFER_TO_BUFFER */
899
+
900
+
789901 /*
790902 * Raw byte wise transfer from a buffer surface into another surface
791903 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
....@@ -905,6 +1017,20 @@
9051017 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
9061018 /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
9071019
1020
+typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetHSConstantBufferOffset;
1021
+/* SVGA_3D_CMD_DX_SET_HS_CONSTANT_BUFFER_OFFSET */
1022
+
1023
+typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetDSConstantBufferOffset;
1024
+/* SVGA_3D_CMD_DX_SET_DS_CONSTANT_BUFFER_OFFSET */
1025
+
1026
+typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetCSConstantBufferOffset;
1027
+/* SVGA_3D_CMD_DX_SET_CS_CONSTANT_BUFFER_OFFSET */
1028
+
1029
+
1030
+#define SVGA3D_BUFFEREX_SRV_RAW (1 << 0)
1031
+#define SVGA3D_BUFFEREX_SRV_FLAGS_MAX (1 << 1)
1032
+#define SVGA3D_BUFFEREX_SRV_FLAGS_MASK (SVGA3D_BUFFEREX_SRV_FLAGS_MAX - 1)
1033
+typedef uint32 SVGA3dBufferExFlags;
9081034
9091035 typedef
9101036 #include "vmware_pack_begin.h"
....@@ -925,7 +1051,7 @@
9251051 struct {
9261052 uint32 firstElement;
9271053 uint32 numElements;
928
- uint32 flags;
1054
+ SVGA3dBufferExFlags flags;
9291055 uint32 pad0;
9301056 } bufferex;
9311057 };
....@@ -1072,6 +1198,32 @@
10721198 SVGA3dCmdDXDefineDepthStencilView;
10731199 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
10741200
1201
+/*
1202
+ * Version 2 needed in order to start validating and using the flags
1203
+ * field. Unfortunately the device wasn't validating or using the
1204
+ * flags field and the driver wasn't initializing it in shipped code,
1205
+ * so a new version of the command is needed to allow that code to
1206
+ * continue to work.
1207
+ */
1208
+typedef
1209
+#include "vmware_pack_begin.h"
1210
+struct SVGA3dCmdDXDefineDepthStencilView_v2 {
1211
+ SVGA3dDepthStencilViewId depthStencilViewId;
1212
+
1213
+ SVGA3dSurfaceId sid;
1214
+ SVGA3dSurfaceFormat format;
1215
+ SVGA3dResourceType resourceDimension;
1216
+ uint32 mipSlice;
1217
+ uint32 firstArraySlice;
1218
+ uint32 arraySize;
1219
+ SVGA3DCreateDSViewFlags flags;
1220
+ uint8 pad0;
1221
+ uint16 pad1;
1222
+}
1223
+#include "vmware_pack_end.h"
1224
+SVGA3dCmdDXDefineDepthStencilView_v2;
1225
+/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW_V2 */
1226
+
10751227 typedef
10761228 #include "vmware_pack_begin.h"
10771229 struct SVGA3dCmdDXDestroyDepthStencilView {
....@@ -1080,6 +1232,138 @@
10801232 #include "vmware_pack_end.h"
10811233 SVGA3dCmdDXDestroyDepthStencilView;
10821234 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
1235
+
1236
+
1237
+#define SVGA3D_UABUFFER_RAW (1 << 0)
1238
+#define SVGA3D_UABUFFER_APPEND (1 << 1)
1239
+#define SVGA3D_UABUFFER_COUNTER (1 << 2)
1240
+typedef uint32 SVGA3dUABufferFlags;
1241
+
1242
+typedef
1243
+#include "vmware_pack_begin.h"
1244
+struct {
1245
+ union {
1246
+ struct {
1247
+ uint32 firstElement;
1248
+ uint32 numElements;
1249
+ SVGA3dUABufferFlags flags;
1250
+ uint32 padding0;
1251
+ uint32 padding1;
1252
+ } buffer;
1253
+ struct {
1254
+ uint32 mipSlice;
1255
+ uint32 firstArraySlice;
1256
+ uint32 arraySize;
1257
+ uint32 padding0;
1258
+ uint32 padding1;
1259
+ } tex; /* 1d, 2d */
1260
+ struct {
1261
+ uint32 mipSlice;
1262
+ uint32 firstW;
1263
+ uint32 wSize;
1264
+ uint32 padding0;
1265
+ uint32 padding1;
1266
+ } tex3D;
1267
+ };
1268
+}
1269
+#include "vmware_pack_end.h"
1270
+SVGA3dUAViewDesc;
1271
+
1272
+typedef
1273
+#include "vmware_pack_begin.h"
1274
+struct {
1275
+ SVGA3dSurfaceId sid;
1276
+ SVGA3dSurfaceFormat format;
1277
+ SVGA3dResourceType resourceDimension;
1278
+ SVGA3dUAViewDesc desc;
1279
+ uint32 structureCount;
1280
+ uint32 pad[7];
1281
+}
1282
+#include "vmware_pack_end.h"
1283
+SVGACOTableDXUAViewEntry;
1284
+
1285
+typedef
1286
+#include "vmware_pack_begin.h"
1287
+struct SVGA3dCmdDXDefineUAView {
1288
+ SVGA3dUAViewId uaViewId;
1289
+
1290
+ SVGA3dSurfaceId sid;
1291
+ SVGA3dSurfaceFormat format;
1292
+ SVGA3dResourceType resourceDimension;
1293
+
1294
+ SVGA3dUAViewDesc desc;
1295
+}
1296
+#include "vmware_pack_end.h"
1297
+SVGA3dCmdDXDefineUAView;
1298
+/* SVGA_3D_CMD_DX_DEFINE_UA_VIEW */
1299
+
1300
+typedef
1301
+#include "vmware_pack_begin.h"
1302
+struct SVGA3dCmdDXDestroyUAView {
1303
+ SVGA3dUAViewId uaViewId;
1304
+}
1305
+#include "vmware_pack_end.h"
1306
+SVGA3dCmdDXDestroyUAView;
1307
+/* SVGA_3D_CMD_DX_DESTROY_UA_VIEW */
1308
+
1309
+typedef
1310
+#include "vmware_pack_begin.h"
1311
+struct SVGA3dCmdDXClearUAViewUint {
1312
+ SVGA3dUAViewId uaViewId;
1313
+ SVGA3dRGBAUint32 value;
1314
+}
1315
+#include "vmware_pack_end.h"
1316
+SVGA3dCmdDXClearUAViewUint;
1317
+/* SVGA_3D_CMD_DX_CLEAR_UA_VIEW_UINT */
1318
+
1319
+typedef
1320
+#include "vmware_pack_begin.h"
1321
+struct SVGA3dCmdDXClearUAViewFloat {
1322
+ SVGA3dUAViewId uaViewId;
1323
+ SVGA3dRGBAFloat value;
1324
+}
1325
+#include "vmware_pack_end.h"
1326
+SVGA3dCmdDXClearUAViewFloat;
1327
+/* SVGA_3D_CMD_DX_CLEAR_UA_VIEW_FLOAT */
1328
+
1329
+typedef
1330
+#include "vmware_pack_begin.h"
1331
+struct SVGA3dCmdDXCopyStructureCount {
1332
+ SVGA3dUAViewId srcUAViewId;
1333
+ SVGA3dSurfaceId destSid;
1334
+ uint32 destByteOffset;
1335
+}
1336
+#include "vmware_pack_end.h"
1337
+SVGA3dCmdDXCopyStructureCount;
1338
+/* SVGA_3D_CMD_DX_COPY_STRUCTURE_COUNT */
1339
+
1340
+typedef
1341
+#include "vmware_pack_begin.h"
1342
+struct SVGA3dCmdDXSetStructureCount {
1343
+ SVGA3dUAViewId uaViewId;
1344
+ uint32 structureCount;
1345
+}
1346
+#include "vmware_pack_end.h"
1347
+SVGA3dCmdDXSetStructureCount;
1348
+/* SVGA_3D_CMD_DX_SET_STRUCTURE_COUNT */
1349
+
1350
+typedef
1351
+#include "vmware_pack_begin.h"
1352
+struct SVGA3dCmdDXSetUAViews {
1353
+ uint32 uavSpliceIndex;
1354
+ /* Followed by a variable number of SVGA3dUAViewId's. */
1355
+}
1356
+#include "vmware_pack_end.h"
1357
+SVGA3dCmdDXSetUAViews; /* SVGA_3D_CMD_DX_SET_UA_VIEWS */
1358
+
1359
+typedef
1360
+#include "vmware_pack_begin.h"
1361
+struct SVGA3dCmdDXSetCSUAViews {
1362
+ uint32 startIndex;
1363
+ /* Followed by a variable number of SVGA3dUAViewId's. */
1364
+}
1365
+#include "vmware_pack_end.h"
1366
+SVGA3dCmdDXSetCSUAViews; /* SVGA_3D_CMD_DX_SET_CS_UA_VIEWS */
10831367
10841368 typedef
10851369 #include "vmware_pack_begin.h"
....@@ -1099,7 +1383,7 @@
10991383 struct {
11001384 uint32 elid;
11011385 uint32 numDescs;
1102
- SVGA3dInputElementDesc desc[32];
1386
+ SVGA3dInputElementDesc descs[32];
11031387 uint32 pad[62];
11041388 }
11051389 #include "vmware_pack_end.h"
....@@ -1261,7 +1545,8 @@
12611545 uint8 lineStippleEnable;
12621546 uint8 lineStippleFactor;
12631547 uint16 lineStipplePattern;
1264
- uint32 forcedSampleCount;
1548
+ uint8 forcedSampleCount;
1549
+ uint8 mustBeZero[3];
12651550 }
12661551 #include "vmware_pack_end.h"
12671552 SVGACOTableDXRasterizerStateEntry;
....@@ -1352,6 +1637,71 @@
13521637 #include "vmware_pack_end.h"
13531638 SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
13541639
1640
+
1641
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 0
1642
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 1
1643
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 2
1644
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 3
1645
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 4
1646
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 5
1647
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 6
1648
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 7
1649
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 8
1650
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 9
1651
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 10
1652
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 11
1653
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 12
1654
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 13
1655
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 14
1656
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 15
1657
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 16
1658
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 17
1659
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 18
1660
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 19
1661
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 20
1662
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 21
1663
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 22
1664
+#define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 23
1665
+typedef uint32 SVGA3dDXSignatureSemanticName;
1666
+
1667
+#define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0
1668
+typedef uint32 SVGA3dDXSignatureRegisterComponentType;
1669
+
1670
+#define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0
1671
+typedef uint32 SVGA3dDXSignatureMinPrecision;
1672
+
1673
+typedef
1674
+#include "vmware_pack_begin.h"
1675
+struct SVGA3dDXSignatureEntry {
1676
+ uint32 registerIndex;
1677
+ SVGA3dDXSignatureSemanticName semanticName;
1678
+ uint32 mask; /* Lower 4 bits represent X, Y, Z, W channels */
1679
+ SVGA3dDXSignatureRegisterComponentType componentType;
1680
+ SVGA3dDXSignatureMinPrecision minPrecision;
1681
+}
1682
+#include "vmware_pack_end.h"
1683
+SVGA3dDXShaderSignatureEntry;
1684
+
1685
+#define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12
1686
+
1687
+/*
1688
+ * The SVGA3dDXSignatureHeader structure is added after the shader
1689
+ * body in the mob that is bound to the shader. It is followed by the
1690
+ * specified number of SVGA3dDXSignatureEntry structures for each of
1691
+ * the three types of signatures in the order (input, output, patch
1692
+ * constants).
1693
+ */
1694
+typedef
1695
+#include "vmware_pack_begin.h"
1696
+struct SVGA3dDXSignatureHeader {
1697
+ uint32 headerVersion;
1698
+ uint32 numInputSignatures;
1699
+ uint32 numOutputSignatures;
1700
+ uint32 numPatchConstantSignatures;
1701
+}
1702
+#include "vmware_pack_end.h"
1703
+SVGA3dDXShaderSignatureHeader;
1704
+
13551705 typedef
13561706 #include "vmware_pack_begin.h"
13571707 struct SVGA3dCmdDXDefineShader {
....@@ -1415,7 +1765,8 @@
14151765 /*
14161766 * The maximum number of streamout decl's in each streamout entry.
14171767 */
1418
-#define SVGA3D_MAX_STREAMOUT_DECLS 64
1768
+#define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64
1769
+#define SVGA3D_MAX_STREAMOUT_DECLS 512
14191770
14201771 typedef
14211772 #include "vmware_pack_begin.h"
....@@ -1434,10 +1785,16 @@
14341785 #include "vmware_pack_begin.h"
14351786 struct SVGAOTableStreamOutputEntry {
14361787 uint32 numOutputStreamEntries;
1437
- SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
1788
+ SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];
14381789 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
14391790 uint32 rasterizedStream;
1440
- uint32 pad[250];
1791
+ uint32 numOutputStreamStrides;
1792
+ uint32 mobid;
1793
+ uint32 offsetInBytes;
1794
+ uint8 usesMob;
1795
+ uint8 pad0;
1796
+ uint16 pad1;
1797
+ uint32 pad2[246];
14411798 }
14421799 #include "vmware_pack_end.h"
14431800 SVGACOTableDXStreamOutputEntry;
....@@ -1447,12 +1804,46 @@
14471804 struct SVGA3dCmdDXDefineStreamOutput {
14481805 SVGA3dStreamOutputId soid;
14491806 uint32 numOutputStreamEntries;
1450
- SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
1807
+ SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];
14511808 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
14521809 uint32 rasterizedStream;
14531810 }
14541811 #include "vmware_pack_end.h"
14551812 SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
1813
+
1814
+/*
1815
+ * Version 2 needed in order to start validating and using the
1816
+ * rasterizedStream field. Unfortunately the device wasn't validating
1817
+ * or using this field and the driver wasn't initializing it in shipped
1818
+ * code, so a new version of the command is needed to allow that code
1819
+ * to continue to work. Also added new numOutputStreamStrides field.
1820
+ */
1821
+
1822
+#define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF
1823
+
1824
+typedef
1825
+#include "vmware_pack_begin.h"
1826
+struct SVGA3dCmdDXDefineStreamOutputWithMob {
1827
+ SVGA3dStreamOutputId soid;
1828
+ uint32 numOutputStreamEntries;
1829
+ uint32 numOutputStreamStrides;
1830
+ uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1831
+ uint32 rasterizedStream;
1832
+}
1833
+#include "vmware_pack_end.h"
1834
+SVGA3dCmdDXDefineStreamOutputWithMob;
1835
+/* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB */
1836
+
1837
+typedef
1838
+#include "vmware_pack_begin.h"
1839
+struct SVGA3dCmdDXBindStreamOutput {
1840
+ SVGA3dStreamOutputId soid;
1841
+ uint32 mobid;
1842
+ uint32 offsetInBytes;
1843
+ uint32 sizeInBytes;
1844
+}
1845
+#include "vmware_pack_end.h"
1846
+SVGA3dCmdDXBindStreamOutput; /* SVGA_3D_CMD_DX_BIND_STREAMOUTPUT */
14561847
14571848 typedef
14581849 #include "vmware_pack_begin.h"
....@@ -1469,6 +1860,15 @@
14691860 }
14701861 #include "vmware_pack_end.h"
14711862 SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
1863
+
1864
+typedef
1865
+#include "vmware_pack_begin.h"
1866
+struct SVGA3dCmdDXSetMinLOD {
1867
+ SVGA3dSurfaceId sid;
1868
+ float minLOD;
1869
+}
1870
+#include "vmware_pack_end.h"
1871
+SVGA3dCmdDXSetMinLOD; /* SVGA_3D_CMD_DX_SET_MIN_LOD */
14721872
14731873 typedef
14741874 #include "vmware_pack_begin.h"
....@@ -1581,33 +1981,38 @@
15811981 uint32 rasterizerStateId;
15821982 uint32 depthStencilViewId;
15831983 uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
1584
- uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];
15851984 } renderState;
1985
+
1986
+ uint32 pad0[8];
15861987
15871988 struct {
15881989 uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
15891990 uint32 soid;
15901991 } streamOut;
1591
- uint32 pad0[11];
1992
+
1993
+ uint32 pad1[10];
1994
+
1995
+ uint32 uavSpliceIndex;
15921996
15931997 uint8 numViewports;
15941998 uint8 numScissorRects;
1595
- uint16 pad1[1];
1999
+ uint16 pad2[1];
15962000
1597
- uint32 pad2[3];
2001
+ uint32 pad3[3];
15982002
15992003 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
1600
- uint32 pad3[32];
2004
+ uint32 pad4[32];
16012005
16022006 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
1603
- uint32 pad4[64];
2007
+ uint32 pad5[64];
16042008
16052009 struct {
16062010 uint32 queryID;
16072011 uint32 value;
16082012 } predication;
1609
- uint32 pad5[2];
16102013
2014
+ SVGAMobId shaderIfaceMobid;
2015
+ uint32 shaderIfaceOffset;
16112016 struct {
16122017 uint32 shaderId;
16132018 SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
....@@ -1619,11 +2024,38 @@
16192024 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
16202025
16212026 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
1622
- uint32 pad7[380];
2027
+
2028
+ uint32 pad7[64];
2029
+
2030
+ uint32 uaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS];
2031
+ uint32 csuaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS];
2032
+
2033
+ uint32 pad8[188];
16232034 }
16242035 #include "vmware_pack_end.h"
16252036 SVGADXContextMobFormat;
16262037
2038
+/*
2039
+ * There is conflicting documentation on max class instances (253 vs 256). The
2040
+ * lower value is the one used throughout the device, but since mob format is
2041
+ * more involved to increase if needed, conservatively use the higher one here.
2042
+ */
2043
+#define SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED 256
2044
+
2045
+typedef
2046
+#include "vmware_pack_begin.h"
2047
+struct SVGADXShaderIfaceMobFormat {
2048
+ struct {
2049
+ uint32 numClassInstances;
2050
+ uint32 iface[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED];
2051
+ SVGA3dIfaceData data[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED];
2052
+ } shaderIfaceState[SVGA3D_NUM_SHADERTYPE];
2053
+
2054
+ uint32 pad0[1018];
2055
+}
2056
+#include "vmware_pack_end.h"
2057
+SVGADXShaderIfaceMobFormat;
2058
+
16272059 typedef
16282060 #include "vmware_pack_begin.h"
16292061 struct SVGA3dCmdDXTempSetContext {