Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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
  196.