Home | History | Annotate | Download | only in svga
      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
     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
     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                           SVGA3dSurfaceFlags 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_UpdateSubResource(struct svga_winsys_context *swc,
    661                                 struct svga_winsys_surface *surface,
    662                                 const SVGA3dBox *box,
    663                                 unsigned subResource);
    664 
    665 enum pipe_error
    666 SVGA3D_vgpu10_GenMips(struct svga_winsys_context *swc,
    667                       const SVGA3dShaderResourceViewId shaderResourceViewId,
    668                       struct svga_winsys_surface *view);
    669 
    670 enum pipe_error
    671 SVGA3D_vgpu10_BufferCopy(struct svga_winsys_context *swc,
    672                          struct svga_winsys_surface *src,
    673                          struct svga_winsys_surface *dst,
    674                          unsigned srcx, unsigned dstx, unsigned width);
    675 
    676 enum pipe_error
    677 SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
    678                                  struct svga_winsys_surface *src,
    679                                  unsigned srcOffset, unsigned srcPitch,
    680                                  unsigned srcSlicePitch,
    681                                  struct svga_winsys_surface *dst,
    682                                  unsigned dstSubResource,
    683                                  SVGA3dBox *dstBox);
    684 
    685 #endif /* __SVGA3D_H__ */
    686