summaryrefslogtreecommitdiffstats
path: root/public/oak/inc/rx.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/oak/inc/rx.h684
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_
+