• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2    Header definitions for the x86 routines for the HERMES library
3    Copyright (c) 1998 Christian Nentwich (brn@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