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