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