| /********************************************************** |
| * Copyright 2008-2009 VMware, Inc. All rights reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person |
| * obtaining a copy of this software and associated documentation |
| * files (the "Software"), to deal in the Software without |
| * restriction, including without limitation the rights to use, copy, |
| * modify, merge, publish, distribute, sublicense, and/or sell copies |
| * of the Software, and to permit persons to whom the Software is |
| * furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be |
| * included in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| * |
| **********************************************************/ |
| |
| /* |
| * svga_cmd.h -- |
| * |
| * Command construction utility for the SVGA3D protocol used by |
| * the VMware SVGA device, based on the svgautil library. |
| */ |
| |
| #ifndef __SVGA3D_H__ |
| #define __SVGA3D_H__ |
| |
| |
| #include "svga_types.h" |
| #include "svga_reg.h" |
| #include "svga3d_reg.h" |
| |
| #include "pipe/p_defines.h" |
| |
| |
| struct pipe_surface; |
| struct svga_transfer; |
| struct svga_winsys_context; |
| struct svga_winsys_buffer; |
| struct svga_winsys_surface; |
| |
| |
| /* |
| * SVGA Device Interoperability |
| */ |
| |
| void * |
| SVGA3D_FIFOReserve(struct svga_winsys_context *swc, uint32 cmd, uint32 cmdSize, uint32 nr_relocs); |
| |
| void |
| SVGA_FIFOCommitAll(struct svga_winsys_context *swc); |
| |
| |
| /* |
| * Context Management |
| */ |
| |
| enum pipe_error |
| SVGA3D_DefineContext(struct svga_winsys_context *swc); |
| |
| enum pipe_error |
| SVGA3D_DestroyContext(struct svga_winsys_context *swc); |
| |
| |
| /* |
| * Surface Management |
| */ |
| |
| enum pipe_error |
| SVGA3D_BeginDefineSurface(struct svga_winsys_context *swc, |
| struct svga_winsys_surface *sid, |
| SVGA3dSurfaceFlags flags, |
| SVGA3dSurfaceFormat format, |
| SVGA3dSurfaceFace **faces, |
| SVGA3dSize **mipSizes, |
| uint32 numMipSizes); |
| enum pipe_error |
| SVGA3D_DefineSurface2D(struct svga_winsys_context *swc, |
| struct svga_winsys_surface *sid, |
| uint32 width, |
| uint32 height, |
| SVGA3dSurfaceFormat format); |
| enum pipe_error |
| SVGA3D_DestroySurface(struct svga_winsys_context *swc, |
| struct svga_winsys_surface *sid); |
| |
| |
| /* |
| * Surface Operations |
| */ |
| |
| enum pipe_error |
| SVGA3D_SurfaceDMA(struct svga_winsys_context *swc, |
| struct svga_transfer *st, |
| SVGA3dTransferType transfer, |
| const SVGA3dCopyBox *boxes, |
| uint32 numBoxes, |
| SVGA3dSurfaceDMAFlags flags); |
| |
| enum pipe_error |
| SVGA3D_BufferDMA(struct svga_winsys_context *swc, |
| struct svga_winsys_buffer *guest, |
| struct svga_winsys_surface *host, |
| SVGA3dTransferType transfer, |
| uint32 size, |
| uint32 guest_offset, |
| uint32 host_offset, |
| SVGA3dSurfaceDMAFlags flags); |
| |
| /* |
| * Drawing Operations |
| */ |
| |
| |
| enum pipe_error |
| SVGA3D_BeginClear(struct svga_winsys_context *swc, |
| SVGA3dClearFlag flags, |
| uint32 color, float depth, uint32 stencil, |
| SVGA3dRect **rects, uint32 numRects); |
| |
| enum pipe_error |
| SVGA3D_ClearRect(struct svga_winsys_context *swc, |
| SVGA3dClearFlag flags, uint32 color, float depth, |
| uint32 stencil, uint32 x, uint32 y, uint32 w, uint32 h); |
| |
| enum pipe_error |
| SVGA3D_BeginDrawPrimitives(struct svga_winsys_context *swc, |
| SVGA3dVertexDecl **decls, |
| uint32 numVertexDecls, |
| SVGA3dPrimitiveRange **ranges, |
| uint32 numRanges); |
| |
| /* |
| * Blits |
| */ |
| |
| enum pipe_error |
| SVGA3D_BeginSurfaceCopy(struct svga_winsys_context *swc, |
| struct pipe_surface *src, |
| struct pipe_surface *dest, |
| SVGA3dCopyBox **boxes, uint32 numBoxes); |
| |
| |
| enum pipe_error |
| SVGA3D_SurfaceStretchBlt(struct svga_winsys_context *swc, |
| struct pipe_surface *src, |
| struct pipe_surface *dest, |
| SVGA3dBox *boxSrc, SVGA3dBox *boxDest, |
| SVGA3dStretchBltMode mode); |
| |
| /* |
| * Shared FFP/Shader Render State |
| */ |
| |
| enum pipe_error |
| SVGA3D_SetRenderTarget(struct svga_winsys_context *swc, |
| SVGA3dRenderTargetType type, |
| struct pipe_surface *surface); |
| |
| enum pipe_error |
| SVGA3D_SetZRange(struct svga_winsys_context *swc, |
| float zMin, float zMax); |
| |
| enum pipe_error |
| SVGA3D_SetViewport(struct svga_winsys_context *swc, |
| SVGA3dRect *rect); |
| |
| enum pipe_error |
| SVGA3D_SetScissorRect(struct svga_winsys_context *swc, |
| SVGA3dRect *rect); |
| |
| enum pipe_error |
| SVGA3D_SetClipPlane(struct svga_winsys_context *swc, |
| uint32 index, const float *plane); |
| |
| enum pipe_error |
| SVGA3D_BeginSetTextureState(struct svga_winsys_context *swc, |
| SVGA3dTextureState **states, |
| uint32 numStates); |
| |
| enum pipe_error |
| SVGA3D_BeginSetRenderState(struct svga_winsys_context *swc, |
| SVGA3dRenderState **states, |
| uint32 numStates); |
| |
| |
| /* |
| * Shaders |
| */ |
| |
| enum pipe_error |
| SVGA3D_DefineShader(struct svga_winsys_context *swc, |
| uint32 shid, SVGA3dShaderType type, |
| const uint32 *bytecode, uint32 bytecodeLen); |
| |
| enum pipe_error |
| SVGA3D_DestroyShader(struct svga_winsys_context *swc, |
| uint32 shid, SVGA3dShaderType type); |
| |
| enum pipe_error |
| SVGA3D_SetShaderConst(struct svga_winsys_context *swc, |
| uint32 reg, SVGA3dShaderType type, |
| SVGA3dShaderConstType ctype, const void *value); |
| |
| enum pipe_error |
| SVGA3D_SetShaderConsts(struct svga_winsys_context *swc, |
| uint32 reg, |
| uint32 numRegs, |
| SVGA3dShaderType type, |
| SVGA3dShaderConstType ctype, |
| const void *values); |
| |
| enum pipe_error |
| SVGA3D_SetShader(struct svga_winsys_context *swc, |
| SVGA3dShaderType type, uint32 shid); |
| |
| |
| /* |
| * Queries |
| */ |
| |
| enum pipe_error |
| SVGA3D_BeginQuery(struct svga_winsys_context *swc, |
| SVGA3dQueryType type); |
| |
| enum pipe_error |
| SVGA3D_EndQuery(struct svga_winsys_context *swc, |
| SVGA3dQueryType type, |
| struct svga_winsys_buffer *buffer); |
| |
| enum pipe_error |
| SVGA3D_WaitForQuery(struct svga_winsys_context *swc, |
| SVGA3dQueryType type, |
| struct svga_winsys_buffer *buffer); |
| |
| #endif /* __SVGA3D_H__ */ |