Home | History | Annotate | Download | only in hermes
      1 /*
      2    Header definitions for the x86 routines for the HERMES library
      3    Copyright (c) 1998 Christian Nentwich (brn (at) eleet.mcb.at)
      4    This source code is licensed under the GNU LGPL
      5 
      6    Please refer to the file COPYING.LIB contained in the distribution for
      7    licensing conditions
      8 */
      9 
     10 #ifndef __HERMES_HEAD_X86__
     11 #define __HERMES_HEAD_X86__
     12 
     13 
     14 #ifdef X86_ASSEMBLER
     15 
     16 /* If you can't stand IFDEFS, then close your eyes now, please :) */
     17 
     18 /* Ok, we start with normal function definitions */
     19 #ifdef __cplusplus
     20 extern "C" {
     21 #endif
     22 
     23 
     24 void STACKCALL ConvertX86(HermesConverterInterface *);
     25 void STACKCALL ClearX86_32(HermesClearInterface *);
     26 void STACKCALL ClearX86_24(HermesClearInterface *);
     27 void STACKCALL ClearX86_16(HermesClearInterface *);
     28 void STACKCALL ClearX86_8(HermesClearInterface *);
     29 
     30 int STACKCALL Hermes_X86_CPU();
     31 
     32 void ConvertX86p32_32BGR888();
     33 void ConvertX86p32_32RGBA888();
     34 void ConvertX86p32_32BGRA888();
     35 void ConvertX86p32_24RGB888();
     36 void ConvertX86p32_24BGR888();
     37 void ConvertX86p32_16RGB565();
     38 void ConvertX86p32_16BGR565();
     39 void ConvertX86p32_16RGB555();
     40 void ConvertX86p32_16BGR555();
     41 void ConvertX86p32_8RGB332();
     42 
     43 void ConvertX86p16_32RGB888();
     44 void ConvertX86p16_32BGR888();
     45 void ConvertX86p16_32RGBA888();
     46 void ConvertX86p16_32BGRA888();
     47 void ConvertX86p16_24RGB888();
     48 void ConvertX86p16_24BGR888();
     49 void ConvertX86p16_16BGR565();
     50 void ConvertX86p16_16RGB555();
     51 void ConvertX86p16_16BGR555();
     52 void ConvertX86p16_8RGB332();
     53 
     54 void CopyX86p_4byte();
     55 void CopyX86p_3byte();
     56 void CopyX86p_2byte();
     57 void CopyX86p_1byte();
     58 
     59 void ConvertX86pI8_32();
     60 void ConvertX86pI8_24();
     61 void ConvertX86pI8_16();
     62 
     63 extern int ConvertX86p16_32RGB888_LUT_X86[512];
     64 extern int ConvertX86p16_32BGR888_LUT_X86[512];
     65 extern int ConvertX86p16_32RGBA888_LUT_X86[512];
     66 extern int ConvertX86p16_32BGRA888_LUT_X86[512];
     67 
     68 #ifdef __cplusplus
     69 }
     70 #endif
     71 
     72 
     73 
     74 
     75 /* Now fix up the ELF underscore problem */
     76 
     77 #if defined(__ELF__) && defined(__GNUC__)
     78   #ifdef __cplusplus
     79   extern "C" {
     80   #endif
     81 
     82   extern int _Hermes_X86_CPU();
     83 
     84   extern void _ConvertX86(HermesConverterInterface *);
     85 
     86   extern void _ConvertX86p32_32BGR888();
     87   extern void _ConvertX86p32_32RGBA888();
     88   extern void _ConvertX86p32_32BGRA888();
     89   extern void _ConvertX86p32_24RGB888();
     90   extern void _ConvertX86p32_24BGR888();
     91   extern void _ConvertX86p32_16RGB565();
     92   extern void _ConvertX86p32_16BGR565();
     93   extern void _ConvertX86p32_16RGB555();
     94   extern void _ConvertX86p32_16BGR555();
     95   extern void _ConvertX86p32_8RGB332();
     96 
     97   extern void _ConvertX86p16_16BGR565();
     98   extern void _ConvertX86p16_16RGB555();
     99   extern void _ConvertX86p16_16BGR555();
    100   extern void _ConvertX86p16_8RGB332();
    101 
    102 
    103   #define Hermes_X86_CPU _Hermes_X86_CPU
    104 
    105   #define ConvertX86 _ConvertX86
    106 
    107   #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888
    108   #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888
    109   #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888
    110   #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888
    111   #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888
    112   #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565
    113   #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565
    114   #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555
    115   #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555
    116   #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332
    117 
    118   #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565
    119   #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555
    120   #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555
    121   #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332
    122 
    123 
    124   #ifdef __cplusplus
    125   }
    126   #endif
    127 
    128 #endif /* ELF & GNU */
    129 
    130 
    131 
    132 /* Make it run with WATCOM C */
    133 #ifdef __WATCOMC__
    134 #pragma warning 601 9
    135 
    136 #pragma aux Hermes_X86_CPU "_*"
    137 
    138 #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
    139 #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
    140 #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
    141 #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
    142 #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
    143 
    144 #pragma aux ConvertX86p32_32BGR888 "_*"
    145 #pragma aux ConvertX86p32_32RGBA888 "_*"
    146 #pragma aux ConvertX86p32_32BGRA888 "_*"
    147 #pragma aux ConvertX86p32_24RGB888 "_*"
    148 #pragma aux ConvertX86p32_24BGR888 "_*"
    149 #pragma aux ConvertX86p32_16RGB565 "_*"
    150 #pragma aux ConvertX86p32_16BGR565 "_*"
    151 #pragma aux ConvertX86p32_16RGB555 "_*"
    152 #pragma aux ConvertX86p32_16BGR555 "_*"
    153 #pragma aux ConvertX86p32_8RGB332 "_*"
    154 
    155 #pragma aux ConvertX86p16_32RGB888 "_*"
    156 #pragma aux ConvertX86p16_32BGR888 "_*"
    157 #pragma aux ConvertX86p16_32RGBA888 "_*"
    158 #pragma aux ConvertX86p16_32BGRA888 "_*"
    159 #pragma aux ConvertX86p16_24RGB888 "_*"
    160 #pragma aux ConvertX86p16_24BGR888 "_*"
    161 #pragma aux ConvertX86p16_16BGR565 "_*"
    162 #pragma aux ConvertX86p16_16RGB555 "_*"
    163 #pragma aux ConvertX86p16_16BGR555 "_*"
    164 #pragma aux ConvertX86p16_8RGB332 "_*"
    165 
    166 #pragma aux CopyX86p_4byte "_*"
    167 #pragma aux CopyX86p_3byte "_*"
    168 #pragma aux CopyX86p_2byte "_*"
    169 #pragma aux CopyX86p_1byte "_*"
    170 
    171 #pragma aux ConvertX86pI8_32 "_*"
    172 #pragma aux ConvertX86pI8_24 "_*"
    173 #pragma aux ConvertX86pI8_16 "_*"
    174 
    175 #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
    176 #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
    177 #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
    178 #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
    179 
    180 #endif /* __WATCOMC__ */
    181 
    182 
    183 #endif /* X86_ASSEMBLER */
    184 
    185 
    186 #endif
    187