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.

248 lines
12 KiB

  1. dnl ---------------------------------------------------------------------------
  2. dnl
  3. dnl This file contains bead structure creating macros and produces
  4. dnl the structures themselves.
  5. dnl
  6. dnl Copyright (C) Microsoft Corporation, 1997.
  7. dnl
  8. dnl ---------------------------------------------------------------------------
  9. dnl
  10. include(`m4hdr.mh')dnl
  11. dnl
  12. dnl
  13. define(`d_RenderSpansBeads', `d_RepStr(`$1', `$2', RenderSpansAny)')dnl
  14. dnl
  15. define(`d_BeginBeads', `d_RepStr(`$1', `$2', LoopAny)')dnl
  16. dnl
  17. define(`d_TestBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', Test_AAAA_BBBB_CCCC_DDDD_EEEE)',
  18. AAAA, 16, 32)',
  19. BBBB, NoZWrite, ZWrite)',
  20. CCCC, NoZDeferred, ZDeferred)',
  21. DDDD, ifelse(eval(d_index(EEEE, `Stencil') == 0), `1',
  22. `ZAll, ZAll, ZAll, ZAll',
  23. `ZNeverAlways, ZLessGreaterEqual, ZEqualNotEqual, ZGreaterLessEqual'))',
  24. EEEE, NoStencil, Stencil)')dnl
  25. dnl
  26. define(`d_TestFailBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', TestFail_AAAA_BBBB_CCCC)',
  27. AAAA, Flat, Gouraud)',
  28. BBBB, NoTex, Tex1, PerspTex1, Tex2, PerspTex2)',
  29. CCCC, NoSpecularFog, SpecularFog)')dnl
  30. dnl
  31. define(`d_Tex1AddrBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', Tex1Addr_AAAA_BBBB_CCCC_DDDD)',
  32. AAAA, TexAddrWrapMirror, TexAddrAll)',
  33. BBBB, NoPersp, Persp)',
  34. CCCC, ifelse(DDDD, NoLOD,
  35. `Point, Bilinear, Bilinear',
  36. `Point, Bilinear, MaybeBilinear'))',
  37. DDDD, NoLOD, LOD)')dnl
  38. dnl
  39. define(`d_Tex1AddrMipBeads', `d_RepStr(`$1', `$2', Tex1Addr_Filt_All_Mip)')dnl
  40. dnl
  41. define(`d_TexReadBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', TexRead_AAAA_BBBB_CCCC)',
  42. AAAA, B8G8R8, B8G8R8A8, B5G6R5, B5G5R5, Palette4, Palette8,
  43. B5G5R5A1, B4G4R4, B4G4R4A4, L8, L8A8, Palette4A, Palette8A)',
  44. BBBB, NoBorder, Border)',
  45. CCCC, NoColorKey, ColorKey)')dnl
  46. dnl
  47. define(`d_Tex2AddrBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', Tex2Addr_AAAA_BBBB_CCCC_NoLOD)',
  48. AAAA, TexAddrWrapMirror, TexAddrAll)',
  49. BBBB, NoPersp, Persp)',
  50. CCCC, Point, Bilinear, Bilinear)')dnl
  51. dnl
  52. define(`d_TexBlendBeads', `d_RepStr(`d_RepStr(`$1', `$2', TexBlend_AAAA)',
  53. AAAA, Tex1_None, Tex1_Decal, Tex1_Modulate, Tex1_ModulateAlphaOVR, Tex1_Gen, TexM_Gen)')dnl
  54. dnl
  55. define(`d_TexBlendGetColorBeads', `d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', TexBlend_Get_Color_AAAA_BBBB)',
  56. AAAA, Texture, InvTexture, TextureAlpha, InvTextureAlpha)',
  57. BBBB, Diffuse, Input, Factor, InvDiffuse, InvInput, InvFactor,
  58. DiffuseAlpha, InputAlpha, FactorAlpha, InvDiffuseAlpha, InvInputAlpha, InvFactorAlpha)')dnl
  59. dnl
  60. define(`d_TexBlendGetAlphaBeads', `d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', TexBlend_Get_Alpha_AAAA_BBBB)',
  61. AAAA, TextureAlpha, InvTextureAlpha)',
  62. BBBB, DiffuseAlpha, InputAlpha, FactorAlpha, InvDiffuseAlpha, InvInputAlpha, InvFactorAlpha)')dnl
  63. dnl
  64. define(`d_TexBlendOpColorBeads', `d_RepStr(`d_RepStr(`$1', `$2', TexBlend_Op_Color_AAAA)',
  65. AAAA, None, CopyArg1, CopyArg2, Modulate, Modulate2, Modulate4, Add, AddSigned,
  66. BlendDiffuseAlpha, BlendTextureAlpha, BlendFactorAlpha, BlendTextureAlphaPM)')dnl
  67. dnl
  68. define(`d_TexBlendOpAlphaBeads', `d_RepStr(`d_RepStr(`$1', `$2', TexBlend_Op_Alpha_AAAA)',
  69. AAAA, None, CopyArg1, CopyArg2, Modulate, Modulate2, Modulate4, Add, AddSigned,
  70. BlendDiffuseAlpha, BlendTextureAlpha, BlendFactorAlpha, BlendTextureAlphaPM)')dnl
  71. dnl
  72. define(`d_ColorGenBeads', `d_RepStr(`d_RepStr(`$1', `$2', AAAA)',
  73. AAAA, NULL, ColorGen_Gouraud_NoSpecular_NoFog_NoMonochrome,
  74. ColorGen_Flat_Specular_NoFog_NoMonochrome, ColorGen_Gouraud_Specular_NoFog_NoMonochrome,
  75. ColorGen_Flat_NoSpecular_VertexFog_NoMonochrome, ColorGen_Gouraud_NoSpecular_VertexFog_NoMonochrome,
  76. ColorGen_Flat_Specular_VertexFog_NoMonochrome, ColorGen_Gouraud_Specular_VertexFog_NoMonochrome,
  77. ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome, ColorGen_All_Monochrome)')dnl
  78. dnl
  79. define(`d_AlphaTestBeads', `d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`d_RepStr(`$1', `$2', AlphaTest_AAAA_BBBB_CCCC_DDDD_EEEE)',
  80. AAAA, NoAlpha, Alpha)',
  81. BBBB, NoAlphaDither, AlphaDither)',
  82. CCCC, NoZWrite, ZWrite)',
  83. DDDD, 16, 32)',
  84. EEEE, NoStencil, Stencil)')dnl
  85. dnl
  86. define(`d_ColorBlendBeads', `d_RepStr(`d_RepStr(`$1', `$2', AAAA)',
  87. AAAA, NULL, ColorBlend_AllBlend_SrcCopy,
  88. ColorBlend_SrcOne_DestZero_AllROP, ColorBlend_AllBlend_AllROP)')dnl
  89. dnl
  90. define(`d_SrcBlendBeads', `d_RepStr(`d_RepStr(`$1', `$2', SrcBlend_AAAA)',
  91. AAAA, Zero, One, SrcColor, InvSrcColor, SrcAlpha, InvSrcAlpha,
  92. DestAlpha, InvDestAlpha, DestColor, InvDestColor, SrcAlphaSat)')dnl
  93. dnl
  94. define(`d_DestBlendBeads', `d_RepStr(`d_RepStr(`$1', `$2', DestBlend_AAAA)',
  95. AAAA, Zero, One, SrcColor, InvSrcColor, SrcAlpha, InvSrcAlpha,
  96. DestAlpha, InvDestAlpha, DestColor, InvDestColor, SrcAlphaSat)')dnl
  97. dnl
  98. define(`d_BufReadBeads', `d_RepStr(`d_RepStr(`$1', `$2', BufRead_AAAA)',
  99. AAAA, B8G8R8X8, B8G8R8A8, B5G6R5, B5G5R5, B5G5R5A1, B8G8R8, Palette8)')dnl
  100. dnl
  101. define(`d_BufWriteBeads', `d_RepStr(`d_RepStr(`$1', `$2', BufWrite_AAAA)',
  102. AAAA, B8G8R8X8_NoDither, B8G8R8A8_NoDither, B5G6R5_NoDither, B5G5R5_NoDither, B5G5R5A1_NoDither, B8G8R8_NoDither, Palette8_NoDither,
  103. B8G8R8X8_NoDither, B8G8R8A8_NoDither, B5G6R5_Dither, B5G5R5_Dither, B5G5R5A1_Dither, B8G8R8_NoDither, Palette8_NoDither)')dnl
  104. dnl
  105. define(`d_PixelEndBeads', `d_RepStr(`$1', `$2', PixelEndAny)')dnl
  106. dnl
  107. define(`d_SpanEndBeads', `d_RepStr(`$1', `$2', SpanEndAny)')dnl
  108. dnl
  109. dnl
  110. ifelse(`d_BeadMacrosOnly', d_BeadMacrosOnly, `
  111. // indices used to access elements of Test bead table
  112. #define ZFORMAT_NUM 2
  113. #define ZWRITE_NUM 2
  114. #define ZFUNC_NUM 4
  115. #define ZDEFERRED_NUM 2
  116. #define STENCIL_NUM 2
  117. #define ALPHATEST_NUM 2
  118. // indices used to access elements of TestFail bead table
  119. #define SHADEMODE_NUM 2
  120. #define TEXTURE_NUM 5
  121. #define SPECULARFOG_NUM 2
  122. // TexAddr
  123. #define TEXTUREADDRESS_NUM 2
  124. #define TEXTUREPERSPECTIVE_NUM 2
  125. #define TEXTUREFILTER_NUM 3
  126. #define TEXTURELOD_NUM 2
  127. // TexRead
  128. #define TEXTUREFORMAT_NUM 13
  129. #define TEXTUREBORDER_NUM 2
  130. #define COLORKEY_NUM 2
  131. // TexBlend
  132. #define TEXTUREBLEND_NUM 6
  133. #define TEXTUREBLEND_GETALPHA_ARG1_NUM 2
  134. #define TEXTUREBLEND_GETALPHA_ARG2_NUM 6
  135. #define TEXTUREBLEND_OPALPHA_NUM 12
  136. #define TEXTUREBLEND_GETCOLOR_ARG1_NUM 4
  137. #define TEXTUREBLEND_GETCOLOR_ARG2_NUM 12
  138. #define TEXTUREBLEND_OPCOLOR_NUM 12
  139. // ColorGen
  140. #define SPECULAR_NUM 2
  141. #define VERTEXFOG_NUM 2
  142. #define MONO_NUM 2
  143. // SrcBlend
  144. #define SRCBLEND_NUM 11
  145. // DestBlend
  146. #define DESTBLEND_NUM 11
  147. // ColorBlend
  148. #define BLEND_NUM 2
  149. #define BLEND_SRCONEDESTZERO 0
  150. #define BLEND_ALLBLEND 1
  151. #define ROP_NUM 2
  152. #define ROP_SRCCOPY 0
  153. #define ROP_ALLROP 1
  154. // indices used to access elements of Write bead table
  155. #define TARGETPIXELFORMAT_NUM 7
  156. #define DITHERING_NUM 2
  157. dnl
  158. // structures for bead organization
  159. dnl
  160. define(`d_MakeBeadStruct', `
  161. typedef struct tag`'d_UpCase(`$1')`'BEADS
  162. {
  163. $3 pfn`'$1`'$2;
  164. } d_UpCase(`$1')`'BEADS, *P`'d_UpCase(`$1')`'BEADS;')dnl
  165. dnl
  166. d_MakeBeadStruct(RenderSpans, [1],
  167. PFNRENDERSPANS)
  168. d_MakeBeadStruct(Begin, [1],
  169. PFNSPANLAYER)
  170. d_MakeBeadStruct(Test, [STENCIL_NUM][ZFUNC_NUM][ZDEFERRED_NUM][ZWRITE_NUM][ZFORMAT_NUM],
  171. PFNSPANLAYER)
  172. d_MakeBeadStruct(TestFail, [SPECULARFOG_NUM][TEXTURE_NUM][SHADEMODE_NUM],
  173. PFNSPANLAYER)
  174. d_MakeBeadStruct(Tex1Addr, [TEXTURELOD_NUM][TEXTUREFILTER_NUM][TEXTUREPERSPECTIVE_NUM][TEXTUREADDRESS_NUM],
  175. PFNSPANLAYER)
  176. d_MakeBeadStruct(Tex1AddrMip, [1],
  177. PFNSPANLAYER)
  178. d_MakeBeadStruct(TexRead, [COLORKEY_NUM][TEXTUREBORDER_NUM][TEXTUREFORMAT_NUM],
  179. PFNTEXREAD)
  180. d_MakeBeadStruct(Tex2Addr, [TEXTUREFILTER_NUM][TEXTUREPERSPECTIVE_NUM][TEXTUREADDRESS_NUM],
  181. PFNSPANLAYER)
  182. d_MakeBeadStruct(TexBlend, [TEXTUREBLEND_NUM],
  183. PFNSPANLAYER)
  184. d_MakeBeadStruct(TexBlendGetColor, [TEXTUREBLEND_GETCOLOR_ARG2_NUM][TEXTUREBLEND_GETCOLOR_ARG1_NUM],
  185. PFNTEXBLENDGET)
  186. d_MakeBeadStruct(TexBlendGetAlpha, [TEXTUREBLEND_GETALPHA_ARG2_NUM][TEXTUREBLEND_GETALPHA_ARG1_NUM],
  187. PFNTEXBLENDGET)
  188. d_MakeBeadStruct(TexBlendOpColor, [TEXTUREBLEND_OPCOLOR_NUM],
  189. PFNTEXBLENDOP)
  190. d_MakeBeadStruct(TexBlendOpAlpha, [TEXTUREBLEND_OPALPHA_NUM],
  191. PFNTEXBLENDOP)
  192. d_MakeBeadStruct(ColorGen, [MONO_NUM][VERTEXFOG_NUM][SPECULAR_NUM][SHADEMODE_NUM],
  193. PFNSPANLAYER)
  194. d_MakeBeadStruct(AlphaTest, [STENCIL_NUM][ZFORMAT_NUM][ZWRITE_NUM][COLORKEY_NUM][ALPHATEST_NUM],
  195. PFNSPANLAYER)
  196. d_MakeBeadStruct(ColorBlend, [ROP_NUM][BLEND_NUM],
  197. PFNSPANLAYER)
  198. d_MakeBeadStruct(SrcBlend, [SRCBLEND_NUM],
  199. PFNBLENDFUNC)
  200. d_MakeBeadStruct(DestBlend, [DESTBLEND_NUM],
  201. PFNBLENDFUNC)
  202. d_MakeBeadStruct(BufRead, [TARGETPIXELFORMAT_NUM],
  203. PFNBUFREAD)
  204. d_MakeBeadStruct(BufWrite, [DITHERING_NUM][TARGETPIXELFORMAT_NUM],
  205. PFNSPANLAYER)
  206. d_MakeBeadStruct(PixelEnd, [1],
  207. PFNSPANLAYER)
  208. d_MakeBeadStruct(SpanEnd, [1],
  209. PFNSPANLAYER)
  210. // Root structure needed for state validation. Contains pointers to function pointer
  211. // tables
  212. typedef struct tagBEADTABLE
  213. {
  214. PRENDERSPANSBEADS pRenderSpansBeads;
  215. PBEGINBEADS pBeginBeads;
  216. PTESTBEADS pTestBeads;
  217. PTESTFAILBEADS pTestFailBeads;
  218. PTEX1ADDRBEADS pTex1AddrBeads;
  219. PTEX1ADDRMIPBEADS pTex1AddrMipBeads;
  220. PTEXREADBEADS pTexReadBeads;
  221. PTEX2ADDRBEADS pTex2AddrBeads;
  222. PTEXBLENDBEADS pTexBlendBeads;
  223. PTEXBLENDGETCOLORBEADS pTexBlendGetColorBeads;
  224. PTEXBLENDGETALPHABEADS pTexBlendGetAlphaBeads;
  225. PTEXBLENDOPCOLORBEADS pTexBlendOpColorBeads;
  226. PTEXBLENDOPALPHABEADS pTexBlendOpAlphaBeads;
  227. PCOLORGENBEADS pColorGenBeads;
  228. PALPHATESTBEADS pAlphaTestBeads;
  229. PCOLORBLENDBEADS pColorBlendBeads;
  230. PSRCBLENDBEADS pSrcBlendBeads;
  231. PDESTBLENDBEADS pDestBlendBeads;
  232. PBUFREADBEADS pBufReadBeads;
  233. PBUFWRITEBEADS pBufWriteBeads;
  234. PPIXELENDBEADS pPixelEndBeads;
  235. PSPANENDBEADS pSpanEndBeads;
  236. } BEADTABLE, *PBEADTABLE;
  237. ')