Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

684 lines
16 KiB

/*
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_