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