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