1 /*
   2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #include <stdlib.h>
  27 #include <string.h>
  28 #include <sys/utsname.h>
  29 #include "GraphicsPrimitiveMgr.h"
  30 #include "java2d_Mlib.h"
  31 
  32 typedef struct {
  33     AnyFunc  *func_c;
  34     AnyFunc  *func_vis;
  35 } AnyFunc_pair;
  36 
  37 #define DEF_FUNC(x)    \
  38     void x();          \
  39     void ADD_SUFF(x)();
  40 
  41 #define ADD_FUNC(x)    \
  42     { & x, & ADD_SUFF(x) }
  43 
  44 /***************************************************************/
  45 
  46 DEF_FUNC(AnyByteDrawGlyphList)
  47 DEF_FUNC(AnyByteDrawGlyphListXor)
  48 DEF_FUNC(AnyByteIsomorphicCopy)
  49 DEF_FUNC(AnyByteIsomorphicScaleCopy)
  50 DEF_FUNC(AnyByteIsomorphicXorCopy)
  51 DEF_FUNC(AnyByteSetLine)
  52 DEF_FUNC(AnyByteSetRect)
  53 DEF_FUNC(AnyByteSetSpans)
  54 DEF_FUNC(AnyByteSetParallelogram)
  55 DEF_FUNC(AnyByteXorLine)
  56 DEF_FUNC(AnyByteXorRect)
  57 DEF_FUNC(AnyByteXorSpans)
  58 DEF_FUNC(AnyShortDrawGlyphList)
  59 DEF_FUNC(AnyShortDrawGlyphListXor)
  60 DEF_FUNC(AnyShortIsomorphicCopy)
  61 DEF_FUNC(AnyShortIsomorphicScaleCopy)
  62 DEF_FUNC(AnyShortIsomorphicXorCopy)
  63 DEF_FUNC(AnyShortSetLine)
  64 DEF_FUNC(AnyShortSetRect)
  65 DEF_FUNC(AnyShortSetSpans)
  66 DEF_FUNC(AnyShortSetParallelogram)
  67 DEF_FUNC(AnyShortXorLine)
  68 DEF_FUNC(AnyShortXorRect)
  69 DEF_FUNC(AnyShortXorSpans)
  70 DEF_FUNC(Any3ByteDrawGlyphList)
  71 DEF_FUNC(Any3ByteDrawGlyphListXor)
  72 DEF_FUNC(Any3ByteIsomorphicCopy)
  73 DEF_FUNC(Any3ByteIsomorphicScaleCopy)
  74 DEF_FUNC(Any3ByteIsomorphicXorCopy)
  75 DEF_FUNC(Any3ByteSetLine)
  76 DEF_FUNC(Any3ByteSetRect)
  77 DEF_FUNC(Any3ByteSetSpans)
  78 DEF_FUNC(Any3ByteSetParallelogram)
  79 DEF_FUNC(Any3ByteXorLine)
  80 DEF_FUNC(Any3ByteXorRect)
  81 DEF_FUNC(Any3ByteXorSpans)
  82 DEF_FUNC(Any4ByteDrawGlyphList)
  83 DEF_FUNC(Any4ByteDrawGlyphListXor)
  84 DEF_FUNC(Any4ByteIsomorphicCopy)
  85 DEF_FUNC(Any4ByteIsomorphicScaleCopy)
  86 DEF_FUNC(Any4ByteIsomorphicXorCopy)
  87 DEF_FUNC(Any4ByteSetLine)
  88 DEF_FUNC(Any4ByteSetRect)
  89 DEF_FUNC(Any4ByteSetSpans)
  90 DEF_FUNC(Any4ByteSetParallelogram)
  91 DEF_FUNC(Any4ByteXorLine)
  92 DEF_FUNC(Any4ByteXorRect)
  93 DEF_FUNC(Any4ByteXorSpans)
  94 DEF_FUNC(AnyIntDrawGlyphList)
  95 DEF_FUNC(AnyIntDrawGlyphListXor)
  96 DEF_FUNC(AnyIntIsomorphicCopy)
  97 DEF_FUNC(AnyIntIsomorphicScaleCopy)
  98 DEF_FUNC(AnyIntIsomorphicXorCopy)
  99 DEF_FUNC(AnyIntSetLine)
 100 DEF_FUNC(AnyIntSetRect)
 101 DEF_FUNC(AnyIntSetSpans)
 102 DEF_FUNC(AnyIntSetParallelogram)
 103 DEF_FUNC(AnyIntXorLine)
 104 DEF_FUNC(AnyIntXorRect)
 105 DEF_FUNC(AnyIntXorSpans)
 106 DEF_FUNC(ByteGrayAlphaMaskFill)
 107 DEF_FUNC(ByteGrayDrawGlyphListAA)
 108 DEF_FUNC(ByteGraySrcMaskFill)
 109 DEF_FUNC(ByteGraySrcOverMaskFill)
 110 DEF_FUNC(ByteGrayToIntArgbConvert)
 111 DEF_FUNC(ByteGrayToIntArgbScaleConvert)
 112 DEF_FUNC(ByteIndexedBmToByteGrayScaleXparOver)
 113 DEF_FUNC(ByteIndexedBmToByteGrayXparBgCopy)
 114 DEF_FUNC(ByteIndexedBmToByteGrayXparOver)
 115 DEF_FUNC(ByteIndexedToByteGrayConvert)
 116 DEF_FUNC(ByteIndexedToByteGrayScaleConvert)
 117 DEF_FUNC(Index12GrayToByteGrayConvert)
 118 DEF_FUNC(Index12GrayToByteGrayScaleConvert)
 119 DEF_FUNC(Index8GrayToByteGrayConvert)
 120 DEF_FUNC(Index8GrayToByteGrayScaleConvert)
 121 DEF_FUNC(IntArgbBmToByteGrayScaleXparOver)
 122 DEF_FUNC(IntArgbBmToByteGrayXparBgCopy)
 123 DEF_FUNC(IntArgbBmToByteGrayXparOver)
 124 DEF_FUNC(IntArgbToByteGrayAlphaMaskBlit)
 125 DEF_FUNC(IntArgbToByteGrayConvert)
 126 DEF_FUNC(IntArgbToByteGrayScaleConvert)
 127 DEF_FUNC(IntArgbToByteGraySrcOverMaskBlit)
 128 DEF_FUNC(IntArgbToByteGrayXorBlit)
 129 DEF_FUNC(IntRgbToByteGrayAlphaMaskBlit)
 130 DEF_FUNC(ThreeByteBgrToByteGrayConvert)
 131 DEF_FUNC(ThreeByteBgrToByteGrayScaleConvert)
 132 DEF_FUNC(UshortGrayToByteGrayConvert)
 133 DEF_FUNC(UshortGrayToByteGrayScaleConvert)
 134 DEF_FUNC(ByteGrayToUshortGrayConvert)
 135 DEF_FUNC(ByteGrayToUshortGrayScaleConvert)
 136 DEF_FUNC(ByteIndexedBmToUshortGrayScaleXparOver)
 137 DEF_FUNC(ByteIndexedBmToUshortGrayXparBgCopy)
 138 DEF_FUNC(ByteIndexedBmToUshortGrayXparOver)
 139 DEF_FUNC(ByteIndexedToUshortGrayConvert)
 140 DEF_FUNC(ByteIndexedToUshortGrayScaleConvert)
 141 DEF_FUNC(IntArgbBmToUshortGrayScaleXparOver)
 142 DEF_FUNC(IntArgbToUshortGrayAlphaMaskBlit)
 143 DEF_FUNC(IntArgbToUshortGrayConvert)
 144 DEF_FUNC(IntArgbToUshortGrayScaleConvert)
 145 DEF_FUNC(IntArgbToUshortGraySrcOverMaskBlit)
 146 DEF_FUNC(IntArgbToUshortGrayXorBlit)
 147 DEF_FUNC(IntRgbToUshortGrayAlphaMaskBlit)
 148 DEF_FUNC(ThreeByteBgrToUshortGrayConvert)
 149 DEF_FUNC(ThreeByteBgrToUshortGrayScaleConvert)
 150 DEF_FUNC(UshortGrayAlphaMaskFill)
 151 DEF_FUNC(UshortGrayDrawGlyphListAA)
 152 DEF_FUNC(UshortGraySrcMaskFill)
 153 DEF_FUNC(UshortGraySrcOverMaskFill)
 154 DEF_FUNC(UshortGrayToIntArgbConvert)
 155 DEF_FUNC(UshortGrayToIntArgbScaleConvert)
 156 DEF_FUNC(ByteGrayToByteIndexedConvert)
 157 DEF_FUNC(ByteGrayToByteIndexedScaleConvert)
 158 DEF_FUNC(ByteIndexedAlphaMaskFill)
 159 DEF_FUNC(ByteIndexedBmToByteIndexedScaleXparOver)
 160 DEF_FUNC(ByteIndexedBmToByteIndexedXparBgCopy)
 161 DEF_FUNC(ByteIndexedBmToByteIndexedXparOver)
 162 DEF_FUNC(ByteIndexedDrawGlyphListAA)
 163 DEF_FUNC(ByteIndexedToByteIndexedConvert)
 164 DEF_FUNC(ByteIndexedToByteIndexedScaleConvert)
 165 DEF_FUNC(Index12GrayToByteIndexedConvert)
 166 DEF_FUNC(Index12GrayToByteIndexedScaleConvert)
 167 DEF_FUNC(IntArgbBmToByteIndexedScaleXparOver)
 168 DEF_FUNC(IntArgbBmToByteIndexedXparBgCopy)
 169 DEF_FUNC(IntArgbBmToByteIndexedXparOver)
 170 DEF_FUNC(IntArgbToByteIndexedAlphaMaskBlit)
 171 DEF_FUNC(IntArgbToByteIndexedConvert)
 172 DEF_FUNC(IntArgbToByteIndexedScaleConvert)
 173 DEF_FUNC(IntArgbToByteIndexedXorBlit)
 174 DEF_FUNC(IntRgbToByteIndexedAlphaMaskBlit)
 175 DEF_FUNC(ThreeByteBgrToByteIndexedConvert)
 176 DEF_FUNC(ThreeByteBgrToByteIndexedScaleConvert)
 177 DEF_FUNC(ByteGrayToFourByteAbgrConvert)
 178 DEF_FUNC(ByteGrayToFourByteAbgrScaleConvert)
 179 DEF_FUNC(ByteIndexedBmToFourByteAbgrScaleXparOver)
 180 DEF_FUNC(ByteIndexedBmToFourByteAbgrXparBgCopy)
 181 DEF_FUNC(ByteIndexedBmToFourByteAbgrXparOver)
 182 DEF_FUNC(ByteIndexedToFourByteAbgrConvert)
 183 DEF_FUNC(ByteIndexedToFourByteAbgrScaleConvert)
 184 DEF_FUNC(FourByteAbgrAlphaMaskFill)
 185 DEF_FUNC(FourByteAbgrDrawGlyphListAA)
 186 DEF_FUNC(FourByteAbgrSrcMaskFill)
 187 DEF_FUNC(FourByteAbgrSrcOverMaskFill)
 188 DEF_FUNC(FourByteAbgrToIntArgbConvert)
 189 DEF_FUNC(FourByteAbgrToIntArgbScaleConvert)
 190 DEF_FUNC(IntArgbBmToFourByteAbgrScaleXparOver)
 191 DEF_FUNC(IntArgbToFourByteAbgrAlphaMaskBlit)
 192 DEF_FUNC(IntArgbToFourByteAbgrConvert)
 193 DEF_FUNC(IntArgbToFourByteAbgrScaleConvert)
 194 DEF_FUNC(IntArgbToFourByteAbgrSrcOverMaskBlit)
 195 DEF_FUNC(IntArgbToFourByteAbgrXorBlit)
 196 DEF_FUNC(IntRgbToFourByteAbgrAlphaMaskBlit)
 197 DEF_FUNC(IntRgbToFourByteAbgrConvert)
 198 DEF_FUNC(IntRgbToFourByteAbgrScaleConvert)
 199 DEF_FUNC(ThreeByteBgrToFourByteAbgrConvert)
 200 DEF_FUNC(ThreeByteBgrToFourByteAbgrScaleConvert)
 201 DEF_FUNC(ByteGrayToFourByteAbgrPreConvert)
 202 DEF_FUNC(ByteGrayToFourByteAbgrPreScaleConvert)
 203 DEF_FUNC(ByteIndexedBmToFourByteAbgrPreScaleXparOver)
 204 DEF_FUNC(ByteIndexedBmToFourByteAbgrPreXparBgCopy)
 205 DEF_FUNC(ByteIndexedBmToFourByteAbgrPreXparOver)
 206 DEF_FUNC(ByteIndexedToFourByteAbgrPreConvert)
 207 DEF_FUNC(ByteIndexedToFourByteAbgrPreScaleConvert)
 208 DEF_FUNC(FourByteAbgrPreAlphaMaskFill)
 209 DEF_FUNC(FourByteAbgrPreDrawGlyphListAA)
 210 DEF_FUNC(FourByteAbgrPreSrcMaskFill)
 211 DEF_FUNC(FourByteAbgrPreSrcOverMaskFill)
 212 DEF_FUNC(FourByteAbgrPreToIntArgbConvert)
 213 DEF_FUNC(FourByteAbgrPreToIntArgbScaleConvert)
 214 DEF_FUNC(IntArgbBmToFourByteAbgrPreScaleXparOver)
 215 DEF_FUNC(IntArgbToFourByteAbgrPreAlphaMaskBlit)
 216 DEF_FUNC(IntArgbToFourByteAbgrPreConvert)
 217 DEF_FUNC(IntArgbToFourByteAbgrPreScaleConvert)
 218 DEF_FUNC(IntArgbToFourByteAbgrPreSrcOverMaskBlit)
 219 DEF_FUNC(IntArgbToFourByteAbgrPreXorBlit)
 220 DEF_FUNC(IntRgbToFourByteAbgrPreAlphaMaskBlit)
 221 DEF_FUNC(IntRgbToFourByteAbgrPreConvert)
 222 DEF_FUNC(IntRgbToFourByteAbgrPreScaleConvert)
 223 DEF_FUNC(ThreeByteBgrToFourByteAbgrPreConvert)
 224 DEF_FUNC(ThreeByteBgrToFourByteAbgrPreScaleConvert)
 225 DEF_FUNC(ByteIndexedBmToIntArgbScaleXparOver)
 226 DEF_FUNC(ByteIndexedBmToIntArgbXparBgCopy)
 227 DEF_FUNC(ByteIndexedBmToIntArgbXparOver)
 228 DEF_FUNC(ByteIndexedToIntArgbConvert)
 229 DEF_FUNC(ByteIndexedToIntArgbScaleConvert)
 230 DEF_FUNC(Index12GrayToIntArgbConvert)
 231 DEF_FUNC(IntArgbAlphaMaskFill)
 232 DEF_FUNC(IntArgbBmToIntArgbScaleXparOver)
 233 DEF_FUNC(IntArgbDrawGlyphListAA)
 234 DEF_FUNC(IntArgbSrcMaskFill)
 235 DEF_FUNC(IntArgbSrcOverMaskFill)
 236 DEF_FUNC(IntArgbToIntArgbAlphaMaskBlit)
 237 DEF_FUNC(IntArgbToIntArgbSrcOverMaskBlit)
 238 DEF_FUNC(IntArgbToIntArgbXorBlit)
 239 DEF_FUNC(IntRgbToIntArgbAlphaMaskBlit)
 240 DEF_FUNC(ByteIndexedBmToIntArgbBmScaleXparOver)
 241 DEF_FUNC(ByteIndexedBmToIntArgbBmXparBgCopy)
 242 DEF_FUNC(ByteIndexedBmToIntArgbBmXparOver)
 243 DEF_FUNC(ByteIndexedToIntArgbBmConvert)
 244 DEF_FUNC(ByteIndexedToIntArgbBmScaleConvert)
 245 DEF_FUNC(IntArgbBmAlphaMaskFill)
 246 DEF_FUNC(IntArgbBmDrawGlyphListAA)
 247 DEF_FUNC(IntArgbBmToIntArgbConvert)
 248 DEF_FUNC(IntArgbToIntArgbBmAlphaMaskBlit)
 249 DEF_FUNC(IntArgbToIntArgbBmConvert)
 250 DEF_FUNC(IntArgbToIntArgbBmScaleConvert)
 251 DEF_FUNC(IntArgbToIntArgbBmXorBlit)
 252 DEF_FUNC(ByteGrayToIntArgbPreConvert)
 253 DEF_FUNC(ByteGrayToIntArgbPreScaleConvert)
 254 DEF_FUNC(ByteIndexedBmToIntArgbPreScaleXparOver)
 255 DEF_FUNC(ByteIndexedBmToIntArgbPreXparBgCopy)
 256 DEF_FUNC(ByteIndexedBmToIntArgbPreXparOver)
 257 DEF_FUNC(ByteIndexedToIntArgbPreConvert)
 258 DEF_FUNC(ByteIndexedToIntArgbPreScaleConvert)
 259 DEF_FUNC(IntArgbPreAlphaMaskFill)
 260 DEF_FUNC(IntArgbPreDrawGlyphListAA)
 261 DEF_FUNC(IntArgbPreSrcMaskFill)
 262 DEF_FUNC(IntArgbPreSrcOverMaskFill)
 263 DEF_FUNC(IntArgbPreToIntArgbConvert)
 264 DEF_FUNC(IntArgbPreToIntArgbScaleConvert)
 265 DEF_FUNC(IntArgbToIntArgbPreAlphaMaskBlit)
 266 DEF_FUNC(IntArgbToIntArgbPreConvert)
 267 DEF_FUNC(IntArgbToIntArgbPreScaleConvert)
 268 DEF_FUNC(IntArgbToIntArgbPreSrcOverMaskBlit)
 269 DEF_FUNC(IntArgbToIntArgbPreXorBlit)
 270 DEF_FUNC(IntRgbToIntArgbPreAlphaMaskBlit)
 271 DEF_FUNC(IntRgbToIntArgbPreConvert)
 272 DEF_FUNC(IntRgbToIntArgbPreScaleConvert)
 273 DEF_FUNC(ThreeByteBgrToIntArgbPreConvert)
 274 DEF_FUNC(ThreeByteBgrToIntArgbPreScaleConvert)
 275 DEF_FUNC(ByteIndexedBmToIntBgrScaleXparOver)
 276 DEF_FUNC(ByteIndexedBmToIntBgrXparBgCopy)
 277 DEF_FUNC(ByteIndexedBmToIntBgrXparOver)
 278 DEF_FUNC(ByteIndexedToIntBgrConvert)
 279 DEF_FUNC(ByteIndexedToIntBgrScaleConvert)
 280 DEF_FUNC(IntArgbBmToIntBgrScaleXparOver)
 281 DEF_FUNC(IntArgbBmToIntBgrXparBgCopy)
 282 DEF_FUNC(IntArgbBmToIntBgrXparOver)
 283 DEF_FUNC(IntArgbToIntBgrAlphaMaskBlit)
 284 DEF_FUNC(IntArgbToIntBgrConvert)
 285 DEF_FUNC(IntArgbToIntBgrScaleConvert)
 286 DEF_FUNC(IntArgbToIntBgrSrcOverMaskBlit)
 287 DEF_FUNC(IntArgbToIntBgrXorBlit)
 288 DEF_FUNC(IntBgrAlphaMaskFill)
 289 DEF_FUNC(IntBgrDrawGlyphListAA)
 290 DEF_FUNC(IntBgrSrcMaskFill)
 291 DEF_FUNC(IntBgrSrcOverMaskFill)
 292 DEF_FUNC(IntBgrToIntArgbConvert)
 293 DEF_FUNC(IntBgrToIntArgbScaleConvert)
 294 DEF_FUNC(IntBgrToIntBgrAlphaMaskBlit)
 295 DEF_FUNC(IntRgbToIntBgrAlphaMaskBlit)
 296 DEF_FUNC(ThreeByteBgrToIntBgrConvert)
 297 DEF_FUNC(ThreeByteBgrToIntBgrScaleConvert)
 298 DEF_FUNC(ByteGrayToIntRgbConvert)
 299 DEF_FUNC(ByteGrayToIntRgbScaleConvert)
 300 DEF_FUNC(IntArgbBmToIntRgbXparBgCopy)
 301 DEF_FUNC(IntArgbBmToIntRgbXparOver)
 302 DEF_FUNC(IntArgbToIntRgbAlphaMaskBlit)
 303 DEF_FUNC(IntArgbToIntRgbSrcOverMaskBlit)
 304 DEF_FUNC(IntArgbToIntRgbXorBlit)
 305 DEF_FUNC(IntRgbAlphaMaskFill)
 306 DEF_FUNC(IntRgbDrawGlyphListAA)
 307 DEF_FUNC(IntRgbSrcMaskFill)
 308 DEF_FUNC(IntRgbSrcOverMaskFill)
 309 DEF_FUNC(IntRgbToIntArgbConvert)
 310 DEF_FUNC(IntRgbToIntArgbScaleConvert)
 311 DEF_FUNC(IntRgbToIntRgbAlphaMaskBlit)
 312 DEF_FUNC(ThreeByteBgrToIntRgbConvert)
 313 DEF_FUNC(ThreeByteBgrToIntRgbScaleConvert)
 314 DEF_FUNC(ByteGrayToIntRgbxConvert)
 315 DEF_FUNC(ByteGrayToIntRgbxScaleConvert)
 316 DEF_FUNC(ByteIndexedBmToIntRgbxScaleXparOver)
 317 DEF_FUNC(ByteIndexedBmToIntRgbxXparBgCopy)
 318 DEF_FUNC(ByteIndexedBmToIntRgbxXparOver)
 319 DEF_FUNC(ByteIndexedToIntRgbxConvert)
 320 DEF_FUNC(ByteIndexedToIntRgbxScaleConvert)
 321 DEF_FUNC(IntArgbBmToIntRgbxScaleXparOver)
 322 DEF_FUNC(IntArgbToIntRgbxConvert)
 323 DEF_FUNC(IntArgbToIntRgbxScaleConvert)
 324 DEF_FUNC(IntArgbToIntRgbxXorBlit)
 325 DEF_FUNC(IntRgbxDrawGlyphListAA)
 326 DEF_FUNC(IntRgbxToIntArgbConvert)
 327 DEF_FUNC(IntRgbxToIntArgbScaleConvert)
 328 DEF_FUNC(ThreeByteBgrToIntRgbxConvert)
 329 DEF_FUNC(ThreeByteBgrToIntRgbxScaleConvert)
 330 DEF_FUNC(ByteGrayToThreeByteBgrConvert)
 331 DEF_FUNC(ByteGrayToThreeByteBgrScaleConvert)
 332 DEF_FUNC(ByteIndexedBmToThreeByteBgrScaleXparOver)
 333 DEF_FUNC(ByteIndexedBmToThreeByteBgrXparBgCopy)
 334 DEF_FUNC(ByteIndexedBmToThreeByteBgrXparOver)
 335 DEF_FUNC(ByteIndexedToThreeByteBgrConvert)
 336 DEF_FUNC(ByteIndexedToThreeByteBgrScaleConvert)
 337 DEF_FUNC(IntArgbBmToThreeByteBgrScaleXparOver)
 338 DEF_FUNC(IntArgbBmToThreeByteBgrXparBgCopy)
 339 DEF_FUNC(IntArgbBmToThreeByteBgrXparOver)
 340 DEF_FUNC(IntArgbToThreeByteBgrAlphaMaskBlit)
 341 DEF_FUNC(IntArgbToThreeByteBgrConvert)
 342 DEF_FUNC(IntArgbToThreeByteBgrScaleConvert)
 343 DEF_FUNC(IntArgbToThreeByteBgrSrcOverMaskBlit)
 344 DEF_FUNC(IntArgbToThreeByteBgrXorBlit)
 345 DEF_FUNC(IntRgbToThreeByteBgrAlphaMaskBlit)
 346 DEF_FUNC(ThreeByteBgrAlphaMaskFill)
 347 DEF_FUNC(ThreeByteBgrDrawGlyphListAA)
 348 DEF_FUNC(ThreeByteBgrSrcMaskFill)
 349 DEF_FUNC(ThreeByteBgrSrcOverMaskFill)
 350 DEF_FUNC(ThreeByteBgrToIntArgbConvert)
 351 DEF_FUNC(ThreeByteBgrToIntArgbScaleConvert)
 352 DEF_FUNC(ByteGrayToIndex8GrayConvert)
 353 DEF_FUNC(ByteGrayToIndex8GrayScaleConvert)
 354 DEF_FUNC(ByteIndexedBmToIndex8GrayXparBgCopy)
 355 DEF_FUNC(ByteIndexedBmToIndex8GrayXparOver)
 356 DEF_FUNC(ByteIndexedToIndex8GrayConvert)
 357 DEF_FUNC(ByteIndexedToIndex8GrayScaleConvert)
 358 DEF_FUNC(Index12GrayToIndex8GrayConvert)
 359 DEF_FUNC(Index12GrayToIndex8GrayScaleConvert)
 360 DEF_FUNC(Index8GrayAlphaMaskFill)
 361 DEF_FUNC(Index8GrayDrawGlyphListAA)
 362 DEF_FUNC(Index8GraySrcOverMaskFill)
 363 DEF_FUNC(Index8GrayToIndex8GrayConvert)
 364 DEF_FUNC(Index8GrayToIndex8GrayScaleConvert)
 365 DEF_FUNC(IntArgbToIndex8GrayAlphaMaskBlit)
 366 DEF_FUNC(IntArgbToIndex8GrayConvert)
 367 DEF_FUNC(IntArgbToIndex8GrayScaleConvert)
 368 DEF_FUNC(IntArgbToIndex8GraySrcOverMaskBlit)
 369 DEF_FUNC(IntArgbToIndex8GrayXorBlit)
 370 DEF_FUNC(IntRgbToIndex8GrayAlphaMaskBlit)
 371 DEF_FUNC(ThreeByteBgrToIndex8GrayConvert)
 372 DEF_FUNC(ThreeByteBgrToIndex8GrayScaleConvert)
 373 DEF_FUNC(UshortGrayToIndex8GrayScaleConvert)
 374 DEF_FUNC(ByteGrayToIndex12GrayConvert)
 375 DEF_FUNC(ByteGrayToIndex12GrayScaleConvert)
 376 DEF_FUNC(ByteIndexedBmToIndex12GrayXparBgCopy)
 377 DEF_FUNC(ByteIndexedBmToIndex12GrayXparOver)
 378 DEF_FUNC(ByteIndexedToIndex12GrayConvert)
 379 DEF_FUNC(ByteIndexedToIndex12GrayScaleConvert)
 380 DEF_FUNC(Index12GrayAlphaMaskFill)
 381 DEF_FUNC(Index12GrayDrawGlyphListAA)
 382 DEF_FUNC(Index12GraySrcOverMaskFill)
 383 DEF_FUNC(Index12GrayToIndex12GrayConvert)
 384 DEF_FUNC(Index12GrayToIndex12GrayScaleConvert)
 385 DEF_FUNC(Index12GrayToIntArgbScaleConvert)
 386 DEF_FUNC(Index8GrayToIndex12GrayConvert)
 387 DEF_FUNC(Index8GrayToIndex12GrayScaleConvert)
 388 DEF_FUNC(IntArgbToIndex12GrayAlphaMaskBlit)
 389 DEF_FUNC(IntArgbToIndex12GrayConvert)
 390 DEF_FUNC(IntArgbToIndex12GrayScaleConvert)
 391 DEF_FUNC(IntArgbToIndex12GraySrcOverMaskBlit)
 392 DEF_FUNC(IntArgbToIndex12GrayXorBlit)
 393 DEF_FUNC(IntRgbToIndex12GrayAlphaMaskBlit)
 394 DEF_FUNC(ThreeByteBgrToIndex12GrayConvert)
 395 DEF_FUNC(ThreeByteBgrToIndex12GrayScaleConvert)
 396 DEF_FUNC(UshortGrayToIndex12GrayScaleConvert)
 397 DEF_FUNC(ByteBinary1BitAlphaMaskFill)
 398 DEF_FUNC(ByteBinary1BitDrawGlyphList)
 399 DEF_FUNC(ByteBinary1BitDrawGlyphListAA)
 400 DEF_FUNC(ByteBinary1BitDrawGlyphListXor)
 401 DEF_FUNC(ByteBinary1BitSetLine)
 402 DEF_FUNC(ByteBinary1BitSetRect)
 403 DEF_FUNC(ByteBinary1BitSetSpans)
 404 DEF_FUNC(ByteBinary1BitToByteBinary1BitConvert)
 405 DEF_FUNC(ByteBinary1BitToIntArgbAlphaMaskBlit)
 406 DEF_FUNC(ByteBinary1BitToIntArgbConvert)
 407 DEF_FUNC(ByteBinary1BitXorLine)
 408 DEF_FUNC(ByteBinary1BitXorRect)
 409 DEF_FUNC(ByteBinary1BitXorSpans)
 410 DEF_FUNC(IntArgbToByteBinary1BitAlphaMaskBlit)
 411 DEF_FUNC(IntArgbToByteBinary1BitConvert)
 412 DEF_FUNC(IntArgbToByteBinary1BitXorBlit)
 413 DEF_FUNC(ByteBinary2BitAlphaMaskFill)
 414 DEF_FUNC(ByteBinary2BitDrawGlyphList)
 415 DEF_FUNC(ByteBinary2BitDrawGlyphListAA)
 416 DEF_FUNC(ByteBinary2BitDrawGlyphListXor)
 417 DEF_FUNC(ByteBinary2BitSetLine)
 418 DEF_FUNC(ByteBinary2BitSetRect)
 419 DEF_FUNC(ByteBinary2BitSetSpans)
 420 DEF_FUNC(ByteBinary2BitToByteBinary2BitConvert)
 421 DEF_FUNC(ByteBinary2BitToIntArgbAlphaMaskBlit)
 422 DEF_FUNC(ByteBinary2BitToIntArgbConvert)
 423 DEF_FUNC(ByteBinary2BitXorLine)
 424 DEF_FUNC(ByteBinary2BitXorRect)
 425 DEF_FUNC(ByteBinary2BitXorSpans)
 426 DEF_FUNC(IntArgbToByteBinary2BitAlphaMaskBlit)
 427 DEF_FUNC(IntArgbToByteBinary2BitConvert)
 428 DEF_FUNC(IntArgbToByteBinary2BitXorBlit)
 429 DEF_FUNC(ByteBinary4BitAlphaMaskFill)
 430 DEF_FUNC(ByteBinary4BitDrawGlyphList)
 431 DEF_FUNC(ByteBinary4BitDrawGlyphListAA)
 432 DEF_FUNC(ByteBinary4BitDrawGlyphListXor)
 433 DEF_FUNC(ByteBinary4BitSetLine)
 434 DEF_FUNC(ByteBinary4BitSetRect)
 435 DEF_FUNC(ByteBinary4BitSetSpans)
 436 DEF_FUNC(ByteBinary4BitToByteBinary4BitConvert)
 437 DEF_FUNC(ByteBinary4BitToIntArgbAlphaMaskBlit)
 438 DEF_FUNC(ByteBinary4BitToIntArgbConvert)
 439 DEF_FUNC(ByteBinary4BitXorLine)
 440 DEF_FUNC(ByteBinary4BitXorRect)
 441 DEF_FUNC(ByteBinary4BitXorSpans)
 442 DEF_FUNC(IntArgbToByteBinary4BitAlphaMaskBlit)
 443 DEF_FUNC(IntArgbToByteBinary4BitConvert)
 444 DEF_FUNC(IntArgbToByteBinary4BitXorBlit)
 445 DEF_FUNC(ByteGrayToUshort555RgbConvert)
 446 DEF_FUNC(ByteGrayToUshort555RgbScaleConvert)
 447 DEF_FUNC(ByteIndexedBmToUshort555RgbScaleXparOver)
 448 DEF_FUNC(ByteIndexedBmToUshort555RgbXparBgCopy)
 449 DEF_FUNC(ByteIndexedBmToUshort555RgbXparOver)
 450 DEF_FUNC(ByteIndexedToUshort555RgbConvert)
 451 DEF_FUNC(ByteIndexedToUshort555RgbScaleConvert)
 452 DEF_FUNC(IntArgbBmToUshort555RgbScaleXparOver)
 453 DEF_FUNC(IntArgbBmToUshort555RgbXparBgCopy)
 454 DEF_FUNC(IntArgbBmToUshort555RgbXparOver)
 455 DEF_FUNC(IntArgbToUshort555RgbAlphaMaskBlit)
 456 DEF_FUNC(IntArgbToUshort555RgbConvert)
 457 DEF_FUNC(IntArgbToUshort555RgbScaleConvert)
 458 DEF_FUNC(IntArgbToUshort555RgbSrcOverMaskBlit)
 459 DEF_FUNC(IntArgbToUshort555RgbXorBlit)
 460 DEF_FUNC(IntRgbToUshort555RgbAlphaMaskBlit)
 461 DEF_FUNC(ThreeByteBgrToUshort555RgbConvert)
 462 DEF_FUNC(ThreeByteBgrToUshort555RgbScaleConvert)
 463 DEF_FUNC(Ushort555RgbAlphaMaskFill)
 464 DEF_FUNC(Ushort555RgbDrawGlyphListAA)
 465 DEF_FUNC(Ushort555RgbSrcMaskFill)
 466 DEF_FUNC(Ushort555RgbSrcOverMaskFill)
 467 DEF_FUNC(Ushort555RgbToIntArgbConvert)
 468 DEF_FUNC(Ushort555RgbToIntArgbScaleConvert)
 469 DEF_FUNC(ByteGrayToUshort555RgbxConvert)
 470 DEF_FUNC(ByteGrayToUshort555RgbxScaleConvert)
 471 DEF_FUNC(ByteIndexedBmToUshort555RgbxScaleXparOver)
 472 DEF_FUNC(ByteIndexedBmToUshort555RgbxXparBgCopy)
 473 DEF_FUNC(ByteIndexedBmToUshort555RgbxXparOver)
 474 DEF_FUNC(ByteIndexedToUshort555RgbxConvert)
 475 DEF_FUNC(ByteIndexedToUshort555RgbxScaleConvert)
 476 DEF_FUNC(IntArgbBmToUshort555RgbxScaleXparOver)
 477 DEF_FUNC(IntArgbToUshort555RgbxConvert)
 478 DEF_FUNC(IntArgbToUshort555RgbxScaleConvert)
 479 DEF_FUNC(IntArgbToUshort555RgbxXorBlit)
 480 DEF_FUNC(ThreeByteBgrToUshort555RgbxConvert)
 481 DEF_FUNC(ThreeByteBgrToUshort555RgbxScaleConvert)
 482 DEF_FUNC(Ushort555RgbxDrawGlyphListAA)
 483 DEF_FUNC(Ushort555RgbxToIntArgbConvert)
 484 DEF_FUNC(Ushort555RgbxToIntArgbScaleConvert)
 485 DEF_FUNC(ByteGrayToUshort565RgbConvert)
 486 DEF_FUNC(ByteGrayToUshort565RgbScaleConvert)
 487 DEF_FUNC(ByteIndexedBmToUshort565RgbScaleXparOver)
 488 DEF_FUNC(ByteIndexedBmToUshort565RgbXparBgCopy)
 489 DEF_FUNC(ByteIndexedBmToUshort565RgbXparOver)
 490 DEF_FUNC(ByteIndexedToUshort565RgbConvert)
 491 DEF_FUNC(ByteIndexedToUshort565RgbScaleConvert)
 492 DEF_FUNC(IntArgbBmToUshort565RgbScaleXparOver)
 493 DEF_FUNC(IntArgbBmToUshort565RgbXparBgCopy)
 494 DEF_FUNC(IntArgbBmToUshort565RgbXparOver)
 495 DEF_FUNC(IntArgbToUshort565RgbAlphaMaskBlit)
 496 DEF_FUNC(IntArgbToUshort565RgbConvert)
 497 DEF_FUNC(IntArgbToUshort565RgbScaleConvert)
 498 DEF_FUNC(IntArgbToUshort565RgbSrcOverMaskBlit)
 499 DEF_FUNC(IntArgbToUshort565RgbXorBlit)
 500 DEF_FUNC(IntRgbToUshort565RgbAlphaMaskBlit)
 501 DEF_FUNC(ThreeByteBgrToUshort565RgbConvert)
 502 DEF_FUNC(ThreeByteBgrToUshort565RgbScaleConvert)
 503 DEF_FUNC(Ushort565RgbAlphaMaskFill)
 504 DEF_FUNC(Ushort565RgbDrawGlyphListAA)
 505 DEF_FUNC(Ushort565RgbSrcMaskFill)
 506 DEF_FUNC(Ushort565RgbSrcOverMaskFill)
 507 DEF_FUNC(Ushort565RgbToIntArgbConvert)
 508 DEF_FUNC(Ushort565RgbToIntArgbScaleConvert)
 509 
 510 /***************************************************************/
 511 
 512 static AnyFunc_pair vis_func_pair_array[] = {
 513     ADD_FUNC(AnyByteDrawGlyphList),
 514     ADD_FUNC(AnyByteDrawGlyphListXor),
 515     ADD_FUNC(AnyByteIsomorphicCopy),
 516     ADD_FUNC(AnyByteIsomorphicScaleCopy),
 517     ADD_FUNC(AnyByteIsomorphicXorCopy),
 518     ADD_FUNC(AnyByteSetLine),
 519     ADD_FUNC(AnyByteSetRect),
 520     ADD_FUNC(AnyByteSetSpans),
 521     ADD_FUNC(AnyByteSetParallelogram),
 522     ADD_FUNC(AnyByteXorLine),
 523     ADD_FUNC(AnyByteXorRect),
 524     ADD_FUNC(AnyByteXorSpans),
 525     ADD_FUNC(AnyShortDrawGlyphList),
 526     ADD_FUNC(AnyShortDrawGlyphListXor),
 527     ADD_FUNC(AnyShortIsomorphicCopy),
 528     ADD_FUNC(AnyShortIsomorphicScaleCopy),
 529     ADD_FUNC(AnyShortIsomorphicXorCopy),
 530     ADD_FUNC(AnyShortSetLine),
 531     ADD_FUNC(AnyShortSetRect),
 532     ADD_FUNC(AnyShortSetSpans),
 533     ADD_FUNC(AnyShortSetParallelogram),
 534     ADD_FUNC(AnyShortXorLine),
 535     ADD_FUNC(AnyShortXorRect),
 536     ADD_FUNC(AnyShortXorSpans),
 537     ADD_FUNC(Any3ByteIsomorphicCopy),
 538     ADD_FUNC(Any3ByteIsomorphicScaleCopy),
 539     ADD_FUNC(Any3ByteIsomorphicXorCopy),
 540     ADD_FUNC(Any3ByteSetLine),
 541     ADD_FUNC(Any3ByteSetRect),
 542     ADD_FUNC(Any3ByteSetSpans),
 543     ADD_FUNC(Any3ByteSetParallelogram),
 544     ADD_FUNC(Any3ByteXorLine),
 545     ADD_FUNC(Any3ByteXorRect),
 546     ADD_FUNC(Any3ByteXorSpans),
 547     ADD_FUNC(Any4ByteDrawGlyphList),
 548     ADD_FUNC(Any4ByteDrawGlyphListXor),
 549     ADD_FUNC(Any4ByteIsomorphicCopy),
 550     ADD_FUNC(Any4ByteIsomorphicScaleCopy),
 551     ADD_FUNC(Any4ByteIsomorphicXorCopy),
 552     ADD_FUNC(Any4ByteSetLine),
 553     ADD_FUNC(Any4ByteSetRect),
 554     ADD_FUNC(Any4ByteSetSpans),
 555     ADD_FUNC(Any4ByteSetParallelogram),
 556     ADD_FUNC(Any4ByteXorLine),
 557     ADD_FUNC(Any4ByteXorRect),
 558     ADD_FUNC(Any4ByteXorSpans),
 559     ADD_FUNC(AnyIntDrawGlyphList),
 560     ADD_FUNC(AnyIntDrawGlyphListXor),
 561     ADD_FUNC(AnyIntIsomorphicCopy),
 562     ADD_FUNC(AnyIntIsomorphicScaleCopy),
 563     ADD_FUNC(AnyIntIsomorphicXorCopy),
 564     ADD_FUNC(AnyIntSetLine),
 565     ADD_FUNC(AnyIntSetRect),
 566     ADD_FUNC(AnyIntSetSpans),
 567     ADD_FUNC(AnyIntSetParallelogram),
 568     ADD_FUNC(AnyIntXorLine),
 569     ADD_FUNC(AnyIntXorRect),
 570     ADD_FUNC(AnyIntXorSpans),
 571     ADD_FUNC(ByteGrayAlphaMaskFill),
 572     ADD_FUNC(ByteGrayDrawGlyphListAA),
 573     ADD_FUNC(ByteGraySrcMaskFill),
 574     ADD_FUNC(ByteGraySrcOverMaskFill),
 575     ADD_FUNC(ByteGrayToIntArgbConvert),
 576     ADD_FUNC(ByteGrayToIntArgbScaleConvert),
 577     ADD_FUNC(ByteIndexedBmToByteGrayScaleXparOver),
 578     ADD_FUNC(ByteIndexedBmToByteGrayXparBgCopy),
 579     ADD_FUNC(ByteIndexedBmToByteGrayXparOver),
 580     ADD_FUNC(ByteIndexedToByteGrayConvert),
 581     ADD_FUNC(ByteIndexedToByteGrayScaleConvert),
 582     ADD_FUNC(Index12GrayToByteGrayConvert),
 583     ADD_FUNC(Index12GrayToByteGrayScaleConvert),
 584     ADD_FUNC(Index8GrayToByteGrayConvert),
 585     ADD_FUNC(Index8GrayToByteGrayScaleConvert),
 586     ADD_FUNC(IntArgbBmToByteGrayScaleXparOver),
 587     ADD_FUNC(IntArgbBmToByteGrayXparBgCopy),
 588     ADD_FUNC(IntArgbBmToByteGrayXparOver),
 589     ADD_FUNC(IntArgbToByteGrayAlphaMaskBlit),
 590     ADD_FUNC(IntArgbToByteGrayConvert),
 591     ADD_FUNC(IntArgbToByteGrayScaleConvert),
 592     ADD_FUNC(IntArgbToByteGraySrcOverMaskBlit),
 593     ADD_FUNC(IntArgbToByteGrayXorBlit),
 594     ADD_FUNC(IntRgbToByteGrayAlphaMaskBlit),
 595     ADD_FUNC(ThreeByteBgrToByteGrayConvert),
 596     ADD_FUNC(ThreeByteBgrToByteGrayScaleConvert),
 597     ADD_FUNC(UshortGrayToByteGrayConvert),
 598     ADD_FUNC(UshortGrayToByteGrayScaleConvert),
 599     ADD_FUNC(ByteGrayToUshortGrayConvert),
 600     ADD_FUNC(ByteGrayToUshortGrayScaleConvert),
 601     ADD_FUNC(ByteIndexedBmToUshortGrayScaleXparOver),
 602     ADD_FUNC(ByteIndexedBmToUshortGrayXparBgCopy),
 603     ADD_FUNC(ByteIndexedBmToUshortGrayXparOver),
 604     ADD_FUNC(ByteIndexedToUshortGrayConvert),
 605     ADD_FUNC(ByteIndexedToUshortGrayScaleConvert),
 606     ADD_FUNC(IntArgbBmToUshortGrayScaleXparOver),
 607     ADD_FUNC(IntArgbToUshortGrayConvert),
 608     ADD_FUNC(IntArgbToUshortGrayScaleConvert),
 609     ADD_FUNC(ThreeByteBgrToUshortGrayConvert),
 610     ADD_FUNC(ThreeByteBgrToUshortGrayScaleConvert),
 611     ADD_FUNC(UshortGrayToIntArgbConvert),
 612     ADD_FUNC(UshortGrayToIntArgbScaleConvert),
 613     ADD_FUNC(ByteGrayToByteIndexedConvert),
 614     ADD_FUNC(ByteGrayToByteIndexedScaleConvert),
 615     ADD_FUNC(ByteIndexedBmToByteIndexedScaleXparOver),
 616     ADD_FUNC(ByteIndexedBmToByteIndexedXparBgCopy),
 617     ADD_FUNC(ByteIndexedBmToByteIndexedXparOver),
 618     ADD_FUNC(ByteIndexedToByteIndexedConvert),
 619     ADD_FUNC(ByteIndexedToByteIndexedScaleConvert),
 620     ADD_FUNC(Index12GrayToByteIndexedConvert),
 621     ADD_FUNC(Index12GrayToByteIndexedScaleConvert),
 622     ADD_FUNC(IntArgbBmToByteIndexedScaleXparOver),
 623     ADD_FUNC(IntArgbBmToByteIndexedXparBgCopy),
 624     ADD_FUNC(IntArgbBmToByteIndexedXparOver),
 625     ADD_FUNC(IntArgbToByteIndexedConvert),
 626     ADD_FUNC(IntArgbToByteIndexedScaleConvert),
 627     ADD_FUNC(IntArgbToByteIndexedXorBlit),
 628     ADD_FUNC(ThreeByteBgrToByteIndexedConvert),
 629     ADD_FUNC(ThreeByteBgrToByteIndexedScaleConvert),
 630     ADD_FUNC(ByteGrayToFourByteAbgrConvert),
 631     ADD_FUNC(ByteGrayToFourByteAbgrScaleConvert),
 632     ADD_FUNC(ByteIndexedBmToFourByteAbgrScaleXparOver),
 633     ADD_FUNC(ByteIndexedBmToFourByteAbgrXparBgCopy),
 634     ADD_FUNC(ByteIndexedBmToFourByteAbgrXparOver),
 635     ADD_FUNC(ByteIndexedToFourByteAbgrConvert),
 636     ADD_FUNC(ByteIndexedToFourByteAbgrScaleConvert),
 637     ADD_FUNC(FourByteAbgrAlphaMaskFill),
 638     ADD_FUNC(FourByteAbgrDrawGlyphListAA),
 639     ADD_FUNC(FourByteAbgrSrcMaskFill),
 640     ADD_FUNC(FourByteAbgrSrcOverMaskFill),
 641     ADD_FUNC(FourByteAbgrToIntArgbConvert),
 642     ADD_FUNC(FourByteAbgrToIntArgbScaleConvert),
 643     ADD_FUNC(IntArgbBmToFourByteAbgrScaleXparOver),
 644     ADD_FUNC(IntArgbToFourByteAbgrAlphaMaskBlit),
 645     ADD_FUNC(IntArgbToFourByteAbgrConvert),
 646     ADD_FUNC(IntArgbToFourByteAbgrScaleConvert),
 647     ADD_FUNC(IntArgbToFourByteAbgrSrcOverMaskBlit),
 648     ADD_FUNC(IntArgbToFourByteAbgrXorBlit),
 649     ADD_FUNC(IntRgbToFourByteAbgrAlphaMaskBlit),
 650     ADD_FUNC(IntRgbToFourByteAbgrConvert),
 651     ADD_FUNC(IntRgbToFourByteAbgrScaleConvert),
 652     ADD_FUNC(ThreeByteBgrToFourByteAbgrConvert),
 653     ADD_FUNC(ThreeByteBgrToFourByteAbgrScaleConvert),
 654     ADD_FUNC(ByteGrayToFourByteAbgrPreConvert),
 655     ADD_FUNC(ByteGrayToFourByteAbgrPreScaleConvert),
 656     ADD_FUNC(ByteIndexedBmToFourByteAbgrPreScaleXparOver),
 657     ADD_FUNC(ByteIndexedBmToFourByteAbgrPreXparBgCopy),
 658     ADD_FUNC(ByteIndexedBmToFourByteAbgrPreXparOver),
 659     ADD_FUNC(ByteIndexedToFourByteAbgrPreConvert),
 660     ADD_FUNC(ByteIndexedToFourByteAbgrPreScaleConvert),
 661     ADD_FUNC(FourByteAbgrPreAlphaMaskFill),
 662     ADD_FUNC(FourByteAbgrPreDrawGlyphListAA),
 663     ADD_FUNC(FourByteAbgrPreSrcMaskFill),
 664     ADD_FUNC(FourByteAbgrPreSrcOverMaskFill),
 665     ADD_FUNC(FourByteAbgrPreToIntArgbConvert),
 666     ADD_FUNC(FourByteAbgrPreToIntArgbScaleConvert),
 667     ADD_FUNC(IntArgbBmToFourByteAbgrPreScaleXparOver),
 668     ADD_FUNC(IntArgbToFourByteAbgrPreAlphaMaskBlit),
 669     ADD_FUNC(IntArgbToFourByteAbgrPreConvert),
 670     ADD_FUNC(IntArgbToFourByteAbgrPreScaleConvert),
 671     ADD_FUNC(IntArgbToFourByteAbgrPreSrcOverMaskBlit),
 672     ADD_FUNC(IntArgbToFourByteAbgrPreXorBlit),
 673     ADD_FUNC(IntRgbToFourByteAbgrPreAlphaMaskBlit),
 674     ADD_FUNC(IntRgbToFourByteAbgrPreConvert),
 675     ADD_FUNC(IntRgbToFourByteAbgrPreScaleConvert),
 676     ADD_FUNC(ThreeByteBgrToFourByteAbgrPreConvert),
 677     ADD_FUNC(ThreeByteBgrToFourByteAbgrPreScaleConvert),
 678     ADD_FUNC(ByteIndexedBmToIntArgbScaleXparOver),
 679     ADD_FUNC(ByteIndexedBmToIntArgbXparBgCopy),
 680     ADD_FUNC(ByteIndexedBmToIntArgbXparOver),
 681     ADD_FUNC(ByteIndexedToIntArgbConvert),
 682     ADD_FUNC(ByteIndexedToIntArgbScaleConvert),
 683     ADD_FUNC(Index12GrayToIntArgbConvert),
 684     ADD_FUNC(IntArgbAlphaMaskFill),
 685     ADD_FUNC(IntArgbBmToIntArgbScaleXparOver),
 686     ADD_FUNC(IntArgbDrawGlyphListAA),
 687     ADD_FUNC(IntArgbSrcMaskFill),
 688     ADD_FUNC(IntArgbSrcOverMaskFill),
 689     ADD_FUNC(IntArgbToIntArgbAlphaMaskBlit),
 690     ADD_FUNC(IntArgbToIntArgbSrcOverMaskBlit),
 691     ADD_FUNC(IntArgbToIntArgbXorBlit),
 692     ADD_FUNC(IntRgbToIntArgbAlphaMaskBlit),
 693     ADD_FUNC(ByteIndexedBmToIntArgbBmScaleXparOver),
 694     ADD_FUNC(ByteIndexedBmToIntArgbBmXparBgCopy),
 695     ADD_FUNC(ByteIndexedBmToIntArgbBmXparOver),
 696     ADD_FUNC(ByteIndexedToIntArgbBmConvert),
 697     ADD_FUNC(ByteIndexedToIntArgbBmScaleConvert),
 698     ADD_FUNC(IntArgbBmDrawGlyphListAA),
 699     ADD_FUNC(IntArgbBmToIntArgbConvert),
 700     ADD_FUNC(IntArgbToIntArgbBmConvert),
 701     ADD_FUNC(IntArgbToIntArgbBmScaleConvert),
 702     ADD_FUNC(IntArgbToIntArgbBmXorBlit),
 703     ADD_FUNC(ByteGrayToIntArgbPreConvert),
 704     ADD_FUNC(ByteGrayToIntArgbPreScaleConvert),
 705     ADD_FUNC(ByteIndexedBmToIntArgbPreScaleXparOver),
 706     ADD_FUNC(ByteIndexedBmToIntArgbPreXparBgCopy),
 707     ADD_FUNC(ByteIndexedBmToIntArgbPreXparOver),
 708     ADD_FUNC(ByteIndexedToIntArgbPreConvert),
 709     ADD_FUNC(ByteIndexedToIntArgbPreScaleConvert),
 710     ADD_FUNC(IntArgbPreAlphaMaskFill),
 711     ADD_FUNC(IntArgbPreDrawGlyphListAA),
 712     ADD_FUNC(IntArgbPreSrcMaskFill),
 713     ADD_FUNC(IntArgbPreSrcOverMaskFill),
 714     ADD_FUNC(IntArgbPreToIntArgbConvert),
 715     ADD_FUNC(IntArgbPreToIntArgbScaleConvert),
 716     ADD_FUNC(IntArgbToIntArgbPreAlphaMaskBlit),
 717     ADD_FUNC(IntArgbToIntArgbPreConvert),
 718     ADD_FUNC(IntArgbToIntArgbPreScaleConvert),
 719     ADD_FUNC(IntArgbToIntArgbPreSrcOverMaskBlit),
 720     ADD_FUNC(IntArgbToIntArgbPreXorBlit),
 721     ADD_FUNC(IntRgbToIntArgbPreAlphaMaskBlit),
 722     ADD_FUNC(IntRgbToIntArgbPreConvert),
 723     ADD_FUNC(IntRgbToIntArgbPreScaleConvert),
 724     ADD_FUNC(ThreeByteBgrToIntArgbPreConvert),
 725     ADD_FUNC(ThreeByteBgrToIntArgbPreScaleConvert),
 726     ADD_FUNC(ByteIndexedBmToIntBgrScaleXparOver),
 727     ADD_FUNC(ByteIndexedBmToIntBgrXparBgCopy),
 728     ADD_FUNC(ByteIndexedBmToIntBgrXparOver),
 729     ADD_FUNC(ByteIndexedToIntBgrConvert),
 730     ADD_FUNC(ByteIndexedToIntBgrScaleConvert),
 731     ADD_FUNC(IntArgbBmToIntBgrScaleXparOver),
 732     ADD_FUNC(IntArgbBmToIntBgrXparBgCopy),
 733     ADD_FUNC(IntArgbBmToIntBgrXparOver),
 734     ADD_FUNC(IntArgbToIntBgrAlphaMaskBlit),
 735     ADD_FUNC(IntArgbToIntBgrConvert),
 736     ADD_FUNC(IntArgbToIntBgrScaleConvert),
 737     ADD_FUNC(IntArgbToIntBgrSrcOverMaskBlit),
 738     ADD_FUNC(IntArgbToIntBgrXorBlit),
 739     ADD_FUNC(IntBgrAlphaMaskFill),
 740     ADD_FUNC(IntBgrDrawGlyphListAA),
 741     ADD_FUNC(IntBgrSrcMaskFill),
 742     ADD_FUNC(IntBgrSrcOverMaskFill),
 743     ADD_FUNC(IntBgrToIntArgbConvert),
 744     ADD_FUNC(IntBgrToIntArgbScaleConvert),
 745     ADD_FUNC(IntBgrToIntBgrAlphaMaskBlit),
 746     ADD_FUNC(IntRgbToIntBgrAlphaMaskBlit),
 747     ADD_FUNC(ThreeByteBgrToIntBgrConvert),
 748     ADD_FUNC(ThreeByteBgrToIntBgrScaleConvert),
 749     ADD_FUNC(ByteGrayToIntRgbConvert),
 750     ADD_FUNC(ByteGrayToIntRgbScaleConvert),
 751     ADD_FUNC(IntArgbBmToIntRgbXparBgCopy),
 752     ADD_FUNC(IntArgbBmToIntRgbXparOver),
 753     ADD_FUNC(IntArgbToIntRgbAlphaMaskBlit),
 754     ADD_FUNC(IntArgbToIntRgbSrcOverMaskBlit),
 755     ADD_FUNC(IntArgbToIntRgbXorBlit),
 756     ADD_FUNC(IntRgbAlphaMaskFill),
 757     ADD_FUNC(IntRgbDrawGlyphListAA),
 758     ADD_FUNC(IntRgbSrcMaskFill),
 759     ADD_FUNC(IntRgbSrcOverMaskFill),
 760     ADD_FUNC(IntRgbToIntArgbConvert),
 761     ADD_FUNC(IntRgbToIntArgbScaleConvert),
 762     ADD_FUNC(IntRgbToIntRgbAlphaMaskBlit),
 763     ADD_FUNC(ThreeByteBgrToIntRgbConvert),
 764     ADD_FUNC(ThreeByteBgrToIntRgbScaleConvert),
 765     ADD_FUNC(ByteGrayToIntRgbxConvert),
 766     ADD_FUNC(ByteGrayToIntRgbxScaleConvert),
 767     ADD_FUNC(ByteIndexedBmToIntRgbxScaleXparOver),
 768     ADD_FUNC(ByteIndexedBmToIntRgbxXparBgCopy),
 769     ADD_FUNC(ByteIndexedBmToIntRgbxXparOver),
 770     ADD_FUNC(ByteIndexedToIntRgbxConvert),
 771     ADD_FUNC(ByteIndexedToIntRgbxScaleConvert),
 772     ADD_FUNC(IntArgbBmToIntRgbxScaleXparOver),
 773     ADD_FUNC(IntArgbToIntRgbxConvert),
 774     ADD_FUNC(IntArgbToIntRgbxScaleConvert),
 775     ADD_FUNC(IntArgbToIntRgbxXorBlit),
 776     ADD_FUNC(IntRgbxDrawGlyphListAA),
 777     ADD_FUNC(IntRgbxToIntArgbConvert),
 778     ADD_FUNC(IntRgbxToIntArgbScaleConvert),
 779     ADD_FUNC(ThreeByteBgrToIntRgbxConvert),
 780     ADD_FUNC(ThreeByteBgrToIntRgbxScaleConvert),
 781     ADD_FUNC(ThreeByteBgrAlphaMaskFill),
 782     ADD_FUNC(ThreeByteBgrSrcMaskFill),
 783     ADD_FUNC(ThreeByteBgrSrcOverMaskFill),
 784     ADD_FUNC(ThreeByteBgrToIntArgbConvert),
 785     ADD_FUNC(ThreeByteBgrToIntArgbScaleConvert),
 786 };
 787 
 788 /***************************************************************/
 789 
 790 #define NUM_VIS_FUNCS sizeof(vis_func_pair_array)/sizeof(AnyFunc_pair)
 791 
 792 /***************************************************************/
 793 
 794 #define HASH_SIZE     1024 /* must be power of 2 and > number of functions */
 795 #define PTR_SHIFT     ((sizeof(void*) == 4) ? 2 : 3)
 796 #define HASH_FUNC(x)  (((jint)(x) >> PTR_SHIFT) & (HASH_SIZE - 1))
 797 #define NEXT_INDEX(j) ((j + 1) & (HASH_SIZE - 1))
 798 
 799 static AnyFunc* hash_table[HASH_SIZE];
 800 static AnyFunc* hash_table_vis[HASH_SIZE];
 801 
 802 /***************************************************************/
 803 
 804 static int initialized;
 805 static int usevis = JNI_TRUE;
 806 
 807 #ifdef __linux__
 808 #   define ULTRA_CHIP   "sparc64"
 809 #else
 810 #   define ULTRA_CHIP   "sun4u"
 811 #endif
 812 
 813 extern TransformInterpFunc *pBilinearFunc;
 814 extern TransformInterpFunc *pBicubicFunc;
 815 extern TransformInterpFunc vis_BilinearBlend;
 816 extern TransformInterpFunc vis_BicubicBlend;
 817 
 818 /*
 819  * This function returns a pointer to the VIS accelerated version
 820  * of the indicated C function if it exists and if the conditions
 821  * are correct to use the VIS functions.
 822  */
 823 AnyFunc* MapAccelFunction(AnyFunc *func_c)
 824 {
 825     jint i, j;
 826 
 827     if (!initialized) {
 828         struct utsname name;
 829 
 830         /*
 831          * Only use the vis loops if the environment variable is set.
 832          * Find out the machine name. If it is an SUN ultra, we
 833          * can use the vis library
 834          */
 835         if (uname(&name) < 0 || strcmp(name.machine, ULTRA_CHIP) != 0) {
 836             usevis = JNI_FALSE;
 837         } else {
 838             char *vis_env = getenv("J2D_USE_VIS_LOOPS");
 839             if (vis_env != 0) {
 840                 switch (*vis_env) {
 841                 case 'T':
 842                     fprintf(stderr, "VIS loops enabled\n");
 843                 case 't':
 844                     usevis = JNI_TRUE;
 845                     break;
 846 
 847                 case 'F':
 848                     fprintf(stderr, "VIS loops disabled\n");
 849                 case 'f':
 850                     usevis = JNI_FALSE;
 851                     break;
 852 
 853                 default:
 854                     fprintf(stderr, "VIS loops %s by default\n",
 855                             usevis ? "enabled" : "disabled");
 856                     break;
 857                 }
 858             }
 859         }
 860         initialized = 1;
 861         if (usevis) {
 862             /* fill hash table */
 863             memset(hash_table, 0, sizeof(hash_table));
 864             for (i = 0; i < NUM_VIS_FUNCS; i++) {
 865                 AnyFunc* func = vis_func_pair_array[i].func_c;
 866                 j = HASH_FUNC(func);
 867                 while (hash_table[j] != NULL) {
 868                     j = NEXT_INDEX(j);
 869                 }
 870                 hash_table[j] = func;
 871                 hash_table_vis[j] = vis_func_pair_array[i].func_vis;
 872             }
 873             pBilinearFunc = vis_BilinearBlend;
 874             pBicubicFunc = vis_BicubicBlend;
 875         }
 876     }
 877     if (!usevis) {
 878         return func_c;
 879     }
 880 
 881     j = HASH_FUNC(func_c);
 882     while (hash_table[j] != NULL) {
 883         if (hash_table[j] == func_c) {
 884             return hash_table_vis[j];
 885         }
 886         j = NEXT_INDEX(j);
 887     }
 888 
 889     return func_c;
 890 }
 891 
 892 /***************************************************************/