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.
95 lines
3.4 KiB
95 lines
3.4 KiB
//----------------------------------------------------------------------------
|
|
//
|
|
// halprov.h
|
|
//
|
|
// Defines the IHalProvider interface.
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef _HALPROV_H_
|
|
#define _HALPROV_H_
|
|
|
|
// The following stuff is for Ramp Rasterizer.
|
|
typedef enum _RastRampServiceType
|
|
{
|
|
RAMP_SERVICE_CREATEMAT = 0,
|
|
RAMP_SERVICE_DESTORYMAT = 1,
|
|
RAMP_SERVICE_SETMATDATA = 2,
|
|
RAMP_SERVICE_SETLIGHTSTATE = 3,
|
|
// This returns base, size, and a texture ramp.
|
|
// Arg1 is a pointer to RAMP_RANGE_INFO.
|
|
RAMP_SERVICE_FIND_LIGHTINGRANGE = 4,
|
|
// This service only calls BeginSceneHook. Both arg1 and arg2 are ignored.
|
|
RAMP_SERVICE_CLEAR = 5,
|
|
// Arg1 is a D3DMATERIALHANDLE, arg2 is a DWORD* to get the pixel value.
|
|
RAMP_SERVICE_MATERIAL_TO_PIXEL = 6,
|
|
// Arg1 is 0 if end scene, != 0 if begin scene
|
|
RAMP_SERVICE_SCENE_CAPTURE = 8,
|
|
// Arg1 is hTex
|
|
RAMP_SERVICE_PALETTE_CHANGED = 9,
|
|
// Arg1 is hMat, Arg2 is RECT*
|
|
RAMP_SERVICE_CLEAR_TEX_RECT = 10,
|
|
} RastRampServiceType;
|
|
|
|
typedef enum _RastServiceType
|
|
{
|
|
// Arg1 is a D3DCOLOR, and Arg2 is a DWORD* to get the pixel value
|
|
RAST_SERVICE_RGB8COLORTOPIXEL = 0,
|
|
} RastServiceType;
|
|
|
|
typedef HRESULT (*PFN_RASTRAMPSERVICE)
|
|
(ULONG_PTR dwCtx, RastRampServiceType srvType, ULONG_PTR arg1, LPVOID arg2);
|
|
|
|
typedef HRESULT (*PFN_RASTSERVICE)
|
|
(ULONG_PTR dwCtx, RastServiceType srvType, DWORD arg1, LPVOID arg2);
|
|
|
|
typedef struct _D3DHALPROVIDER_INTERFACEDATA
|
|
{
|
|
DWORD dwSize;
|
|
LPD3DHAL_GLOBALDRIVERDATA pGlobalData;
|
|
LPD3DHAL_D3DEXTENDEDCAPS pExtCaps;
|
|
LPD3DHAL_CALLBACKS pCallbacks;
|
|
LPD3DHAL_CALLBACKS2 pCallbacks2;
|
|
LPD3DHAL_CALLBACKS3 pCallbacks3;
|
|
|
|
// This function pointer should be NULL except for ramp rasterizer.
|
|
PFN_RASTRAMPSERVICE pfnRampService;
|
|
|
|
PFN_RASTSERVICE pfnRastService;
|
|
|
|
} D3DHALPROVIDER_INTERFACEDATA, *LPD3DHALPROVIDER_INTERFACEDATA;
|
|
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHalProvider
|
|
|
|
DECLARE_INTERFACE_(IHalProvider, IUnknown)
|
|
{
|
|
// IUnknown.
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
// IHalProvider.
|
|
STDMETHOD(GetCaps)(THIS_
|
|
LPDDRAWI_DIRECTDRAW_GBL pDdGbl,
|
|
LPD3DDEVICEDESC pHwDesc,
|
|
LPD3DDEVICEDESC pHelDesc,
|
|
DWORD dwVersion) PURE;
|
|
STDMETHOD(GetInterface)(THIS_
|
|
LPDDRAWI_DIRECTDRAW_GBL pDdGbl,
|
|
LPD3DHALPROVIDER_INTERFACEDATA pInterfaceData,
|
|
DWORD dwVersion) PURE;
|
|
};
|
|
|
|
STDAPI GetHwHalProvider(REFCLSID riid,
|
|
IHalProvider **ppHalProvider, HINSTANCE *phDll, LPDDRAWI_DIRECTDRAW_GBL pDdGbl);
|
|
STDAPI GetSwHalProvider(REFCLSID riid,
|
|
IHalProvider **ppHalProvider, HINSTANCE *phDll);
|
|
|
|
STDAPI GetSwZBufferFormats(REFCLSID riid, DDPIXELFORMAT **ppDDPF);
|
|
STDAPI GetSwTextureFormats(REFCLSID riid, LPDDSURFACEDESC* lplpddsd, DWORD dwD3DDeviceVersion);
|
|
|
|
#endif // #ifndef _HALPROV_H_
|