Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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_reg.h"
  39. #include "svga3d_reg.h"
  40.  
  41. #include "pipe/p_defines.h"
  42.  
  43.  
  44. struct pipe_surface;
  45. struct svga_transfer;
  46. struct svga_winsys_context;
  47. struct svga_winsys_buffer;
  48. struct svga_winsys_surface;
  49.  
  50.  
  51. /*
  52.  * SVGA Device Interoperability
  53.  */
  54.  
  55. void *
  56. SVGA3D_FIFOReserve(struct svga_winsys_context *swc, uint32 cmd, uint32 cmdSize, uint32 nr_relocs);
  57.  
  58. void
  59. SVGA_FIFOCommitAll(struct svga_winsys_context *swc);
  60.  
  61.  
  62. /*
  63.  * Context Management
  64.  */
  65.  
  66. enum pipe_error
  67. SVGA3D_DefineContext(struct svga_winsys_context *swc);
  68.  
  69. enum pipe_error
  70. SVGA3D_DestroyContext(struct svga_winsys_context *swc);
  71.  
  72.  
  73. /*
  74.  * Surface Management
  75.  */
  76.  
  77. enum pipe_error
  78. SVGA3D_BeginDefineSurface(struct svga_winsys_context *swc,
  79.                           struct svga_winsys_surface *sid,
  80.                           SVGA3dSurfaceFlags flags,
  81.                           SVGA3dSurfaceFormat format,
  82.                           SVGA3dSurfaceFace **faces,
  83.                           SVGA3dSize **mipSizes,
  84.                           uint32 numMipSizes);
  85. enum pipe_error
  86. SVGA3D_DefineSurface2D(struct svga_winsys_context *swc,
  87.                        struct svga_winsys_surface *sid,
  88.                        uint32 width,
  89.                        uint32 height,
  90.                        SVGA3dSurfaceFormat format);
  91. enum pipe_error
  92. SVGA3D_DestroySurface(struct svga_winsys_context *swc,
  93.                       struct svga_winsys_surface *sid);
  94.  
  95.  
  96. /*
  97.  * Surface Operations
  98.  */
  99.  
  100. enum pipe_error
  101. SVGA3D_SurfaceDMA(struct svga_winsys_context *swc,
  102.                   struct svga_transfer *st,
  103.                   SVGA3dTransferType transfer,
  104.                   const SVGA3dCopyBox *boxes,
  105.                   uint32 numBoxes,
  106.                   SVGA3dSurfaceDMAFlags flags);
  107.  
  108. enum pipe_error
  109. SVGA3D_BufferDMA(struct svga_winsys_context *swc,
  110.                  struct svga_winsys_buffer *guest,
  111.                  struct svga_winsys_surface *host,
  112.                  SVGA3dTransferType transfer,
  113.                  uint32 size,
  114.                  uint32 guest_offset,
  115.                  uint32 host_offset,
  116.                  SVGA3dSurfaceDMAFlags flags);
  117.  
  118. /*
  119.  * Drawing Operations
  120.  */
  121.  
  122.  
  123. enum pipe_error
  124. SVGA3D_BeginClear(struct svga_winsys_context *swc,
  125.                   SVGA3dClearFlag flags,
  126.                   uint32 color, float depth, uint32 stencil,
  127.                   SVGA3dRect **rects, uint32 numRects);
  128.  
  129. enum pipe_error
  130. SVGA3D_ClearRect(struct svga_winsys_context *swc,
  131.                  SVGA3dClearFlag flags, uint32 color, float depth,
  132.                  uint32 stencil, uint32 x, uint32 y, uint32 w, uint32 h);
  133.  
  134. enum pipe_error
  135. SVGA3D_BeginDrawPrimitives(struct svga_winsys_context *swc,
  136.                            SVGA3dVertexDecl **decls,
  137.                            uint32 numVertexDecls,
  138.                            SVGA3dPrimitiveRange **ranges,
  139.                            uint32 numRanges);
  140.  
  141. /*
  142.  * Blits
  143.  */
  144.  
  145. enum pipe_error
  146. SVGA3D_BeginSurfaceCopy(struct svga_winsys_context *swc,
  147.                         struct pipe_surface *src,
  148.                         struct pipe_surface *dest,
  149.                         SVGA3dCopyBox **boxes, uint32 numBoxes);
  150.  
  151.  
  152. enum pipe_error
  153. SVGA3D_SurfaceStretchBlt(struct svga_winsys_context *swc,
  154.                          struct pipe_surface *src,
  155.                          struct pipe_surface *dest,
  156.                          SVGA3dBox *boxSrc, SVGA3dBox *boxDest,
  157.                          SVGA3dStretchBltMode mode);
  158.  
  159. /*
  160.  * Shared FFP/Shader Render State
  161.  */
  162.  
  163. enum pipe_error
  164. SVGA3D_SetRenderTarget(struct svga_winsys_context *swc,
  165.                        SVGA3dRenderTargetType type,
  166.                        struct pipe_surface *surface);
  167.  
  168. enum pipe_error
  169. SVGA3D_SetZRange(struct svga_winsys_context *swc,
  170.                  float zMin, float zMax);
  171.  
  172. enum pipe_error
  173. SVGA3D_SetViewport(struct svga_winsys_context *swc,
  174.                    SVGA3dRect *rect);
  175.  
  176. enum pipe_error
  177. SVGA3D_SetScissorRect(struct svga_winsys_context *swc,
  178.                       SVGA3dRect *rect);
  179.  
  180. enum pipe_error
  181. SVGA3D_SetClipPlane(struct svga_winsys_context *swc,
  182.                     uint32 index, const float *plane);
  183.  
  184. enum pipe_error
  185. SVGA3D_BeginSetTextureState(struct svga_winsys_context *swc,
  186.                             SVGA3dTextureState **states,
  187.                             uint32 numStates);
  188.  
  189. enum pipe_error
  190. SVGA3D_BeginSetRenderState(struct svga_winsys_context *swc,
  191.                            SVGA3dRenderState **states,
  192.                            uint32 numStates);
  193.  
  194.  
  195. /*
  196.  * Shaders
  197.  */
  198.  
  199. enum pipe_error
  200. SVGA3D_DefineShader(struct svga_winsys_context *swc,
  201.                     uint32 shid, SVGA3dShaderType type,
  202.                     const uint32 *bytecode, uint32 bytecodeLen);
  203.  
  204. enum pipe_error
  205. SVGA3D_DestroyShader(struct svga_winsys_context *swc,
  206.                      uint32 shid, SVGA3dShaderType type);
  207.  
  208. enum pipe_error
  209. SVGA3D_SetShaderConst(struct svga_winsys_context *swc,
  210.                       uint32 reg, SVGA3dShaderType type,
  211.                       SVGA3dShaderConstType ctype, const void *value);
  212.  
  213. enum pipe_error
  214. SVGA3D_SetShaderConsts(struct svga_winsys_context *swc,
  215.                        uint32 reg,
  216.                        uint32 numRegs,
  217.                        SVGA3dShaderType type,
  218.                        SVGA3dShaderConstType ctype,
  219.                        const void *values);
  220.  
  221. enum pipe_error
  222. SVGA3D_SetShader(struct svga_winsys_context *swc,
  223.                  SVGA3dShaderType type, uint32 shid);
  224.  
  225.  
  226. /*
  227.  * Queries
  228.  */
  229.  
  230. enum pipe_error
  231. SVGA3D_BeginQuery(struct svga_winsys_context *swc,
  232.                   SVGA3dQueryType type);
  233.  
  234. enum pipe_error
  235. SVGA3D_EndQuery(struct svga_winsys_context *swc,
  236.                 SVGA3dQueryType type,
  237.                 struct svga_winsys_buffer *buffer);
  238.  
  239. enum pipe_error
  240. SVGA3D_WaitForQuery(struct svga_winsys_context *swc,
  241.                     SVGA3dQueryType type,
  242.                     struct svga_winsys_buffer *buffer);
  243.  
  244. #endif /* __SVGA3D_H__ */
  245.