diff options
Diffstat (limited to '')
-rw-r--r-- | public/oak/inc/rx.h | 684 |
1 files changed, 684 insertions, 0 deletions
diff --git a/public/oak/inc/rx.h b/public/oak/inc/rx.h new file mode 100644 index 000000000..10f097ad4 --- /dev/null +++ b/public/oak/inc/rx.h @@ -0,0 +1,684 @@ +/* + +Copyright (c) 1994, 1995, Microsoft Corporation + +Module Name: + + rx.h + +Abstract: + + Defines and types for 3D DDI Extension Interface. + + If WINDDI.H is to be included, it must be included before this + file (applies to NT only). + +*/ + +#ifndef _RX_ +#define _RX_ + +#define RX_VERSION_MAJOR 1 +#define RX_VERSION_MINOR 0 + +/* Escape through which all 3D DDI functionality is accessed */ + +#ifndef RXFUNCS +#define RXFUNCS 3076 +#endif + +/* 3D DDI command identifiers */ + +#define RXCMD_ALLOC_TEXTURE 1 +#define RXCMD_CREATE_CONTEXT 2 +#define RXCMD_DELETE_RESOURCE 3 +#define RXCMD_DRAW_PRIM 4 +#define RXCMD_ENABLE_BUFFERS 5 +#define RXCMD_FILL_RECT 6 +#define RXCMD_FLUSH 7 +#define RXCMD_GET_INFO 8 +#define RXCMD_LOAD_TEXTURE 9 +#define RXCMD_MAP_MEM 10 +#define RXCMD_POLY_DRAW_SPAN 11 +#define RXCMD_QUERY_TEXTURE_MEMORY 12 +#define RXCMD_READ_RECT 13 +#define RXCMD_SET_STATE 14 +#define RXCMD_SWAP_BUFFERS 15 +#define RXCMD_TEXTURE_HEAP 16 +#define RXCMD_WRITE_RECT 17 + + +/* 3D DDI structures and type definitions */ + +typedef LONG LONGFIX; +typedef LONG RXREAL; +typedef HANDLE RXHANDLE; + +typedef struct _RXCAPS { + ULONG miscCaps; + ULONG rasterCaps; + ULONG zCmpCaps; + ULONG srcBlendCaps; + ULONG dstBlendCaps; + ULONG alphaCmpCaps; + ULONG shadeCaps; + ULONG texCaps; + ULONG texFilterCaps; + ULONG texBlendCaps; + ULONG texMaxWidth; + ULONG texMaxHeight; + ULONG texMinWidth; + ULONG texMinHeight; + ULONG texMaxBorder; + ULONG rasterCalcType; + ULONG fractionalRasterBits; +} RXCAPS; + +typedef struct _RXCOLOR { + UCHAR r; + UCHAR g; + UCHAR b; + UCHAR a; + UCHAR f; + UCHAR fr; + UCHAR fg; + UCHAR fb; +} RXCOLOR; + +typedef struct _RXCOLORREF { + RXREAL r; + RXREAL g; + RXREAL b; +} RXCOLORREF; + +typedef struct _RXCOLORREFA { + RXREAL r; + RXREAL g; + RXREAL b; + RXREAL a; +} RXCOLORREFA; + +typedef struct _RXCOLORREFAF { + RXREAL r; + RXREAL g; + RXREAL b; + RXREAL a; + RXREAL f; +} RXCOLORREFAF; + +typedef struct _RXGLOBALINFO { + ULONG verMajor; + ULONG verMinor; + ULONG verDriver; + UCHAR idStr[200]; +} RXGLOBALINFO; + +typedef struct _RXHDR { + ULONG flags; + RXHANDLE hrxRC; + RXHANDLE hrxSharedMem; + VOID *pSharedMem; + ULONG sharedMemSize; + ULONG reserved1; + ULONG reserved2; + ULONG reserved3; +} RXHDR; + +/* Only NT defines WNDOBJ, and it does it in WINDDI.H, which 3D DDI + clients will not include, so compile this structure only if + WINDDI.H has been included */ +#if defined(_WINDDI_) + +typedef struct _RXHDR_NTPRIVATE { + WNDOBJ *pwo; + VOID *pBuffer; + ULONG bufferSize; +} RXHDR_NTPRIVATE; + +#endif + +typedef struct _RXLINEPAT { + USHORT repFactor; + USHORT linePattern; +} RXLINEPAT; + +typedef struct _RXPOINT { + RXREAL x; + RXREAL y; +} RXPOINT; + +typedef struct _RXPOINTINT { + LONG x; + LONG y; +} RXPOINTINT; + +typedef struct _RXPOINTZ { + RXREAL x; + RXREAL y; + ULONG z; +} RXPOINTZ; + +typedef struct _RXPOINTZTEX { + RXREAL x; + RXREAL y; + ULONG z; + RXREAL w; + RXREAL s; + RXREAL t; +} RXPOINTZTEX; + +typedef struct _RXRECT { + LONG x; + LONG y; + ULONG width; + ULONG height; +} RXRECT; + +typedef struct _RXSHAREMEM { + ULONG sourceProcessID; + HANDLE hSource; + ULONG offset; + ULONG size; + ULONG clientBaseAddress; +} RXSHAREMEM; + +typedef struct _RXSPAN { + SHORT x; + SHORT y; + USHORT flags; + USHORT count; +} RXSPAN; + +typedef struct _RXSTIPPLE { + ULONG stipple[32]; +} RXSTIPPLE; + +typedef struct _RXSURFACEINFO { + ULONG flags; + ULONG colorBytesPerPixel; + ULONG rDepth; + ULONG gDepth; + ULONG bDepth; + ULONG aDepth; + ULONG rBitShift; + ULONG gBitShift; + ULONG bBitShift; + ULONG aBitShift; + ULONG colorPitch; + ULONG zDepth; + ULONG zBytesPerPixel; + ULONG zBitShift; + ULONG zPitch; + ULONG ditherPaletteOrigin; + ULONG totalTextureMemory; + ULONG perTextureTexmemOverhead; + ULONG perMipmapTexmemOverhead; +} RXSURFACEINFO; + +typedef struct _RXTEX { + RXREAL w; + RXREAL s; + RXREAL t; +} RXTEX; + +typedef struct _RXTEXMEMSTATS { + ULONG totalSystemTextureMemory; + ULONG freeSystemTextureMemory; + ULONG totalHeapTextureMemory; + ULONG freeHeapTextureMemory; +} RXTEXMEMSTATS; + +typedef struct _RXTEXTURE { + ULONG driverPrivate; + ULONG deviceFormatSize; + ULONG width; + ULONG height; + ULONG border; + ULONG texelFormat; + ULONG texels[1]; +} RXTEXTURE; + +typedef struct _RXZTEX { + ULONG z; + RXREAL w; + RXREAL s; + RXREAL t; +} RXZTEX; + +/* 3D DDI command structures */ + +typedef struct _RXALLOCTEXTURE { + ULONG command; + ULONG flags; + RXHANDLE hrxTextureHeap; + ULONG numTextures; + RXHANDLE hrxSharedMem; +} RXALLOCTEXTURE; + +typedef struct _RXCREATECONTEXT { + ULONG command; + ULONG hwnd; + ULONG flags; +} RXCREATECONTEXT; + +typedef struct _RXDELETERESOURCE { + ULONG command; + RXHANDLE hrxResource; +} RXDELETERESOURCE; + +typedef struct _RXDRAWPRIM { + ULONG command; + ULONG primType; + ULONG numVertices; + RXHANDLE hrxSharedMemVertexData; + RXHANDLE hrxSharedMemVertexPtr; + VOID *pSharedMem; +} RXDRAWPRIM; + +typedef struct _RXENABLEBUFFERS { + ULONG command; + ULONG buffers; +} RXENABLEBUFFERS; + +typedef struct _RXFILLRECT { + ULONG command; + ULONG fillType; + RXRECT fillRect; +} RXFILLRECT; + +typedef struct _RXGETINFO { + ULONG command; + ULONG infoType; + ULONG flags; + ULONG height; + ULONG width; + ULONG bitsPerPixel; + ULONG refreshRate; +} RXGETINFO; + +typedef struct _RXLOADTEXTURE { + ULONG command; + ULONG numTextures; + ULONG numColorComponents; + ULONG flags; + RXHANDLE hrxTextureMem; + RXHANDLE hrxSharedMem; +} RXLOADTEXTURE; + +typedef struct _RXMAPMEM { + ULONG command; + ULONG action; + RXHANDLE hrxSharedMem; + RXSHAREMEM shareMem; +} RXMAPMEM; + +typedef struct _RXPOLYDRAWSPAN { + ULONG command; + ULONG numSpans; + RXHANDLE hrxSharedMem; + VOID *pSharedMem; +} RXPOLYDRAWSPAN; + +typedef struct _RXQUERYTEXTUREMEMORY { + ULONG command; + RXHANDLE hrxTextureHeap; +} RXQUERYTEXTUREMEMORY; + +typedef struct _RXREADRECT { + ULONG command; + ULONG sourceX; + ULONG sourceY; + RXRECT destRect; + ULONG sourceBuffer; + RXHANDLE hrxSharedMem; + VOID *pSharedMem; + LONG sharedPitch; +} RXREADRECT; + +typedef struct _RXSETSTATE { + ULONG command; + ULONG stateToChange; + ULONG newState[1]; +} RXSETSTATE; + +typedef struct _RXSWAPBUFFERS { + ULONG command; + ULONG flags; +} RXSWAPBUFFERS; + +typedef struct _RXTEXTUREHEAP { + ULONG command; + ULONG action; + ULONG size; + RXHANDLE hrxTextureHeap; +} RXTEXTUREHEAP; + +typedef struct _RXWRITERECT { + ULONG command; + ULONG sourceX; + ULONG sourceY; + RXRECT destRect; + ULONG destBuffer; + RXHANDLE hrxSharedMem; + VOID *pSharedMem; + LONG sharedPitch; +} RXWRITERECT; + +/* Basic 3D DDI command header. There is an + extended version of this structure for + each 3D DDI command */ + +typedef struct _RXCMD { + ULONG command; +} RXCMD; + + +/* RXHDR flags */ + +#define RX_FL_CREATE_CONTEXT 0x0001 +#define RX_FL_MAP_MEM 0x0002 +#define RX_NO_CLIPPING_NEEDED 0x0004 + +#define RX_FRONT_LEFT 0x0001 +#define RX_BACK_LEFT 0x0002 + +#define RX_READ_RECT_FRONT_LEFT 1 +#define RX_READ_RECT_BACK_LEFT 2 +#define RX_READ_RECT_Z 3 + +#define RX_WRITE_RECT_PIX 1 +#define RX_WRITE_RECT_Z 2 + +#define RX_FLAT 1 +#define RX_SMOOTH 2 +#define RX_SOLID 3 + +#define RX_SPAN_HORIZONTAL 1 +#define RX_SPAN_VERTICAL 2 + +/* flags in RXCMD_CREATE_CONTEXT */ + +#define RX_FLOAT_COORDS 0x0001 +#define RX_COLOR_INDEXED 0x0002 + +/* RX_ENABLE_BUFFERS flags */ + +#define RX_ENABLE_Z_BUFFER 0x0001 +#define RX_ENABLE_BACK_LEFT_BUFFER 0x0100 + +#define RX_CLEAR_ON_SWAP 0x0001 + +/* stateToChange in RXCMD_SET_STATE */ + +#define RX_LINE_PATTERN 1 +#define RX_STIPPLE_PATTERN 2 +#define RX_ROP2 3 +#define RX_SPAN_TYPE 4 +#define RX_ACTIVE_BUFFER 5 +#define RX_PLANE_MASK 6 +#define RX_Z_WRITE_ENABLE 7 +#define RX_Z_ENABLE 8 +#define RX_ALPHA_TEST_ENABLE 9 +#define RX_LAST_PIXEL 10 +#define RX_TEX_MAG 11 +#define RX_TEX_MIN 12 +#define RX_SRC_BLEND 13 +#define RX_DST_BLEND 14 +#define RX_TEX_MAP_BLEND 15 +#define RX_CULL_MODE 16 +#define RX_SPAN_DIRECTION 17 +#define RX_Z_FUNC 18 +#define RX_ALPHA_REF 19 +#define RX_ALPHA_FUNC 20 +#define RX_DITHER_ENABLE 21 +#define RX_BLEND_ENABLE 22 +#define RX_TEXTURE 23 +#define RX_FILL_COLOR 24 +#define RX_FILL_Z 25 +#define RX_SOLID_COLOR 26 +#define RX_SCISSORS_ENABLE 27 +#define RX_SCISSORS_RECT 28 +#define RX_MASK_START 29 +#define RX_SHADE_MODE 30 +#define RX_VERTEX_TYPE 31 +#define RX_TEXTURE_PERSPECTIVE 32 +#define RX_TEX_TRANSP_ENABLE 33 +#define RX_TEX_TRANSP_COLOR 34 +#define RX_DITHER_ORIGIN 35 +#define RX_FOG_MODE 36 +#define RX_FOG_COLOR 37 +#define RX_VERTEX_COLOR_TYPE 38 +#define RX_SPAN_COLOR_TYPE 39 +#define RX_PRIMLIST_SKIP 40 +#define RX_PRIMSTRIP_SKIP 41 + +#define RX_FILL_RECT_COLOR 0x0001 +#define RX_FILL_RECT_Z 0x0002 + +/* RX_FOG_MODE settings */ + +#define RX_FOG_DISABLE 0x0001 +#define RX_FOG_NORMAL 0x0002 +#define RX_FOG_CONSTANT 0x0004 + +/* Comparison functions. Test passes if new pixel value meets the */ +/* specified condition with the current pixel value. */ + +#define RX_CMP_NEVER 0x0001 +#define RX_CMP_LESS 0x0002 +#define RX_CMP_EQUAL 0x0004 +#define RX_CMP_LEQUAL 0x0008 +#define RX_CMP_GREATER 0x0010 +#define RX_CMP_NOTEQUAL 0x0020 +#define RX_CMP_GEQUAL 0x0040 +#define RX_CMP_ALWAYS 0x0080 +#define RX_CMP_ALLGL 0x00ff + +/* RXCAPS miscCaps */ + +#define RX_MASK_MSB 0x0001 +#define RX_MASK_LSB 0x0002 +#define RX_MASK_PLANES 0x0004 +#define RX_MASK_Z 0x0008 +#define RX_LINE_PATTERN_REP 0x0010 +#define RX_CULL 0x0020 +#define RX_HORIZONTAL_SPANS 0x0040 +#define RX_VERTICAL_SPANS 0x0080 + +/* Blending flags */ + +#define RX_BLEND_ZERO 0x0001 +#define RX_BLEND_ONE 0x0002 +#define RX_BLEND_SRC_COLOR 0x0004 +#define RX_BLEND_INV_SRC_COLOR 0x0008 +#define RX_BLEND_SRC_ALPHA 0x0010 +#define RX_BLEND_INV_SRC_ALPHA 0x0020 +#define RX_BLEND_DST_ALPHA 0x0040 +#define RX_BLEND_INV_DST_ALPHA 0x0080 +#define RX_BLEND_DST_COLOR 0x0100 +#define RX_BLEND_INV_DST_COLOR 0x0200 +#define RX_BLEND_SRC_ALPHA_SAT 0x0400 +#define RX_BLEND_BOTH_SRC_ALPHA 0x0800 +#define RX_BLEND_BOTH_INV_SRC_ALPHA 0x1000 +#define RX_BLEND_ALLGL 0x07ff + +/* RXCAPS shadeCaps */ + +#define RX_SHADE_SMOOTH 0x0001 +#define RX_FLAT_ALPHA 0x0002 +#define RX_SMOOTH_ALPHA 0x0004 +#define RX_SOLID_ALPHA 0x0008 +#define RX_NORMAL_FOG 0x0010 +#define RX_CONSTANT_FOG 0x0020 + +/* RXCAPS texCaps */ + +#define RX_TEX_PERSPECTIVE 0x0001 +#define RX_TEX_POW2 0x0002 +#define RX_TEX_ALPHA 0x0004 +#define RX_TEX_TRANSPARENCY 0x0008 +#define RX_TEX_BORDER 0x0010 +#define RX_TEX_8888 0x0020 +#define RX_TEX_4444 0x0040 +#define RX_TEX_1555 0x0080 +#define RX_TEX_0565 0x0100 +#define RX_TEX_0332 0x0200 + +/* Texture-mapping flags */ + +#define RX_TEX_NEAREST 0x0001 +#define RX_TEX_LINEAR 0x0002 +#define RX_TEX_MIP_NEAREST 0x0004 +#define RX_TEX_MIP_LINEAR 0x0008 +#define RX_TEX_LINEAR_MIP_NEAREST 0x0010 +#define RX_TEX_LINEAR_MIP_LINEAR 0x0020 + +/* Texture blending flags */ + +#define RX_TEX_DECAL 0x0001 +#define RX_TEX_MODULATE 0x0002 +#define RX_TEX_DECAL_ALPHA 0x0004 +#define RX_TEX_MODULATE_ALPHA 0x0008 +#define RX_TEX_DECAL_MASK 0x0010 +#define RX_TEX_MODULATE_MASK 0x0020 + +/* RXCAPS rasterCalcType values */ + +#define RX_RASTER_FIXED 1 +#define RX_RASTER_ERROR_TERM 2 +#define RX_RASTER_OTHER 3 + +/* RX_TEX_MAP_BLEND state values */ + +#define RX_TEX_MAP_DECAL 1 +#define RX_TEX_MAP_MODULATE 2 +#define RX_TEX_MAP_DECAL_ALPHA 3 +#define RX_TEX_MAP_MODULATE_ALPHA 4 +#define RX_TEX_MAP_DECAL_MASK 5 +#define RX_TEX_MAP_MODULATE_MASK 6 + +/* RXCAPS rasterCaps flags */ + +#define RX_RASTER_DITHER 0x0001 +#define RX_RASTER_ROP2 0x0002 +#define RX_RASTER_XOR 0x0004 +#define RX_RASTER_PAT 0x0008 +#define RX_RASTER_SUBPIXEL 0x0010 + +/* flags in RXSURFACEINFO */ + +#define RX_SWAP_PRESERVE_BACK 0x0001 +#define RX_BACK_BUFFER 0x0002 +#define RX_MULTIBUFFER_WRITE 0x0004 +#define RX_SWAP_AND_CLEAR 0x0008 +#define RX_LINEAR_TEXMEM 0x0010 +#define RX_LINEAR_PLUS_K_TEXMEM 0x0020 +#define RX_LINEAR_MIPMEM 0x0040 +#define RX_LINEAR_PLUS_K_MIPMEM 0x0080 +#define RX_LINEAR_DWORD_PER_SCAN 0x0100 +#define RX_FLOAT_VALUES 0x0200 +#define RX_VERTEX_COLOR_RXREALS 0x0400 + +/* RX_SPAN_TYPE state values */ + +#define RX_SPAN_COLOR 1 +#define RX_SPAN_COLOR_Z 2 +#define RX_SPAN_COLOR_Z_TEX 3 + +/* RX_CULL_MODE state values */ + +#define RX_CULL_NONE 1 +#define RX_CULL_CW 2 +#define RX_CULL_CCW 3 + +/* flags in RXSPAN */ + +#define RX_SPAN_DELTA 0x0001 +#define RX_SPAN_MASK 0x0002 + +/* flags for driverPrivate field in RXTEXTURE */ + +#define RX_DONT_SET_DEVICE_FORMAT 0x0000 +#define RX_SET_DEVICE_FORMAT 0x0001 +#define RX_IN_DEVICE_FORMAT 0x0002 +#define RX_PRIVATE_DEVICE_FORMAT (~0x0003) + +/* flags in RXGETINFO */ + +#define RX_QUERY_CURRENT_MODE 0x0001 +#define RX_MATCH_REFRESH 0x0002 +#define RX_GET_INFO_COLOR_INDEX 0x0004 +#define RX_FULLSCREEN_INFO 0x0008 + +/* RXCMD_GET_INFO return values */ + +#define RX_GET_INFO_INVALID_MODE 1 +#define RX_GET_INFO_CI_NOT_SUPPORTED 2 +#define RX_GET_INFO_RGBA_NOT_SUPPORTED 3 +#define RX_GET_INFO_CAP_NOT_SUPPORTED 4 + +/* RXMAPMEM action field values */ + +#define RX_CREATE_MEM_MAP 1 +#define RX_DELETE_MEM_MAP 2 + +/* RXLOADTEXTURE flag values */ + +#define RX_COMPRESS_LOSSY 1 + +/* RXTEXTUREHEAP action field values */ + +#define RX_CREATE_TEXTURE_HEAP 1 +#define RX_DELETE_TEXTURE_HEAP 2 +#define RX_CLEAR_TEXTURE_HEAP 3 + +/* Primitive types for RXDRAWPRIM */ + +#define RX_PRIM_LINESTRIP 1 +#define RX_PRIM_TRISTRIP 2 +#define RX_PRIM_QUADSTRIP 3 +#define RX_PRIM_LINELIST 4 +#define RX_PRIM_TRILIST 5 +#define RX_PRIM_QUADLIST 6 +#define RX_PRIM_INTLINESTRIP 7 + +/* RX_VERTEX_TYPE state values */ + +#define RX_POINT 1 +#define RX_POINTZ 2 +#define RX_POINTZTEX 3 + +/* RX_SPAN_COLOR_TYPE state values */ + +#define RX_SPAN_COLOR_RGB 1 +#define RX_SPAN_COLOR_RGBA 2 +#define RX_SPAN_COLOR_RGBAF 3 + +/* RX_VERTEX_COLOR_TYPE state values */ + +#define RX_VERTEX_COLOR_PACKED 1 +#define RX_VERTEX_COLOR_NONE 2 +#define RX_VERTEX_COLOR_RGB 3 +#define RX_VERTEX_COLOR_RGBA 4 +#define RX_VERTEX_COLOR_RGBAF 5 + +/* Texture formats */ + +#define RX_TEXTURE_8888 1 +#define RX_TEXTURE_4444 2 +#define RX_TEXTURE_1555 3 +#define RX_TEXTURE_0565 4 +#define RX_TEXTURE_0332 5 + +/* RXGETINFO infoType field values */ + +#define RX_INFO_GLOBAL_CAPS 1 +#define RX_INFO_SURFACE_CAPS 2 +#define RX_INFO_SPAN_CAPS 3 +#define RX_INFO_LINE_CAPS 4 +#define RX_INFO_TRIANGLE_CAPS 5 +#define RX_INFO_QUAD_CAPS 6 +#define RX_INFO_INTLINE_CAPS 7 + +#endif // _RX_ + |