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.
 
 
 
 
 
 

812 lines
32 KiB

/******************************Module*Header**********************************\
*
*
* Module Name: p2def.h
*
* Content:
*
* Copyright (c) 1994-1998 3Dlabs Inc. Ltd. All rights reserved.
* Copyright (c) 1995-1999 Microsoft Corporation. All rights reserved.
\*****************************************************************************/
#ifndef _P2DEF_H
#define _P2DEF_H
// Texture operations
#define _P2_TEXTURE_MODULATE 0
#define _P2_TEXTURE_DECAL 1
#define _P2_TEXTURE_SPECULAR 4
#define _P2_TEXTURE_COPY 3
#define _P2_TEXTURE_CLAMP 0
#define _P2_TEXTURE_MIRROR 2
#define _P2_TEXTURE_REPEAT 1
/*-----------------------------------------------------*/
/* Permedia Register Fields */
/* --------------------- */
/* Common */
#define __PERMEDIA_ENABLE 1
#define __PERMEDIA_DISABLE 0
// From FBReadMode
#define __PERMEDIA_PATCH 0
#define __PERMEDIA_SUBPATCH 1
#define __PERMEDIA_SUBPATCHPACK 2
#define __PERMEDIA_8BITPIXEL 0
#define __PERMEDIA_16BITPIXEL 1
#define __PERMEDIA_32BITPIXEL 2
#define __PERMEDIA_4BITPIXEL 3
#define __PERMEDIA_24BITPIXEL 4
/* Host In */
#define __PERMEDIA_TAG_MODE_HOLD 0
#define __PERMEDIA_TAG_MODE_INCREMENT 1
#define __PERMEDIA_TAG_MODE_INDEXED 2
#define __PERMEDIA_TAG_MODE_RESERVED 3
/* Host out (Filter) options. */
#define __PERMEDIA_FILTER_TAG 0x1
#define __PERMEDIA_FILTER_DATA 0x2
#define __PERMEDIA_FILTER_TAG_AND_DATA 0x3
#define __PERMEDIA_STATS_COMPARE_INSIDE_REGION 0
#define __PERMEDIA_STATS_COMPARE_OUTSIDE_REGION 1
#define __PERMEDIA_STATS_EXCLUDE_PASSIVE_STEPS 0
#define __PERMEDIA_STATS_INCLUDE_PASSIVE_STEPS 1
#define __PERMEDIA_STATS_EXCLUDE_ACTIVE_STEPS 0
#define __PERMEDIA_STATS_INCLUDE_ACTIVE_STEPS 1
#define __PERMEDIA_STATS_TYPE_PICKING 0
#define __PERMEDIA_STATS_TYPE_EXTENT 1
/* Rasterization */
#define __PERMEDIA_LINE_PRIMITIVE 0
#define __PERMEDIA_TRAPEZOID_PRIMITIVE 1
#define __PERMEDIA_POINT_PRIMITIVE 2
#define __PERMEDIA_RECTANGLE_PRIMITIVE 3
#define __PERMEDIA_FLAT_SHADE_MODE 0
#define __PERMEDIA_GOURAUD_SHADE_MODE 1
#define __PERMEDIA_FRACTION_ADJUST_NONE 0
#define __PERMEDIA_FRACTION_ADJUST_TRUNC 1
#define __PERMEDIA_FRACTION_ADJUST_HALF 2
#define __PERMEDIA_FRACTION_ADJUST_ALMOST_HALF 3
#define __PERMEDIA_START_BIAS_ZERO 0
#define __PERMEDIA_START_BIAS_HALF 1
#define __PERMEDIA_START_BIAS_ALMOST_HALF 2
/* Scissor */
/* Stipple */
#define __PERMEDIA_RESET_STIPPLE_COUNTERS 0
#define __PERMEDIA_LOAD_STIPPLE_COUNTERS 1
/* specifies pattern size as number of address bits less 1 */
#define __PERMEDIA_AREA_STIPPLE_2_PIXEL_PATTERN 0
#define __PERMEDIA_AREA_STIPPLE_4_PIXEL_PATTERN 1
#define __PERMEDIA_AREA_STIPPLE_8_PIXEL_PATTERN 2
#define __PERMEDIA_AREA_STIPPLE_16_PIXEL_PATTERN 3
#define __PERMEDIA_AREA_STIPPLE_32_PIXEL_PATTERN 4
/* Chroma Test Mode */
#define __PERMEDIA_CHROMA_FBSOURCE 0
#define __PERMEDIA_CHROMA_FBDATA 1
#define __PERMEDIA_CHROMA_INPUT_COLOR 2
#define __PERMEDIA_CHROMA_OUTPUT_COLOR 3
#define __PERMEDIA_CHROMA_INCLUDE 0
#define __PERMEDIA_CHROMA_EXCLUDE 1
/* Texture Filter Mode */
#define __PERMEDIA_TEXTUREFILTER_ALPHAMAPSENSE_INCLUDE 0
#define __PERMEDIA_TEXTUREFILTER_ALPHAMAPSENSE_EXCLUDE 1
/* Local buffer read */
#define __PERMEDIA_PPCODE0 0
#define __PERMEDIA_PPCODE1 1
#define __PERMEDIA_PPCODE2 2
#define __PERMEDIA_PPCODE3 3
#define __PERMEDIA_PPCODE4 4
#define __PERMEDIA_PPCODE5 5
#define __PERMEDIA_PPCODE6 6
#define __PERMEDIA_PPCODE7 7
#define __PERMEDIA_LBDEFAULT 0
#define __PERMEDIA_LBSTENCIL 1
#define __PERMEDIA_LBDEPTH 2
#define __PERMEDIA_FBDEFAULT 0
#define __PERMEDIA_FBCOLOR 1
#define __PERMEDIA_TOP_LEFT_WINDOW_ORIGIN 0
#define __PERMEDIA_BOTTOM_LEFT_WINDOW_ORIGIN 1
#define __PERMEDIA_DEPTH_WIDTH_16 0
#define __PERMEDIA_DEPTH_WIDTH_24 1
#define __PERMEDIA_DEPTH_WIDTH_32 2
#define __PERMEDIA_STENCIL_WIDTH_0 0
#define __PERMEDIA_STENCIL_WIDTH_4 1
#define __PERMEDIA_STENCIL_WIDTH_8 2
#define __PERMEDIA_STENCIL_POSITION_16 0
#define __PERMEDIA_STENCIL_POSITION_20 1
#define __PERMEDIA_FRAMECOUNT_POSITION_24 2
#define __PERMEDIA_FRAMECOUNT_POSITION_28 3
#define __PERMEDIA_FRAMECOUNT_POSITION_32 4
#define __PERMEDIA_FRAMECOUNT_POSITION_36 5
#define __PERMEDIA_FRAMECOUNT_POSITION_40 6
#define __PERMEDIA_GID_WIDTH_0 0
#define __PERMEDIA_GID_WIDTH_4 1
#define __PERMEDIA_GID_POSITION_16 0
#define __PERMEDIA_GID_POSITION_20 1
#define __PERMEDIA_GID_POSITION_24 2
#define __PERMEDIA_GID_POSITION_28 3
#define __PERMEDIA_GID_POSITION_32 4
#define __PERMEDIA_GID_POSITION_36 5
#define __PERMEDIA_GID_POSITION_40 6
#define __PERMEDIA_GID_POSITION_44 7
#define __PERMEDIA_GID_POSITION_48 8
/* FBReadMode */
#define __PERMEDIA_FBREAD_FBDEFAULT 0
#define __PERMEDIA_FBREAD_FBCOLOR 1
#define __PERMEDIA_FBREAD_ORIGINTOPLEFT 0
#define __PERMEDIA_FBREAD_ORIGINBOTTOMLEFT 1
#define __PERMEDIA_FBREAD_FBSOURCE_CONSTANT 0
#define __PERMEDIA_FBREAD_FBSOURCE_INDEX 1
#define __PERMEDIA_FBREAD_FBSOURCE_COORDINATE 2
/* Pixel ownership */
#define __PERMEDIA_GID_COMPARE_ALWAYS 0
#define __PERMEDIA_GID_COMPARE_NEVER 1
#define __PERMEDIA_GID_COMPARE_EQUAL 2
#define __PERMEDIA_GID_COMPARE_NOT_EQUAL 3
#define __PERMEDIA_GID_LBUPDATE_LBDATA 0
#define __PERMEDIA_GID_LBUPDATE_REGISTER 1
/* Stencil Test */
#define __PERMEDIA_STENCIL_BUFFER_WIDTH_4 0
#define __PERMEDIA_STENCIL_BUFFER_WIDTH_8 1
#define __PERMEDIA_STENCIL_BUFFER_WIDTH_1 2
#define __PERMEDIA_STENCIL_SOURCE_TEST_LOGIC 0
#define __PERMEDIA_STENCIL_SOURCE_STENCIL_MSG 1
#define __PERMEDIA_STENCIL_SOURCE_SOURCE_STENCIL 2
#define __PERMEDIA_STENCIL_SOURCE_LBSOURCEDATA_MSG 3
#define __PERMEDIA_STENCIL_COMPARE_MODE_NEVER 0
#define __PERMEDIA_STENCIL_COMPARE_MODE_LESS 1
#define __PERMEDIA_STENCIL_COMPARE_MODE_EQUAL 2
#define __PERMEDIA_STENCIL_COMPARE_MODE_LESS_OR_EQUAL 3
#define __PERMEDIA_STENCIL_COMPARE_MODE_GREATER 4
#define __PERMEDIA_STENCIL_COMPARE_MODE_NOT_EQUAL 5
#define __PERMEDIA_STENCIL_COMPARE_MODE_GREATER_OR_EQUAL 6
#define __PERMEDIA_STENCIL_COMPARE_MODE_ALWAYS 7
#define __PERMEDIA_STENCIL_METHOD_KEEP 0
#define __PERMEDIA_STENCIL_METHOD_ZERO 1
#define __PERMEDIA_STENCIL_METHOD_REPLACE 2
#define __PERMEDIA_STENCIL_METHOD_INCR 3
#define __PERMEDIA_STENCIL_METHOD_DECR 4
#define __PERMEDIA_STENCIL_METHOD_INVERT 5
/* Depth Test */
#define __PERMEDIA_DEPTH_SOURCE_DDA 0
#define __PERMEDIA_DEPTH_SOURCE_SOURCE_DEPTH 1
#define __PERMEDIA_DEPTH_SOURCE_DEPTH_MSG 2
#define __PERMEDIA_DEPTH_SOURCE_LBSOURCEDATA_MSG 3
#define __PERMEDIA_DEPTH_COMPARE_MODE_NEVER 0
#define __PERMEDIA_DEPTH_COMPARE_MODE_LESS 1
#define __PERMEDIA_DEPTH_COMPARE_MODE_EQUAL 2
#define __PERMEDIA_DEPTH_COMPARE_MODE_LESS_OR_EQUAL 3
#define __PERMEDIA_DEPTH_COMPARE_MODE_GREATER 4
#define __PERMEDIA_DEPTH_COMPARE_MODE_NOT_EQUAL 5
#define __PERMEDIA_DEPTH_COMPARE_MODE_GREATER_OR_EQUAL 6
#define __PERMEDIA_DEPTH_COMPARE_MODE_ALWAYS 7
/* Local buffer write */
#define __PERMEDIA_WRITEMODE_NORMAL 0
#define __PERMEDIA_WRITEMODE_DOWRITE 1
#define __PERMEDIA_WRITEMODE_CANCELWRITE 2
#define __PERMEDIA_UPLOADDATA_NONE 0
#define __PERMEDIA_UPLOADDATA_LBDEPTH 1
#define __PERMEDIA_UPLOADDATA_LBSTENCIL 2
/* Texture / Fog */
#define __PERMEDIA_TEXTURE_FILTER_NEAREST 0
#define __PERMEDIA_TEXTURE_FILTER_LINEAR2 1
#define __PERMEDIA_TEXTURE_FILTER_TRILINEAR4 2
#define __PERMEDIA_TEXTURE_FILTER_LINEAR4 3
#define __PERMEDIA_TEXTURE_FILTER_TRILINEAR8 4
/* Texture AddressMode */
#define __PERMEDIA_TEXADDRESS_WRAP_CLAMP 0
#define __PERMEDIA_TEXADDRESS_WRAP_REPEAT 1
#define __PERMEDIA_TEXADDRESS_WRAP_MIRROR 2
#define __PERMEDIA_TEXADDRESS_OPERATION_2D 0
#define __PERMEDIA_TEXADDRESS_OPERATION_3D 1
#define __PERMEDIA_TEXADDRESS_TEXMAP_1D 0
#define __PERMEDIA_TEXADDRESS_TEXMAP_2D 1
/* Texture ReadMode */
#define __PERMEDIA_TEXTUREREAD_FILTER_NEAREST 0
#define __PERMEDIA_TEXTUREREAD_FILTER_LINEAR 1
#define __PERMEDIA_TEXTUREREAD_FILTER_NEARMIPNEAREST 2
#define __PERMEDIA_TEXTUREREAD_FILTER_NEARMIPLINEAR 3
#define __PERMEDIA_TEXTUREREAD_FILTER_LINEARMIPNEAREST 4
#define __PERMEDIA_TEXTUREREAD_FILTER_LINEARMIPLINEAR 5
#define __PERMEDIA_TEXTUREREAD_WRAP_CLAMP 0
#define __PERMEDIA_TEXTUREREAD_WRAP_REPEAT 1
#define __PERMEDIA_TEXTUREREAD_WRAP_MIRROR 2
#define __PERMEDIA_TEXTUREREAD_TEXMAP_1D 0
#define __PERMEDIA_TEXTUREREAD_TEXMAP_2D 1
#define __PERMEDIA_TEXTUREREAD_FBSOURCE_NONE 0
#define __PERMEDIA_TEXTUREREAD_FBSOURCE_INDEX 1
#define __PERMEDIA_TEXTUREREAD_FBSOURCE_COORDINATE 2
/* Texture Format */
#define __PERMEDIA_TEXTUREFORMAT_LITTLE_ENDIAN 0
#define __PERMEDIA_TEXTUREFORMAT_BIG_ENDIAN 1
#define __PERMEDIA_TEXTUREFORMAT_COMPONENTS_RGB 2
#define __PERMEDIA_TEXTUREFORMAT_COMPONENTS_RGBA 3
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_TEXEL 0
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_COLOR 1
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_BITMASK 2
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_ONECOMP_LUMA 0
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_ONECOMP_ALPHA 1
#define __PERMEDIA_TEXTUREFORMAT_OUTPUT_ONECOMP_INTESITY 2
/* Texture Color Mode */
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_ALPHA 0
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_LUMA 1
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_LUMA_ALPHA 2
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_INTENSITY 3
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_RGB 4
#define __PERMEDIA_TEXCOLORMODE_BASEFORMAT_RGBA 5
#define __PERMEDIA_TEXCOLORMODE_APPLICATION_MODULATE 0
#define __PERMEDIA_TEXCOLORMODE_APPLICATION_DECAL 1
#define __PERMEDIA_TEXCOLORMODE_APPLICATION_BLEND 2
#define __PERMEDIA_TEXCOLORMODE_APPLICATION_COPY 3
/* Frame buffer read */
#define __PERMEDIA_FBDATA 0
#define __PERMEDIA_FBCOLOR 1
// Config - combined mode register for P2
#define __PERMEDIA_CONFIG_FBREAD_SRC 0x00000001
#define __PERMEDIA_CONFIG_FBREAD_DST 0x00000002
#define __PERMEDIA_CONFIG_PACKED_DATA 0x00000004
#define __PERMEDIA_CONFIG_FBWRITE 0x00000008
#define __PERMEDIA_CONFIG_COLOR_DDA 0x00000010
#define __PERMEDIA_CONFIG_LOGICOP(x) (0x00000020 | ((x & 0xF) << 6))
/* Antialias */
#define __PERMEDIA_COLOR_MODE_RGBA 0
#define __PERMEDIA_COLOR_MODE_CI 1
/* Alpha Blend */
#define __PERMEDIA_BLEND_FUNC_ZERO 0
#define __PERMEDIA_BLEND_FUNC_ONE 1
#define __PERMEDIA_BLEND_FUNC_SRC_ALPHA 4
#define __PERMEDIA_BLEND_FUNC_ONE_MINUS_SRC_ALPHA 5
#define __PERMEDIA_BLENDOP_ONE_AND_ONE 0x11
#define __PERMEDIA_BLENDOP_SRCALPHA_AND_INVSRCALPHA 0x54
#define __PERMEDIA_BLENDOP_ONE_AND_INVSRCALPHA 0x51
#define __PERMEDIA_BLENDOP_ONE_AND_ZERO 0x01
/* Dither */
#define __PERMEDIA_COLOR_FORMAT_RGBA_8888 0
#define __PERMEDIA_COLOR_FORMAT_RGBA_5555 1
#define __PERMEDIA_COLOR_FORMAT_RGBA_4444 2
#define __PERMEDIA_COLOR_FORMAT_RGBA_4444_FRONT 3
#define __PERMEDIA_COLOR_FORMAT_RGBA_4444_BACK 4
#define __PERMEDIA_COLOR_FORMAT_RGB_332_FRONT 5
#define __PERMEDIA_COLOR_FORMAT_RGB_332_BACK 6
#define __PERMEDIA_COLOR_FORMAT_RGB_121_FRONT 7
#define __PERMEDIA_COLOR_FORMAT_RGB_121_BACK 8
#define __PERMEDIA_COLOR_FORMAT_CI_8 14
#define __PERMEDIA_COLOR_FORMAT_CI_4 15
#define __PERMEDIA_COLOR_ORDER_BGR 0
#define __PERMEDIA_COLOR_ORDER_RGB 1
/* Logical Ops/Write mask */
#define K_LOGICOP_CLEAR 0
#define K_LOGICOP_AND 1
#define K_LOGICOP_AND_REVERSE 2
#define K_LOGICOP_COPY 3
#define K_LOGICOP_AND_INVERTED 4
#define K_LOGICOP_NOOP 5
#define K_LOGICOP_XOR 6
#define K_LOGICOP_OR 7
#define K_LOGICOP_NOR 8
#define K_LOGICOP_EQUIV 9
#define K_LOGICOP_INVERT 10
#define K_LOGICOP_OR_REVERSE 11
#define K_LOGICOP_COPY_INVERT 12
#define K_LOGICOP_OR_INVERT 13
#define K_LOGICOP_NAND 14
#define K_LOGICOP_SET 15
#define __PERMEDIA_ALL_WRITEMASKS_SET 0xFFFFFFFF
/* FB Write */
#define __PERMEDIA_BLOCK_WIDTH_8 0
#define __PERMEDIA_BLOCK_WIDTH_16 1
#define __PERMEDIA_BLOCK_WIDTH_32 2
/*-----------------------------------------------------*/
#define __PERMEDIA_3D_CONTEXT 1
#define __PERMEDIA_2D_CONTEXT 2
#define __PERMEDIA_ALPHA_FUNC_SCALE 255.0
#define __PERMEDIA_MIN_SUB_SCAN_LINES 4
#define __PERMEDIA_MAX_SUB_SCAN_LINES 8
/* converts diameter into number of subscanlines in radius */
#define __PERMEDIA_FASTEST_SMOOTH_POINT_RADIUS (__PERMEDIA_MIN_SUB_SCAN_LINES >> 1)
#define __PERMEDIA_NICEST_SMOOTH_POINT_RADIUS (__PERMEDIA_MAX_SUB_SCAN_LINES >> 1)
#define __PERMEDIA_POINT_TABLE_LONGS 4
#define __PERMEDIA_MAX_PPC_ENTRIES 3
#define __PERMEDIA_PPCODE0_SHIFT 0
#define __PERMEDIA_PPCODE1_SHIFT 5
#define __PERMEDIA_PPCODE2_SHIFT 6
#define __PERMEDIA_PPCODE3_SHIFT 7
#define __PERMEDIA_PPCODE4_SHIFT 8
#define __PERMEDIA_PPCODE5_SHIFT 9
#define __PERMEDIA_PPCODE6_SHIFT 10
#define __PERMEDIA_PPCODE7_SHIFT 11
// Tags
// group 0
#define __Permedia2TagStartXDom 0
#define __Permedia2TagdXDom 0x1
#define __Permedia2TagStartXSub 0x2
#define __Permedia2TagdXSub 0x3
#define __Permedia2TagStartY 0x4
#define __Permedia2TagdY 0x5
#define __Permedia2TagCount 0x6
#define __Permedia2TagRender 0x7
#define __Permedia2TagContinueNewLine 0x8
#define __Permedia2TagContinueNewDom 0x9
#define __Permedia2TagContinueNewSub 0xa
#define __Permedia2TagContinue 0xb
#define __Permedia2TagBitMaskPattern 0xd
// group 1
#define __Permedia2TagRasterizerMode 0x14
#define __Permedia2TagYLimits 0x15
#define __Permedia2TagWaitForCompletion 0x17
#define __Permedia2TagXLimits 0x19
#define __Permedia2TagRectangleOrigin 0x1a
#define __Permedia2TagRectangleSize 0x1b
//group 2
#define __Permedia2TagPackedDataLimits 0x2a
//group 3
#define __Permedia2TagScissorMode 0x30
#define __Permedia2TagScissorMinXY 0x31
#define __Permedia2TagScissorMaxXY 0x32
#define __Permedia2TagScreenSize 0x33
#define __Permedia2TagAreaStippleMode 0x34
#define __Permedia2TagWindowOrigin 0x39
// group 4
#define __Permedia2TagAreaStipplePattern0 0x40
#define __Permedia2TagAreaStipplePattern1 0x41
#define __Permedia2TagAreaStipplePattern2 0x42
#define __Permedia2TagAreaStipplePattern3 0x43
#define __Permedia2TagAreaStipplePattern4 0x44
#define __Permedia2TagAreaStipplePattern5 0x45
#define __Permedia2TagAreaStipplePattern6 0x46
#define __Permedia2TagAreaStipplePattern7 0x47
// group 7
#define __Permedia2TagTextureAddressMode 0x70
#define __Permedia2TagSStart 0x71
#define __Permedia2TagdSdx 0x72
#define __Permedia2TagdSdyDom 0x73
#define __Permedia2TagTStart 0x74
#define __Permedia2TagdTdx 0x75
#define __Permedia2TagdTdyDom 0x76
#define __Permedia2TagQStart 0x77
#define __Permedia2TagdQdx 0x78
#define __Permedia2TagdQdyDom 0x79
// group 9
#define __Permedia2TagTexelLUTIndex 0x98
#define __Permedia2TagTexelLUTData 0x99
#define __Permedia2TagTexelLUTAddress 0x9a
#define __Permedia2TagTexelLUTTransfer 0x9b
// group b
#define __Permedia2TagTextureBaseAddress 0xb0
#define __Permedia2TagTextureMapFormat 0xb1
#define __Permedia2TagTextureDataFormat 0xb2
// group c
#define __Permedia2TagTexel0 0xc0
#define __Permedia2TagTextureReadMode 0xce
#define __Permedia2TagTexelLUTMode 0xcf
// group d
#define __Permedia2TagTextureColorMode 0xd0
#define __Permedia2TagFogMode 0xd2
#define __Permedia2TagFogColor 0xd3
#define __Permedia2TagFStart 0xd4
#define __Permedia2TagdFdx 0xd5
#define __Permedia2TagdFdyDom 0xd6
#define __Permedia2TagKsStart 0xd9
#define __Permedia2TagdKsdx 0xda
#define __Permedia2TagdKsdyDom 0xdb
#define __Permedia2TagKdStart 0xdc
#define __Permedia2TagdKddx 0xdd
#define __Permedia2TagdKddyDom 0xde
// group f
#define __Permedia2TagRStart 0xf0
#define __Permedia2TagdRdx 0xf1
#define __Permedia2TagdRdyDom 0xf2
#define __Permedia2TagGStart 0xf3
#define __Permedia2TagdGdx 0xf4
#define __Permedia2TagdGdyDom 0xf5
#define __Permedia2TagBStart 0xf6
#define __Permedia2TagdBdx 0xf7
#define __Permedia2TagdBdyDom 0xf8
#define __Permedia2TagAStart 0xf9
#define __Permedia2TagColorDDAMode 0xfc
#define __Permedia2TagConstantColor 0xfd
#define __Permedia2TagColor 0xfe
// group 0x10
#define __Permedia2TagAlphaBlendMode 0x102
#define __Permedia2TagDitherMode 0x103
#define __Permedia2TagFBSoftwareWriteMask 0x104
#define __Permedia2TagLogicalOpMode 0x105
// undocumented reg:
#define __Permedia2TagFBWriteData 0x106
// group 0x11
#define __Permedia2TagLBReadMode 0x110
#define __Permedia2TagLBReadFormat 0x111
#define __Permedia2TagLBSourceOffset 0x112
#define __Permedia2TagLBData 0x113
#define __Permedia2TagLBStencil 0x115
#define __Permedia2TagLBDepth 0x116
#define __Permedia2TagLBWindowBase 0x117
#define __Permedia2TagLBWriteMode 0x118
#define __Permedia2TagLBWriteFormat 0x119
#define __Permedia2TagTextureData 0x11d
#define __Permedia2TagTextureDownloadOffset 0x11e
//group 0x13
#define __Permedia2TagWindow 0x130
#define __Permedia2TagStencilMode 0x131
#define __Permedia2TagStencilData 0x132
#define __Permedia2TagStencil 0x133
#define __Permedia2TagDepthMode 0x134
#define __Permedia2TagDepth 0x135
#define __Permedia2TagZStartU 0x136
#define __Permedia2TagZStartL 0x137
#define __Permedia2TagdZdxU 0x138
#define __Permedia2TagdZdxL 0x139
#define __Permedia2TagdZdyDomU 0x13a
#define __Permedia2TagdZdyDomL 0x13b
// group 0x15
#define __Permedia2TagFBReadMode 0x150
#define __Permedia2TagFBSourceOffset 0x151
#define __Permedia2TagFBPixelOffset 0x152
#define __Permedia2TagFBColor 0x153
#define __Permedia2TagFBData 0x154
#define __Permedia2TagFBSourceData 0x155
#define __Permedia2TagFBWindowBase 0x156
#define __Permedia2TagFBWriteMode 0x157
#define __Permedia2TagFBHardwareWriteMask 0x158
#define __Permedia2TagFBBlockColor 0x159
#define __Permedia2TagFBReadPixel 0x15a
// undocumented register, but used (see packed blt)
#define __Permedia2TagFBWriteConfig 0x15d
// group 0x18
#define __Permedia2TagFilterMode 0x180
#define __Permedia2TagStatisticMode 0x181
#define __Permedia2TagMinRegion 0x182
#define __Permedia2TagMaxRegion 0x183
#define __Permedia2TagResetPickResult 0x184
#define __Permedia2TagMinHitRegion 0x185
#define __Permedia2TagMaxHitRegion 0x186
#define __Permedia2TagPickResult 0x187
#define __Permedia2TagSync 0x188
#define __Permedia2TagFBBlockColorU 0x18d
#define __Permedia2TagFBBlockColorL 0x18e
#define __Permedia2TagSuspendUntilFrameBlank 0x18f
// group 0x1b
#define __Permedia2TagFBSourceBase 0x1b0
#define __Permedia2TagFBSourceDelta 0x1b1
#define __Permedia2TagConfig 0x1b2
// group 0x1d
#define __Permedia2TagTexelLUT0 0x1d0
#define __Permedia2TagTexelLUT1 0x1d1
#define __Permedia2TagTexelLUT2 0x1d2
#define __Permedia2TagTexelLUT3 0x1d3
#define __Permedia2TagTexelLUT4 0x1d4
#define __Permedia2TagTexelLUT5 0x1d5
#define __Permedia2TagTexelLUT6 0x1d6
#define __Permedia2TagTexelLUT7 0x1d7
#define __Permedia2TagTexelLUT8 0x1d8
#define __Permedia2TagTexelLUT9 0x1d9
#define __Permedia2TagTexelLUT10 0x1da
#define __Permedia2TagTexelLUT11 0x1db
#define __Permedia2TagTexelLUT12 0x1dc
#define __Permedia2TagTexelLUT13 0x1dd
#define __Permedia2TagTexelLUT14 0x1de
#define __Permedia2TagTexelLUT15 0x1df
// group 0x1e
#define __Permedia2TagYUVMode 0x1e0
#define __Permedia2TagChromaUpperBound 0x1e1
#define __Permedia2TagChromaLowerBound 0x1e2
#define __Permedia2TagAlphaMapUpperBound 0x1e3
#define __Permedia2TagAlphaMapLowerBound 0x1e4
#define __Permedia2TagTextureID 0x1ee
#define __Permedia2TagTexelLUTID 0x1ef
// group 0x20..
#define __Permedia2TagV0FixedS 0x200
#define __Permedia2TagV0FixedT 0x201
#define __Permedia2TagV0FixedQ 0x202
#define __Permedia2TagV0FixedKs 0x203
#define __Permedia2TagV0FixedKd 0x204
#define __Permedia2TagV0FixedR 0x205
#define __Permedia2TagV0FixedG 0x206
#define __Permedia2TagV0FixedB 0x207
#define __Permedia2TagV0FixedA 0x208
#define __Permedia2TagV0FixedF 0x209
#define __Permedia2TagV0FixedX 0x20a
#define __Permedia2TagV0FixedY 0x20b
#define __Permedia2TagV0FixedZ 0x20c
#define __Permedia2TagV0FixedW 0x20d
#define __Permedia2TagV1FixedS 0x210
#define __Permedia2TagV1FixedT 0x211
#define __Permedia2TagV1FixedQ 0x212
#define __Permedia2TagV1FixedKs 0x213
#define __Permedia2TagV1FixedKd 0x214
#define __Permedia2TagV1FixedR 0x215
#define __Permedia2TagV1FixedG 0x216
#define __Permedia2TagV1FixedB 0x217
#define __Permedia2TagV1FixedA 0x218
#define __Permedia2TagV1FixedF 0x219
#define __Permedia2TagV1FixedX 0x21a
#define __Permedia2TagV1FixedY 0x21b
#define __Permedia2TagV1FixedZ 0x21c
#define __Permedia2TagV1FixedW 0x21d
#define __Permedia2TagV2FixedS 0x220
#define __Permedia2TagV2FixedT 0x221
#define __Permedia2TagV2FixedQ 0x222
#define __Permedia2TagV2FixedKs 0x223
#define __Permedia2TagV2FixedKd 0x224
#define __Permedia2TagV2FixedR 0x225
#define __Permedia2TagV2FixedG 0x226
#define __Permedia2TagV2FixedB 0x227
#define __Permedia2TagV2FixedA 0x228
#define __Permedia2TagV2FixedF 0x229
#define __Permedia2TagV2FixedX 0x22a
#define __Permedia2TagV2FixedY 0x22b
#define __Permedia2TagV2FixedZ 0x22c
#define __Permedia2TagV2FixedW 0x22d
#define __Permedia2TagV0FloatS 0x230
#define __Permedia2TagV0FloatT 0x231
#define __Permedia2TagV0FloatQ 0x232
#define __Permedia2TagV0FloatKs 0x233
#define __Permedia2TagV0FloatKd 0x234
#define __Permedia2TagV0FloatR 0x235
#define __Permedia2TagV0FloatG 0x236
#define __Permedia2TagV0FloatB 0x237
#define __Permedia2TagV0FloatA 0x238
#define __Permedia2TagV0FloatF 0x239
#define __Permedia2TagV0FloatX 0x23a
#define __Permedia2TagV0FloatY 0x23b
#define __Permedia2TagV0FloatZ 0x23c
#define __Permedia2TagV0FloatW 0x23d
#define __Permedia2TagV1FloatS 0x240
#define __Permedia2TagV1FloatT 0x241
#define __Permedia2TagV1FloatQ 0x242
#define __Permedia2TagV1FloatKs 0x243
#define __Permedia2TagV1FloatKd 0x244
#define __Permedia2TagV1FloatR 0x245
#define __Permedia2TagV1FloatG 0x246
#define __Permedia2TagV1FloatB 0x247
#define __Permedia2TagV1FloatA 0x248
#define __Permedia2TagV1FloatF 0x249
#define __Permedia2TagV1FloatX 0x24a
#define __Permedia2TagV1FloatY 0x24b
#define __Permedia2TagV1FloatZ 0x24c
#define __Permedia2TagV1FloatW 0x24d
#define __Permedia2TagV2FloatS 0x250
#define __Permedia2TagV2FloatT 0x251
#define __Permedia2TagV2FloatQ 0x252
#define __Permedia2TagV2FloatKs 0x253
#define __Permedia2TagV2FloatKd 0x254
#define __Permedia2TagV2FloatR 0x255
#define __Permedia2TagV2FloatG 0x256
#define __Permedia2TagV2FloatB 0x257
#define __Permedia2TagV2FloatA 0x258
#define __Permedia2TagV2FloatF 0x259
#define __Permedia2TagV2FloatX 0x25a
#define __Permedia2TagV2FloatY 0x25b
#define __Permedia2TagV2FloatZ 0x25c
#define __Permedia2TagV2FloatW 0x25d
#define __Permedia2TagDeltaMode 0x260
#define __Permedia2TagDrawTriangle 0x261
#define __Permedia2TagRepeatTriangle 0x262
#define __Permedia2TagDrawLine01 0x263
#define __Permedia2TagDrawLine10 0x264
#define __Permedia2TagRepeatLine 0x265
// special define???
// #define __Permedia2TagBroadcastMask 0x26f
// #define __MaximumPermediaTagValue __Permedia2TagBroadcastMask
#define __Permedia2TagAreaStipplePattern(i) (0x040+(i))
typedef long __Permedia2Tag ;
/*-----------------------------------------------------*/
#define __PERMEDIA_MAX_YSAMPLES 8
#define __PERMEDIA_SAMPLES 4
#if __PERMEDIA_SAMPLES == 8
#define __PERMEDIA_SUBSAMPLES 64
#define __PERMEDIA_XSUBSAMPLES 8
#define __PERMEDIA_YSUBSAMPLES 8
#define __PERMEDIA_COLOR_SCALE 4
#define __PERMEDIA_SAMPLENORM 0.015625
#define __PERMEDIA_SPANNORM 0.125
#define __PERMEDIA_XSUBPIXSCALE 8
#define __PERMEDIA_XSUBPIXBITS 3
#define __PERMEDIA_XSUBPIXSHIFT 3
#define __PERMEDIA_XSUBPIXMASK 7
#define __PERMEDIA_XFRACSHIFT 0
#define __PERMEDIA_YSUBPIXSCALE __PERMEDIA_XSUBPIXSCALE
#define __PERMEDIA_YSUBPIXBITS __PERMEDIA_XSUBPIXBITS
#define __PERMEDIA_YSUBPIXSHIFT __PERMEDIA_XSUBPIXSHIFT
#define __PERMEDIA_YSUBPIXMASK __PERMEDIA_XSUBPIXMASK
#elif __PERMEDIA_SAMPLES == 4
#define __PERMEDIA_SUBSAMPLES 16
#define __PERMEDIA_XSUBSAMPLES 4
#define __PERMEDIA_YSUBSAMPLES 4
#define __PERMEDIA_COLOR_SCALE 16
#define __PERMEDIA_SAMPLENORM 0.0625
#define __PERMEDIA_SPANNORM 0.25
#define __PERMEDIA_XSUBPIXSCALE 8
#define __PERMEDIA_XSUBPIXBITS 3
#define __PERMEDIA_XSUBPIXSHIFT 3
#define __PERMEDIA_XSUBPIXMASK 7
#define __PERMEDIA_XFRACSHIFT 1
#define __PERMEDIA_YSUBPIXSCALE 4
#define __PERMEDIA_YSUBPIXBITS 2
#define __PERMEDIA_YSUBPIXSHIFT 2
#define __PERMEDIA_YSUBPIXMASK 3
#elif __PERMEDIA_SAMPLES == 2
"NOT SUPPORTED YET"
#else /* __PERMEDIA_SAMPLES == 1 Alias Case */
#define __PERMEDIA_SUBSAMPLES 1
#define __PERMEDIA_XSUBSAMPLES 1
#define __PERMEDIA_YSUBSAMPLES 1
#define __PERMEDIA_COLOR_SCALE 255
#define __PERMEDIA_SAMPLENORM 1
#define __PERMEDIA_SPANNORM 1
#define __PERMEDIA_XSUBPIXSCALE 8
#define __PERMEDIA_XSUBPIXBITS 3
#define __PERMEDIA_XSUBPIXSHIFT 3
#define __PERMEDIA_XSUBPIXMASK 7
#define __PERMEDIA_XFRACSHIFT 3
#define __PERMEDIA_YSUBPIXSCALE 1
#define __PERMEDIA_YSUBPIXBITS 0
#define __PERMEDIA_YSUBPIXSHIFT 0
#define __PERMEDIA_YSUBPIXMASK ~0
#endif
/*-----------------------------------------------------*/
#define __PERMEDIA_POS_Z_FIXED_PT_SCALE 2147483647.0 /* 2**31 - 1*/
#define __PERMEDIA_NEG_Z_FIXED_PT_SCALE 1073741824.0 /* 2**30 */
#define __PERMEDIA_POS_Z_FIXED_PT_SCALE_RECIP (1.0/2147483647.0)
#define __PERMEDIA_NEG_Z_FIXED_PT_SCALE_RECIP (1.0/1073741824.0)
#define RGB_MODE 1
#define COLOR_MODE 1 /* 0=BGR, 1=RGB */
#define DITHER_XOFFSET 0
#define DITHER_YOFFSET 0
#define DITHER_ENABLE __PERMEDIA_ENABLE
#define MS_BIT_MASK 0x80000000l
// Shifts to enable units
// DepthMode
#define __PERMEDIA_DEPTHMODE_ENABLE 0
#define __PERMEDIA_DEPTHMODE_WRITEMASK 1
#define __PERMEDIA_DEPTHMODE_SOURCEDEPTH 2
#define __PERMEDIA_DEPTHMODE_COMPARISON 4
/* sync_mode definitions for the SuspendUntilFramBlank tag */
#define EXT_VIDEO_WAITFOR_FB 0
#define EXT_VIDEO_IMMEDIATE 1
#define VTG_FRAMEROW_WAITFOR_FB 2
#define VTG_FRAMEROW_IMMEDIATE 3
typedef struct PartialProductCode
{
ULONG cxDelta;
ULONG ulPartialProducts;
}
PPCODE;
extern const PPCODE aPartialProducts[];
#define GET_PPCODE(cxTextureWidth, cxTextureDelta, pp) \
{ \
int i = (cxTextureWidth + 31) / 32; \
cxTextureDelta = aPartialProducts[i].cxDelta; \
pp = aPartialProducts[i].ulPartialProducts; \
}
// Color component order
#define INV_COLOR_MODE 0 /* 0=RGB, 1=BGR */
#endif /* _P2DEF_H */