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