Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

146 lines
4.0 KiB

//----------------------------------------------------------------------------
//
// refif.hpp
//
// Refrast front-end/rasterizer interface header.
//
// Copyright (C) Microsoft Corporation, 1997.
//
//----------------------------------------------------------------------------
#ifndef _REFIF_HPP_
#define _REFIF_HPP_
// Vertex data is aligned on 32-byte boundaries.
#define DP_VTX_ALIGN 32
// Lock surfaces before rendering
inline HRESULT LockSurface(LPDDRAWI_DDRAWSURFACE_LCL pDDSLcl, LPVOID *ppData)
{
if (pDDSLcl)
{
if (!VIDEO_MEMORY(pDDSLcl))
{
if (SURFACE_LOCKED(pDDSLcl))
return DDERR_SURFACEBUSY;
*ppData = (LPVOID)SURFACE_MEMORY(pDDSLcl);
return DD_OK;
}
else
{
HRESULT ddrval;
do
{
ddrval = DDInternalLock(pDDSLcl, ppData);
} while (ddrval == DDERR_WASSTILLDRAWING);
return ddrval;
}
}
return DD_OK;
}
// Unlock surfaces after rendering
inline void UnlockSurface(LPDDRAWI_DDRAWSURFACE_LCL pDDSLcl)
{
if (pDDSLcl && VIDEO_MEMORY(pDDSLcl))
{
DDInternalUnlock(pDDSLcl);
}
}
HRESULT FASTCALL
DoRendPoints(ReferenceRasterizer * pCtx,
LPD3DINSTRUCTION pIns,
LPD3DTLVERTEX pVtx,
LPD3DPOINT pPt);
HRESULT FASTCALL
DoRendLines(ReferenceRasterizer * pCtx,
LPD3DINSTRUCTION pIns,
LPD3DTLVERTEX pVtx,
LPD3DLINE pLine);
HRESULT FASTCALL
DoRendTriangles(ReferenceRasterizer *pCtx,
LPD3DINSTRUCTION pIns,
LPD3DTLVERTEX pVtx,
LPD3DTRIANGLE pTri);
HRESULT FASTCALL
DoDrawPrimitives2(ReferenceRasterizer *pCtx,
UINT16 dwStride,
DWORD dwFvf,
PUINT8 pVtx,
DWORD dwNumVertices,
LPD3DHAL_DP2COMMAND *ppCmd,
LPDWORD lpdwRStates,
BOOL bWireframe = FALSE
);
// Macros to check if a pointer is valid
#if DBG
// Validate context. pCtx should be declared before this macro
// Type can be D3DContext or RefRast
#define VALIDATE_CONTEXT(caller_name, data_ptr, pCtx, type) \
{ \
if ((data_ptr) == NULL) \
{ \
DPFM(0, DRV, ("in %s, data pointer = NULL", (caller_name))); \
return DDHAL_DRIVER_HANDLED; \
} \
pCtx = (type)((data_ptr)->dwhContext); \
if (!pCtx) \
{ \
DPFM(0, DRV, ("in %s, dwhContext = NULL", (caller_name))); \
(data_ptr)->ddrval = D3DHAL_CONTEXT_BAD; \
return DDHAL_DRIVER_HANDLED; \
} \
}
#else // !DBG
// Validate context. pCtx should be declared before this macro
// Type can be D3DContext or RefRast
#define VALIDATE_CONTEXT(caller_name, data_ptr, pCtx, type) \
{ \
pCtx = (type)((data_ptr)->dwhContext); \
}
#endif // !DBG
// Validate ReferenceRasterizer. pRefRast should be declared before this macro
#define VALIDATE_REFRAST_CONTEXT(caller_name, data_ptr) \
{ \
VALIDATE_CONTEXT(caller_name, data_ptr, pRefRast, ReferenceRasterizer*);\
}
#define CHECK_FVF(ret, pDCtx, dwFlags) \
{ \
if ((ret = pDCtx->CheckFVF(dwFlags)) != DD_OK) \
{ \
return DDHAL_DRIVER_HANDLED; \
} \
}
HRESULT FASTCALL
FindOutSurfFormat(LPDDPIXELFORMAT pDdPixFmt,
RRSurfaceType *pFmt);
BOOL FASTCALL
ValidTextureSize(INT16 iuSize, INT16 iuShift,
INT16 ivSize, INT16 ivShift);
BOOL FASTCALL
ValidMipmapSize(INT16 iPreSize, INT16 iSize);
DWORD __stdcall
RefRastDrawPrimitives2(LPD3DHAL_DRAWPRIMITIVES2DATA pDPrim2Data);
HRESULT
RefRastLockTarget(ReferenceRasterizer *pRefRast);
void
RefRastUnlockTarget(ReferenceRasterizer *pRefRast);
HRESULT
RefRastLockTexture(ReferenceRasterizer *pRefRast);
void
RefRastUnlockTexture(ReferenceRasterizer *pRefRast);
// DXT block size array
extern int g_DXTBlkSize[];
#endif // #ifndef _REFIF_HPP_