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