Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 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 int32 ConvertX86p16_32RGB888_LUT_X86[512];
64
extern int32 ConvertX86p16_32BGR888_LUT_X86[512];
65
extern int32 ConvertX86p16_32RGBA888_LUT_X86[512];
66
extern int32 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
  int Hermes_X86_CPU() __attribute__ ((alias ("_Hermes_X86_CPU")));
83
 
84
  void ConvertX86(HermesConverterInterface *) __attribute__ ((alias ("_ConvertX86")));
85
 
86
#if 0
87
  void ClearX86_32(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_32")));
88
  void ClearX86_24(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_24")));
89
  void ClearX86_16(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_16")));
90
  void ClearX86_8(HermesClearInterface *)  __attribute__ ((alias ("_ClearX86_8")));
91
#endif
92
 
93
  void ConvertX86p32_32BGR888() __attribute__ ((alias ("_ConvertX86p32_32BGR888")));
94
  void ConvertX86p32_32RGBA888() __attribute__ ((alias ("_ConvertX86p32_32RGBA888")));
95
  void ConvertX86p32_32BGRA888() __attribute__ ((alias ("_ConvertX86p32_32BGRA888")));
96
  void ConvertX86p32_24RGB888() __attribute__ ((alias ("_ConvertX86p32_24RGB888")));
97
  void ConvertX86p32_24BGR888() __attribute__ ((alias ("_ConvertX86p32_24BGR888")));
98
  void ConvertX86p32_16RGB565() __attribute__ ((alias ("_ConvertX86p32_16RGB565")));
99
  void ConvertX86p32_16BGR565() __attribute__ ((alias ("_ConvertX86p32_16BGR565")));
100
  void ConvertX86p32_16RGB555() __attribute__ ((alias ("_ConvertX86p32_16RGB555")));
101
  void ConvertX86p32_16BGR555() __attribute__ ((alias ("_ConvertX86p32_16BGR555")));
102
  void ConvertX86p32_8RGB332() __attribute__ ((alias ("_ConvertX86p32_8RGB332")));
103
 
104
#if 0
105
  void ConvertX86p16_32RGB888() __attribute__ ((alias ("_ConvertX86p16_32RGB888")));
106
  void ConvertX86p16_32BGR888() __attribute__ ((alias ("_ConvertX86p16_32BGR888")));
107
  void ConvertX86p16_32RGBA888() __attribute__ ((alias ("_ConvertX86p16_32RGBA888")));
108
  void ConvertX86p16_32BGRA888() __attribute__ ((alias ("_ConvertX86p16_32BGRA888")));
109
  void ConvertX86p16_24RGB888() __attribute__ ((alias ("_ConvertX86p16_24RGB888")));
110
  void ConvertX86p16_24BGR888() __attribute__ ((alias ("_ConvertX86p16_24BGR888")));
111
#endif
112
  void ConvertX86p16_16BGR565() __attribute__ ((alias ("_ConvertX86p16_16BGR565")));
113
  void ConvertX86p16_16RGB555() __attribute__ ((alias ("_ConvertX86p16_16RGB555")));
114
  void ConvertX86p16_16BGR555() __attribute__ ((alias ("_ConvertX86p16_16BGR555")));
115
  void ConvertX86p16_8RGB332() __attribute__ ((alias ("_ConvertX86p16_8RGB332")));
116
 
117
#if 0
118
  void CopyX86p_4byte() __attribute__ ((alias ("_CopyX86p_4byte")));
119
  void CopyX86p_3byte() __attribute__ ((alias ("_CopyX86p_3byte")));
120
  void CopyX86p_2byte() __attribute__ ((alias ("_CopyX86p_2byte")));
121
  void CopyX86p_1byte() __attribute__ ((alias ("_CopyX86p_1byte")));
122
 
123
  void ConvertX86pI8_32() __attribute__ ((alias ("_ConvertX86pI8_32")));
124
  void ConvertX86pI8_24() __attribute__ ((alias ("_ConvertX86pI8_24")));
125
  void ConvertX86pI8_16() __attribute__ ((alias ("_ConvertX86pI8_16")));
126
 
127
  extern int32 ConvertX86p16_32RGB888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGB888_LUT_X86")));
128
  extern int32 ConvertX86p16_32BGR888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGR888_LUT_X86")));
129
  extern int32 ConvertX86p16_32RGBA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGBA888_LUT_X86")));
130
  extern int32 ConvertX86p16_32BGRA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGRA888_LUT_X86")));
131
#endif
132
 
133
  #ifdef __cplusplus
134
  }
135
  #endif
136
 
137
#endif /* ELF & GNU */
138
 
139
 
140
 
141
/* Make it run with WATCOM C */
142
#ifdef __WATCOMC__
143
#pragma warning 601 9
144
 
145
#pragma aux Hermes_X86_CPU "_*"
146
 
147
#pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
148
#pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
149
#pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
150
#pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
151
#pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
152
 
153
#pragma aux ConvertX86p32_32BGR888 "_*"
154
#pragma aux ConvertX86p32_32RGBA888 "_*"
155
#pragma aux ConvertX86p32_32BGRA888 "_*"
156
#pragma aux ConvertX86p32_24RGB888 "_*"
157
#pragma aux ConvertX86p32_24BGR888 "_*"
158
#pragma aux ConvertX86p32_16RGB565 "_*"
159
#pragma aux ConvertX86p32_16BGR565 "_*"
160
#pragma aux ConvertX86p32_16RGB555 "_*"
161
#pragma aux ConvertX86p32_16BGR555 "_*"
162
#pragma aux ConvertX86p32_8RGB332 "_*"
163
 
164
#pragma aux ConvertX86p16_32RGB888 "_*"
165
#pragma aux ConvertX86p16_32BGR888 "_*"
166
#pragma aux ConvertX86p16_32RGBA888 "_*"
167
#pragma aux ConvertX86p16_32BGRA888 "_*"
168
#pragma aux ConvertX86p16_24RGB888 "_*"
169
#pragma aux ConvertX86p16_24BGR888 "_*"
170
#pragma aux ConvertX86p16_16BGR565 "_*"
171
#pragma aux ConvertX86p16_16RGB555 "_*"
172
#pragma aux ConvertX86p16_16BGR555 "_*"
173
#pragma aux ConvertX86p16_8RGB332 "_*"
174
 
175
#pragma aux CopyX86p_4byte "_*"
176
#pragma aux CopyX86p_3byte "_*"
177
#pragma aux CopyX86p_2byte "_*"
178
#pragma aux CopyX86p_1byte "_*"
179
 
180
#pragma aux ConvertX86pI8_32 "_*"
181
#pragma aux ConvertX86pI8_24 "_*"
182
#pragma aux ConvertX86pI8_16 "_*"
183
 
184
#pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
185
#pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
186
#pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
187
#pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
188
 
189
#endif /* __WATCOMC__ */
190
 
191
 
192
#endif /* X86_ASSEMBLER */
193
 
194
 
195
#endif