• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2008-2024 Broadcom. All Rights Reserved.
3  * The term “Broadcom” refers to Broadcom Inc.
4  * and/or its subsidiaries.
5  * SPDX-License-Identifier: MIT
6  */
7 
8 /*
9  * svga_cmd.h --
10  *
11  *      Command construction utility for the SVGA3D protocol used by
12  *      the VMware SVGA device, based on the svgautil library.
13  */
14 
15 #ifndef __SVGA3D_H__
16 #define __SVGA3D_H__
17 
18 
19 #include "svga_winsys.h"
20 #include "svga_reg.h"
21 #include "svga3d_reg.h"
22 
23 #include "pipe/p_defines.h"
24 
25 
26 struct pipe_surface;
27 struct svga_transfer;
28 struct svga_winsys_context;
29 struct svga_winsys_buffer;
30 struct svga_winsys_surface;
31 struct svga_winsys_gb_shader;
32 struct svga_winsys_gb_query;
33 
34 
35 /*
36  * SVGA Device Interoperability
37  */
38 
39 void *
40 SVGA3D_FIFOReserve(struct svga_winsys_context *swc, uint32 cmd, uint32 cmdSize, uint32 nr_relocs);
41 
42 void
43 SVGA_FIFOCommitAll(struct svga_winsys_context *swc);
44 
45 /**
46  * Return the last command id put in the command buffer.
47  */
48 static inline SVGAFifo3dCmdId
SVGA3D_GetLastCommand(const struct svga_winsys_context * swc)49 SVGA3D_GetLastCommand(const struct svga_winsys_context *swc)
50 {
51    return swc->last_command;
52 }
53 
54 /**
55  * Reset/clear the last command put in the command buffer.
56  * To be called when buffer is flushed.
57  */
58 static inline void
SVGA3D_ResetLastCommand(struct svga_winsys_context * swc)59 SVGA3D_ResetLastCommand(struct svga_winsys_context *swc)
60 {
61    swc->last_command = 0;
62 }
63 
64 
65 /*
66  * Context Management
67  */
68 
69 enum pipe_error
70 SVGA3D_DefineContext(struct svga_winsys_context *swc);
71 
72 enum pipe_error
73 SVGA3D_DestroyContext(struct svga_winsys_context *swc);
74 
75 
76 /*
77  * Surface Management
78  */
79 
80 enum pipe_error
81 SVGA3D_BeginDefineSurface(struct svga_winsys_context *swc,
82                           struct svga_winsys_surface *sid,
83                           SVGA3dSurface1Flags flags,
84                           SVGA3dSurfaceFormat format,
85                           SVGA3dSurfaceFace **faces,
86                           SVGA3dSize **mipSizes,
87                           uint32 numMipSizes);
88 enum pipe_error
89 SVGA3D_DefineSurface2D(struct svga_winsys_context *swc,
90                        struct svga_winsys_surface *sid,
91                        uint32 width,
92                        uint32 height,
93                        SVGA3dSurfaceFormat format);
94 enum pipe_error
95 SVGA3D_DestroySurface(struct svga_winsys_context *swc,
96                       struct svga_winsys_surface *sid);
97 
98 
99 /*
100  * Surface Operations
101  */
102 
103 enum pipe_error
104 SVGA3D_SurfaceDMA(struct svga_winsys_context *swc,
105                   struct svga_transfer *st,
106                   SVGA3dTransferType transfer,
107                   const SVGA3dCopyBox *boxes,
108                   uint32 numBoxes,
109                   SVGA3dSurfaceDMAFlags flags);
110 
111 enum pipe_error
112 SVGA3D_BufferDMA(struct svga_winsys_context *swc,
113                  struct svga_winsys_buffer *guest,
114                  struct svga_winsys_surface *host,
115                  SVGA3dTransferType transfer,
116                  uint32 size,
117                  uint32 guest_offset,
118                  uint32 host_offset,
119                  SVGA3dSurfaceDMAFlags flags);
120 
121 /*
122  * Drawing Operations
123  */
124 
125 
126 enum pipe_error
127 SVGA3D_BeginClear(struct svga_winsys_context *swc,
128                   SVGA3dClearFlag flags,
129                   uint32 color, float depth, uint32 stencil,
130                   SVGA3dRect **rects, uint32 numRects);
131 
132 enum pipe_error
133 SVGA3D_ClearRect(struct svga_winsys_context *swc,
134                  SVGA3dClearFlag flags, uint32 color, float depth,
135                  uint32 stencil, uint32 x, uint32 y, uint32 w, uint32 h);
136 
137 enum pipe_error
138 SVGA3D_BeginDrawPrimitives(struct svga_winsys_context *swc,
139                            SVGA3dVertexDecl **decls,
140                            uint32 numVertexDecls,
141                            SVGA3dPrimitiveRange **ranges,
142                            uint32 numRanges);
143 
144 /*
145  * Blits
146  */
147 
148 enum pipe_error
149 SVGA3D_BeginSurfaceCopy(struct svga_winsys_context *swc,
150                         struct pipe_surface *src,
151                         struct pipe_surface *dest,
152                         SVGA3dCopyBox **boxes, uint32 numBoxes);
153 
154 
155 enum pipe_error
156 SVGA3D_SurfaceStretchBlt(struct svga_winsys_context *swc,
157                          struct pipe_surface *src,
158                          struct pipe_surface *dest,
159                          SVGA3dBox *boxSrc, SVGA3dBox *boxDest,
160                          SVGA3dStretchBltMode mode);
161 
162 /*
163  * Shared FFP/Shader Render State
164  */
165 
166 enum pipe_error
167 SVGA3D_SetRenderTarget(struct svga_winsys_context *swc,
168                        SVGA3dRenderTargetType type,
169                        struct pipe_surface *surface);
170 
171 enum pipe_error
172 SVGA3D_SetZRange(struct svga_winsys_context *swc,
173                  float zMin, float zMax);
174 
175 enum pipe_error
176 SVGA3D_SetViewport(struct svga_winsys_context *swc,
177                    SVGA3dRect *rect);
178 
179 enum pipe_error
180 SVGA3D_SetScissorRect(struct svga_winsys_context *swc,
181                       SVGA3dRect *rect);
182 
183 enum pipe_error
184 SVGA3D_SetClipPlane(struct svga_winsys_context *swc,
185                     uint32 index, const float *plane);
186 
187 enum pipe_error
188 SVGA3D_BeginSetTextureState(struct svga_winsys_context *swc,
189                             SVGA3dTextureState **states,
190                             uint32 numStates);
191 
192 enum pipe_error
193 SVGA3D_BeginSetRenderState(struct svga_winsys_context *swc,
194                            SVGA3dRenderState **states,
195                            uint32 numStates);
196 
197 
198 /*
199  * Shaders
200  */
201 
202 enum pipe_error
203 SVGA3D_DefineShader(struct svga_winsys_context *swc,
204                     uint32 shid, SVGA3dShaderType type,
205                     const uint32 *bytecode, uint32 bytecodeLen);
206 
207 enum pipe_error
208 SVGA3D_DestroyShader(struct svga_winsys_context *swc,
209                      uint32 shid, SVGA3dShaderType type);
210 
211 enum pipe_error
212 SVGA3D_SetShaderConst(struct svga_winsys_context *swc,
213                       uint32 reg, SVGA3dShaderType type,
214                       SVGA3dShaderConstType ctype, const void *value);
215 
216 enum pipe_error
217 SVGA3D_SetShaderConsts(struct svga_winsys_context *swc,
218                        uint32 reg,
219                        uint32 numRegs,
220                        SVGA3dShaderType type,
221                        SVGA3dShaderConstType ctype,
222                        const void *values);
223 
224 enum pipe_error
225 SVGA3D_SetShader(struct svga_winsys_context *swc,
226                  SVGA3dShaderType type, uint32 shid);
227 
228 
229 /*
230  * Guest-backed surface functions
231  */
232 
233 enum pipe_error
234 SVGA3D_BindGBShader(struct svga_winsys_context *swc,
235                     struct svga_winsys_gb_shader *gbshader);
236 
237 enum pipe_error
238 SVGA3D_SetGBShader(struct svga_winsys_context *swc,
239                    SVGA3dShaderType type,
240                    struct svga_winsys_gb_shader *gbshader);
241 
242 enum pipe_error
243 SVGA3D_DefineGBSurface_v2(struct svga_winsys_context *swc,
244                           uint32 sid,
245                           SVGA3dSurface1Flags surfaceFlags,
246                           SVGA3dSurfaceFormat format,
247                           uint32 numMipLevels,
248                           uint32 multisampleCount,
249                           SVGA3dTextureFilter autogenFilter,
250                           SVGA3dSize size,
251                           uint32 arraySize);
252 
253 enum pipe_error
254 SVGA3D_DefineGBSurface_v3(struct svga_winsys_context *swc,
255                           uint32 sid,
256                           SVGA3dSurfaceAllFlags surfaceFlags,
257                           SVGA3dSurfaceFormat format,
258                           uint32 numMipLevels,
259                           uint32 multisampleCount,
260                           SVGA3dMSPattern multisamplePattern,
261                           SVGA3dMSQualityLevel qualityLevel,
262                           SVGA3dTextureFilter autogenFilter,
263                           SVGA3dSize size,
264                           uint32 arraySize);
265 
266 enum pipe_error
267 SVGA3D_DefineGBSurface_v4(struct svga_winsys_context *swc,
268                           uint32 sid,
269                           SVGA3dSurfaceAllFlags surfaceFlags,
270                           SVGA3dSurfaceFormat format,
271                           uint32 numMipLevels,
272                           uint32 multisampleCount,
273                           SVGA3dMSPattern multisamplePattern,
274                           SVGA3dMSQualityLevel qualityLevel,
275                           SVGA3dTextureFilter autogenFilter,
276                           SVGA3dSize size,
277                           uint32 arraySize,
278                           uint32 bufferByteStride);
279 
280 enum pipe_error
281 SVGA3D_BindGBSurface(struct svga_winsys_context *swc,
282                      struct svga_winsys_surface *surface);
283 
284 enum pipe_error
285 SVGA3D_UpdateGBImage(struct svga_winsys_context *swc,
286                      struct svga_winsys_surface *surface,
287                      const SVGA3dBox *box,
288                      unsigned face, unsigned mipLevel);
289 
290 enum pipe_error
291 SVGA3D_UpdateGBSurface(struct svga_winsys_context *swc,
292                        struct svga_winsys_surface *surface);
293 
294 
295 enum pipe_error
296 SVGA3D_ReadbackGBImage(struct svga_winsys_context *swc,
297                        struct svga_winsys_surface *surface,
298                        unsigned face, unsigned mipLevel);
299 
300 
301 enum pipe_error
302 SVGA3D_ReadbackGBSurface(struct svga_winsys_context *swc,
303                          struct svga_winsys_surface *surface);
304 
305 
306 enum pipe_error
307 SVGA3D_ReadbackGBImagePartial(struct svga_winsys_context *swc,
308                               struct svga_winsys_surface *surface,
309                               unsigned face, unsigned mipLevel,
310                               const SVGA3dBox *box,
311                               bool invertBox);
312 
313 
314 enum pipe_error
315 SVGA3D_InvalidateGBImagePartial(struct svga_winsys_context *swc,
316                                 struct svga_winsys_surface *surface,
317                                 unsigned face, unsigned mipLevel,
318                                 const SVGA3dBox *box,
319                                 bool invertBox);
320 
321 enum pipe_error
322 SVGA3D_InvalidateGBSurface(struct svga_winsys_context *swc,
323                            struct svga_winsys_surface *surface);
324 
325 
326 enum pipe_error
327 SVGA3D_SetGBShaderConstsInline(struct svga_winsys_context *swc,
328                                unsigned regStart,
329                                unsigned numRegs,
330                                SVGA3dShaderType shaderType,
331                                SVGA3dShaderConstType constType,
332                                const void *values);
333 
334 enum pipe_error
335 SVGA3D_DestroyGBSurface(struct svga_winsys_context *swc,
336                         uint32 sid);
337 
338 /*
339  * Queries
340  */
341 
342 enum pipe_error
343 SVGA3D_BeginQuery(struct svga_winsys_context *swc,
344                   SVGA3dQueryType type);
345 
346 enum pipe_error
347 SVGA3D_EndQuery(struct svga_winsys_context *swc,
348                 SVGA3dQueryType type,
349                 struct svga_winsys_buffer *buffer);
350 
351 enum pipe_error
352 SVGA3D_WaitForQuery(struct svga_winsys_context *swc,
353                     SVGA3dQueryType type,
354                     struct svga_winsys_buffer *buffer);
355 
356 
357 
358 /*
359  * VGPU10 commands
360  */
361 
362 enum pipe_error
363 SVGA3D_vgpu10_PredCopyRegion(struct svga_winsys_context *swc,
364                              struct svga_winsys_surface *dstSurf,
365                              uint32 dstSubResource,
366                              struct svga_winsys_surface *srcSurf,
367                              uint32 srcSubResource,
368                              const SVGA3dCopyBox *box);
369 
370 enum pipe_error
371 SVGA3D_vgpu10_PredCopy(struct svga_winsys_context *swc,
372                        struct svga_winsys_surface *dstSurf,
373                        struct svga_winsys_surface *srcSurf);
374 
375 enum pipe_error
376 SVGA3D_vgpu10_SetViewports(struct svga_winsys_context *swc,
377                            unsigned count, const SVGA3dViewport *viewports);
378 
379 enum pipe_error
380 SVGA3D_vgpu10_SetShader(struct svga_winsys_context *swc,
381                         SVGA3dShaderType type,
382                         struct svga_winsys_gb_shader *gbshader,
383                         SVGA3dShaderId shaderId);
384 
385 enum pipe_error
386 SVGA3D_vgpu10_SetShaderResources(struct svga_winsys_context *swc,
387                                  SVGA3dShaderType type,
388                                  uint32 startView,
389                                  unsigned count,
390                                  const SVGA3dShaderResourceViewId ids[],
391                                  struct svga_winsys_surface **views);
392 
393 enum pipe_error
394 SVGA3D_vgpu10_SetSamplers(struct svga_winsys_context *swc,
395                           unsigned count,
396                           uint32 startSampler,
397                           SVGA3dShaderType type,
398                           const SVGA3dSamplerId *samplerIds);
399 
400 enum pipe_error
401 SVGA3D_vgpu10_SetRenderTargets(struct svga_winsys_context *swc,
402                                unsigned color_count,
403                                struct pipe_surface **color_surfs,
404                                struct pipe_surface *depth_stencil_surf);
405 
406 enum pipe_error
407 SVGA3D_vgpu10_SetBlendState(struct svga_winsys_context *swc,
408                             SVGA3dBlendStateId blendId,
409                             const float *blendFactor, uint32 sampleMask);
410 
411 enum pipe_error
412 SVGA3D_vgpu10_SetDepthStencilState(struct svga_winsys_context *swc,
413                                    SVGA3dDepthStencilStateId depthStencilId,
414                                    uint32 stencilRef);
415 
416 enum pipe_error
417 SVGA3D_vgpu10_SetRasterizerState(struct svga_winsys_context *swc,
418                                  SVGA3dRasterizerStateId rasterizerId);
419 
420 enum pipe_error
421 SVGA3D_vgpu10_SetPredication(struct svga_winsys_context *swc,
422                              SVGA3dQueryId queryId,
423                              uint32 predicateValue);
424 
425 enum pipe_error
426 SVGA3D_vgpu10_SetSOTargets(struct svga_winsys_context *swc,
427                            unsigned count, const SVGA3dSoTarget *targets,
428                            struct svga_winsys_surface **surfaces);
429 
430 enum pipe_error
431 SVGA3D_vgpu10_SetScissorRects(struct svga_winsys_context *swc,
432                               unsigned count,
433                               const SVGASignedRect *rects);
434 
435 enum pipe_error
436 SVGA3D_vgpu10_SetStreamOutput(struct svga_winsys_context *swc,
437                               SVGA3dStreamOutputId soid);
438 
439 enum pipe_error
440 SVGA3D_vgpu10_Draw(struct svga_winsys_context *swc,
441                    uint32 vertexCount, uint32 startVertexLocation);
442 
443 enum pipe_error
444 SVGA3D_vgpu10_DrawIndexed(struct svga_winsys_context *swc,
445                           uint32 indexCount, uint32 startIndexLocation,
446                           int32 baseVertexLocation);
447 
448 enum pipe_error
449 SVGA3D_vgpu10_DrawInstanced(struct svga_winsys_context *swc,
450                             uint32 vertexCountPerInstance,
451                             uint32 instanceCount,
452                             uint32 startVertexLocation,
453                             uint32 startInstanceLocation);
454 
455 enum pipe_error
456 SVGA3D_vgpu10_DrawIndexedInstanced(struct svga_winsys_context *swc,
457                                    uint32 indexCountPerInstance,
458                                    uint32 instanceCount,
459                                    uint32 startIndexLocation,
460                                    int32  baseVertexLocation,
461                                    uint32 startInstanceLocation);
462 
463 enum pipe_error
464 SVGA3D_vgpu10_DrawAuto(struct svga_winsys_context *swc);
465 
466 enum pipe_error
467 SVGA3D_vgpu10_DefineQuery(struct svga_winsys_context *swc,
468                           SVGA3dQueryId queryId,
469                           SVGA3dQueryType type,
470                           SVGA3dDXQueryFlags flags);
471 
472 enum pipe_error
473 SVGA3D_vgpu10_DestroyQuery(struct svga_winsys_context *swc,
474                            SVGA3dQueryId queryId);
475 
476 enum pipe_error
477 SVGA3D_vgpu10_BindQuery(struct svga_winsys_context *swc,
478                         struct svga_winsys_gb_query *gbQuery,
479                         SVGA3dQueryId queryId);
480 
481 enum pipe_error
482 SVGA3D_vgpu10_SetQueryOffset(struct svga_winsys_context *swc,
483                              SVGA3dQueryId queryId,
484                              uint32 mobOffset);
485 
486 enum pipe_error
487 SVGA3D_vgpu10_BeginQuery(struct svga_winsys_context *swc,
488                          SVGA3dQueryId queryId);
489 
490 enum pipe_error
491 SVGA3D_vgpu10_EndQuery(struct svga_winsys_context *swc,
492                        SVGA3dQueryId queryId);
493 
494 enum pipe_error
495 SVGA3D_vgpu10_ClearRenderTargetView(struct svga_winsys_context *swc,
496                                     struct pipe_surface *color_surf,
497                                     const float *rgba);
498 
499 enum pipe_error
500 SVGA3D_vgpu10_ClearDepthStencilView(struct svga_winsys_context *swc,
501                                     struct pipe_surface *ds_surf,
502                                     uint16 flags, uint16 stencil, float depth);
503 
504 enum pipe_error
505 SVGA3D_vgpu10_DefineShaderResourceView(struct svga_winsys_context *swc,
506                              SVGA3dShaderResourceViewId shaderResourceViewId,
507                              struct svga_winsys_surface *surf,
508                              SVGA3dSurfaceFormat format,
509                              SVGA3dResourceType resourceDimension,
510                              const SVGA3dShaderResourceViewDesc *desc);
511 
512 enum pipe_error
513 SVGA3D_vgpu10_DestroyShaderResourceView(struct svga_winsys_context *swc,
514                             SVGA3dShaderResourceViewId shaderResourceViewId);
515 
516 enum pipe_error
517 SVGA3D_vgpu10_DefineRenderTargetView(struct svga_winsys_context *swc,
518                                   SVGA3dRenderTargetViewId renderTargetViewId,
519                                   struct svga_winsys_surface *surface,
520                                   SVGA3dSurfaceFormat format,
521                                   SVGA3dResourceType resourceDimension,
522                                   const SVGA3dRenderTargetViewDesc *desc);
523 
524 enum pipe_error
525 SVGA3D_vgpu10_DestroyRenderTargetView(struct svga_winsys_context *swc,
526                                 SVGA3dRenderTargetViewId renderTargetViewId);
527 
528 enum pipe_error
529 SVGA3D_vgpu10_DefineDepthStencilView(struct svga_winsys_context *swc,
530                                   SVGA3dDepthStencilViewId depthStencilViewId,
531                                   struct svga_winsys_surface *surface,
532                                   SVGA3dSurfaceFormat format,
533                                   SVGA3dResourceType resourceDimension,
534                                   const SVGA3dRenderTargetViewDesc *desc);
535 
536 
537 enum pipe_error
538 SVGA3D_vgpu10_DestroyDepthStencilView(struct svga_winsys_context *swc,
539                                 SVGA3dDepthStencilViewId depthStencilViewId);
540 
541 enum pipe_error
542 SVGA3D_vgpu10_DefineElementLayout(struct svga_winsys_context *swc,
543                                unsigned count,
544                                SVGA3dElementLayoutId elementLayoutId,
545                                const SVGA3dInputElementDesc *elements);
546 
547 enum pipe_error
548 SVGA3D_vgpu10_DestroyElementLayout(struct svga_winsys_context *swc,
549                                    SVGA3dElementLayoutId elementLayoutId);
550 
551 enum pipe_error
552 SVGA3D_vgpu10_DefineBlendState(struct svga_winsys_context *swc,
553                                SVGA3dBlendStateId blendId,
554                                uint8 alphaToCoverageEnable,
555                                uint8 independentBlendEnable,
556                                const SVGA3dDXBlendStatePerRT *perRT);
557 
558 enum pipe_error
559 SVGA3D_vgpu10_DestroyBlendState(struct svga_winsys_context *swc,
560                                 SVGA3dBlendStateId blendId);
561 
562 enum pipe_error
563 SVGA3D_vgpu10_DefineDepthStencilState(struct svga_winsys_context *swc,
564                                       SVGA3dDepthStencilStateId depthStencilId,
565                                       uint8 depthEnable,
566                                       SVGA3dDepthWriteMask depthWriteMask,
567                                       SVGA3dComparisonFunc depthFunc,
568                                       uint8 stencilEnable,
569                                       uint8 frontEnable,
570                                       uint8 backEnable,
571                                       uint8 stencilReadMask,
572                                       uint8 stencilWriteMask,
573                                       uint8 frontStencilFailOp,
574                                       uint8 frontStencilDepthFailOp,
575                                       uint8 frontStencilPassOp,
576                                       SVGA3dComparisonFunc frontStencilFunc,
577                                       uint8 backStencilFailOp,
578                                       uint8 backStencilDepthFailOp,
579                                       uint8 backStencilPassOp,
580                                       SVGA3dComparisonFunc backStencilFunc);
581 
582 enum pipe_error
583 SVGA3D_vgpu10_DestroyDepthStencilState(struct svga_winsys_context *swc,
584                                        SVGA3dDepthStencilStateId depthStencilId);
585 
586 enum pipe_error
587 SVGA3D_vgpu10_DefineRasterizerState(struct svga_winsys_context *swc,
588                                     SVGA3dRasterizerStateId rasterizerId,
589                                     uint8 fillMode,
590                                     SVGA3dCullMode cullMode,
591                                     uint8 frontCounterClockwise,
592                                     int32 depthBias,
593                                     float depthBiasClamp,
594                                     float slopeScaledDepthBias,
595                                     uint8 depthClipEnable,
596                                     uint8 scissorEnable,
597                                     uint8 multisampleEnable,
598                                     uint8 antialiasedLineEnable,
599                                     float lineWidth,
600                                     uint8 lineStippleEnable,
601                                     uint8 lineStippleFactor,
602                                     uint16 lineStipplePattern,
603                                     uint8 provokingVertexLast);
604 
605 enum pipe_error
606 SVGA3D_vgpu10_DestroyRasterizerState(struct svga_winsys_context *swc,
607                                      SVGA3dRasterizerStateId rasterizerId);
608 
609 enum pipe_error
610 SVGA3D_vgpu10_DefineSamplerState(struct svga_winsys_context *swc,
611                                  SVGA3dSamplerId samplerId,
612                                  SVGA3dFilter filter,
613                                  uint8 addressU,
614                                  uint8 addressV,
615                                  uint8 addressW,
616                                  float mipLODBias,
617                                  uint8 maxAnisotropy,
618                                  uint8 comparisonFunc,
619                                  SVGA3dRGBAFloat borderColor,
620                                  float minLOD,
621                                  float maxLOD);
622 
623 enum pipe_error
624 SVGA3D_vgpu10_DestroySamplerState(struct svga_winsys_context *swc,
625                                   SVGA3dSamplerId samplerId);
626 
627 enum pipe_error
628 SVGA3D_vgpu10_DestroyShader(struct svga_winsys_context *swc,
629                             SVGA3dShaderId shaderId);
630 
631 enum pipe_error
632 SVGA3D_vgpu10_DefineAndBindShader(struct svga_winsys_context *swc,
633                                   struct svga_winsys_gb_shader *gbshader,
634                                   SVGA3dShaderId shaderId,
635                                   SVGA3dShaderType type,
636                                   uint32 sizeInBytes);
637 
638 enum pipe_error
639 SVGA3D_vgpu10_DefineStreamOutput(struct svga_winsys_context *swc,
640       SVGA3dStreamOutputId soid,
641       uint32 numOutputStreamEntries,
642       uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS],
643       const SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]);
644 
645 enum pipe_error
646 SVGA3D_vgpu10_DestroyStreamOutput(struct svga_winsys_context *swc,
647                                   SVGA3dStreamOutputId soid);
648 
649 enum pipe_error
650 SVGA3D_vgpu10_ReadbackSubResource(struct svga_winsys_context *swc,
651                                   struct svga_winsys_surface *surface,
652                                   unsigned subResource);
653 
654 enum pipe_error
655 SVGA3D_vgpu10_SetInputLayout(struct svga_winsys_context *swc,
656                              SVGA3dElementLayoutId elementLayoutId);
657 
658 enum pipe_error
659 SVGA3D_vgpu10_SetVertexBuffers(struct svga_winsys_context *swc,
660                                unsigned count,
661                                uint32 startBuffer,
662                                const SVGA3dVertexBuffer_v2 *bufferInfo,
663                                struct svga_winsys_surface **surfaces);
664 
665 enum pipe_error
666 SVGA3D_vgpu10_SetVertexBuffers_v2(struct svga_winsys_context *swc,
667                                unsigned count,
668                                uint32 startBuffer,
669                                const SVGA3dVertexBuffer_v2 *bufferInfo,
670                                struct svga_winsys_surface **surfaces);
671 
672 enum pipe_error
673 SVGA3D_vgpu10_SetVertexBuffersOffsetAndSize(struct svga_winsys_context *swc,
674                                unsigned count,
675                                uint32 startBuffer,
676                                const SVGA3dVertexBuffer_v2 *bufferInfo);
677 
678 enum pipe_error
679 SVGA3D_vgpu10_SetTopology(struct svga_winsys_context *swc,
680                           SVGA3dPrimitiveType topology);
681 
682 enum pipe_error
683 SVGA3D_vgpu10_SetIndexBuffer(struct svga_winsys_context *swc,
684                              struct svga_winsys_surface *indexes,
685                              SVGA3dSurfaceFormat format, uint32 offset);
686 
687 enum pipe_error
688 SVGA3D_vgpu10_SetIndexBuffer_v2(struct svga_winsys_context *swc,
689                                 struct svga_winsys_surface *indexes,
690                                 SVGA3dSurfaceFormat format, uint32 offset,
691                                 uint32 sizeInBytes);
692 
693 enum pipe_error
694 SVGA3D_vgpu10_SetIndexBufferOffsetAndSize(struct svga_winsys_context *swc,
695                              SVGA3dSurfaceFormat format, uint32 offset,
696                              uint32 sizeInBytes);
697 
698 enum pipe_error
699 SVGA3D_vgpu10_SetSingleConstantBuffer(struct svga_winsys_context *swc,
700                                       unsigned slot,
701                                       SVGA3dShaderType type,
702                                       struct svga_winsys_surface *surface,
703                                       uint32 offsetInBytes,
704                                       uint32 sizeInBytes);
705 
706 enum pipe_error
707 SVGA3D_vgpu10_SetConstantBufferOffset(struct svga_winsys_context *swc,
708                                       unsigned command,
709                                       unsigned slot,
710                                       uint32 offsetInBytes);
711 
712 enum pipe_error
713 SVGA3D_vgpu10_UpdateSubResource(struct svga_winsys_context *swc,
714                                 struct svga_winsys_surface *surface,
715                                 const SVGA3dBox *box,
716                                 unsigned subResource);
717 
718 enum pipe_error
719 SVGA3D_vgpu10_GenMips(struct svga_winsys_context *swc,
720                       SVGA3dShaderResourceViewId shaderResourceViewId,
721                       struct svga_winsys_surface *view);
722 
723 enum pipe_error
724 SVGA3D_vgpu10_BufferCopy(struct svga_winsys_context *swc,
725                          struct svga_winsys_surface *src,
726                          struct svga_winsys_surface *dst,
727                          unsigned srcx, unsigned dstx, unsigned width);
728 
729 enum pipe_error
730 SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
731                                  struct svga_winsys_surface *src,
732                                  unsigned srcOffset, unsigned srcPitch,
733                                  unsigned srcSlicePitch,
734                                  struct svga_winsys_surface *dst,
735                                  unsigned dstSubResource,
736                                  SVGA3dBox *dstBox);
737 
738 /*Cap2 commands*/
739 enum pipe_error
740 SVGA3D_vgpu10_IntraSurfaceCopy(struct svga_winsys_context *swc,
741                                struct svga_winsys_surface *src,
742                                unsigned level, unsigned face,
743                                const SVGA3dCopyBox *box);
744 
745 enum pipe_error
746 SVGA3D_vgpu10_ResolveCopy(struct svga_winsys_context *swc,
747                           unsigned dstSubResource,
748                           struct svga_winsys_surface *dst,
749                           unsigned srcSubResource,
750                           struct svga_winsys_surface *src,
751                           const SVGA3dSurfaceFormat copyFormat);
752 
753 enum pipe_error
754 SVGA3D_sm5_DrawIndexedInstancedIndirect(struct svga_winsys_context *swc,
755                                         struct svga_winsys_surface *argBuffer,
756                                         unsigned argOffset);
757 
758 enum pipe_error
759 SVGA3D_sm5_DrawInstancedIndirect(struct svga_winsys_context *swc,
760                                  struct svga_winsys_surface *argBuffer,
761                                  unsigned argOffset);
762 
763 enum pipe_error
764 SVGA3D_sm5_DefineUAView(struct svga_winsys_context *swc,
765                         SVGA3dUAViewId uaViewId,
766                         struct svga_winsys_surface *surface,
767                         SVGA3dSurfaceFormat format,
768                         SVGA3dResourceType resourceDimension,
769                         const SVGA3dUAViewDesc *desc);
770 
771 enum pipe_error
772 SVGA3D_sm5_DestroyUAView(struct svga_winsys_context *swc,
773                          SVGA3dUAViewId uaViewId);
774 
775 enum pipe_error
776 SVGA3D_sm5_SetUAViews(struct svga_winsys_context *swc,
777                       uint32 uavSpliceIndex,
778                       unsigned count,
779                       const SVGA3dUAViewId ids[],
780                       struct svga_winsys_surface **uaViews);
781 
782 enum pipe_error
783 SVGA3D_sm5_SetCSUAViews(struct svga_winsys_context *swc,
784                         unsigned count,
785                         const SVGA3dUAViewId ids[],
786                         struct svga_winsys_surface **uaViews);
787 
788 enum pipe_error
789 SVGA3D_sm5_Dispatch(struct svga_winsys_context *swc,
790                     const uint32 threadGroupCount[3]);
791 
792 enum pipe_error
793 SVGA3D_sm5_DispatchIndirect(struct svga_winsys_context *swc,
794                             struct svga_winsys_surface *argBuffer,
795                             uint32 argOffset);
796 
797 enum pipe_error
798 SVGA3D_sm5_DefineAndBindStreamOutput(struct svga_winsys_context *swc,
799        SVGA3dStreamOutputId soid,
800        uint32 numOutputStreamEntries,
801        uint32 numOutputStreamStrides,
802        uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS],
803        struct svga_winsys_buffer *declBuf,
804        uint32 rasterizedStream,
805        uint32 sizeInBytes);
806 
807 enum pipe_error
808 SVGA3D_sm5_DefineRasterizerState_v2(struct svga_winsys_context *swc,
809                                     SVGA3dRasterizerStateId rasterizerId,
810                                     uint8 fillMode,
811                                     SVGA3dCullMode cullMode,
812                                     uint8 frontCounterClockwise,
813                                     int32 depthBias,
814                                     float depthBiasClamp,
815                                     float slopeScaledDepthBias,
816                                     uint8 depthClipEnable,
817                                     uint8 scissorEnable,
818                                     uint8 multisampleEnable,
819                                     uint8 antialiasedLineEnable,
820                                     float lineWidth,
821                                     uint8 lineStippleEnable,
822                                     uint8 lineStippleFactor,
823                                     uint16 lineStipplePattern,
824                                     uint8 provokingVertexLast,
825                                     uint32 forcedSampleCount);
826 #endif /* __SVGA3D_H__ */
827