Mercurial > mplayer.hg
comparison libvo/osd.c @ 28921:62f0032e736a
Get rid of pointless preprocessor condition indirection and use ARCH_X86
directly instead of CAN_COMPILE_X86_ASM.
author | diego |
---|---|
date | Sun, 15 Mar 2009 10:01:02 +0000 |
parents | 7681eab10aea |
children | 06540eb5ef6a |
comparison
equal
deleted
inserted
replaced
28920:49b76e202f98 | 28921:62f0032e736a |
---|---|
28 #include "mp_msg.h" | 28 #include "mp_msg.h" |
29 #include <inttypes.h> | 29 #include <inttypes.h> |
30 #include "cpudetect.h" | 30 #include "cpudetect.h" |
31 | 31 |
32 #if ARCH_X86 | 32 #if ARCH_X86 |
33 #define CAN_COMPILE_X86_ASM | |
34 #endif | |
35 | |
36 #ifdef CAN_COMPILE_X86_ASM | |
37 static const uint64_t bFF __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL; | 33 static const uint64_t bFF __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL; |
38 static const unsigned long long mask24lh __attribute__((aligned(8))) = 0xFFFF000000000000ULL; | 34 static const unsigned long long mask24lh __attribute__((aligned(8))) = 0xFFFF000000000000ULL; |
39 static const unsigned long long mask24hl __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL; | 35 static const unsigned long long mask24hl __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL; |
40 #endif | 36 #endif |
41 | 37 |
43 //Plain C versions | 39 //Plain C versions |
44 #if !HAVE_MMX || defined (RUNTIME_CPUDETECT) | 40 #if !HAVE_MMX || defined (RUNTIME_CPUDETECT) |
45 #define COMPILE_C | 41 #define COMPILE_C |
46 #endif | 42 #endif |
47 | 43 |
48 #ifdef CAN_COMPILE_X86_ASM | 44 #if ARCH_X86 |
49 | 45 |
50 #if (HAVE_MMX && !HAVE_AMD3DNOW && !HAVE_MMX2) || defined (RUNTIME_CPUDETECT) | 46 #if (HAVE_MMX && !HAVE_AMD3DNOW && !HAVE_MMX2) || defined (RUNTIME_CPUDETECT) |
51 #define COMPILE_MMX | 47 #define COMPILE_MMX |
52 #endif | 48 #endif |
53 | 49 |
56 #endif | 52 #endif |
57 | 53 |
58 #if (HAVE_AMD3DNOW && !HAVE_MMX2) || defined (RUNTIME_CPUDETECT) | 54 #if (HAVE_AMD3DNOW && !HAVE_MMX2) || defined (RUNTIME_CPUDETECT) |
59 #define COMPILE_3DNOW | 55 #define COMPILE_3DNOW |
60 #endif | 56 #endif |
61 #endif //CAN_COMPILE_X86_ASM | 57 |
58 #endif /* ARCH_X86 */ | |
62 | 59 |
63 #undef HAVE_MMX | 60 #undef HAVE_MMX |
64 #undef HAVE_MMX2 | 61 #undef HAVE_MMX2 |
65 #undef HAVE_AMD3DNOW | 62 #undef HAVE_AMD3DNOW |
66 #define HAVE_MMX 0 | 63 #define HAVE_MMX 0 |
67 #define HAVE_MMX2 0 | 64 #define HAVE_MMX2 0 |
68 #define HAVE_AMD3DNOW 0 | 65 #define HAVE_AMD3DNOW 0 |
69 | 66 |
70 #ifndef CAN_COMPILE_X86_ASM | 67 #if ! ARCH_X86 |
71 | 68 |
72 #ifdef COMPILE_C | 69 #ifdef COMPILE_C |
73 #undef HAVE_MMX | 70 #undef HAVE_MMX |
74 #undef HAVE_MMX2 | 71 #undef HAVE_MMX2 |
75 #undef HAVE_AMD3DNOW | 72 #undef HAVE_AMD3DNOW |
132 #define HAVE_AMD3DNOW 1 | 129 #define HAVE_AMD3DNOW 1 |
133 #define RENAME(a) a ## _3DNow | 130 #define RENAME(a) a ## _3DNow |
134 #include "osd_template.c" | 131 #include "osd_template.c" |
135 #endif | 132 #endif |
136 | 133 |
137 #endif //CAN_COMPILE_X86_ASM | 134 #endif /* ARCH_X86 */ |
138 | 135 |
139 void vo_draw_alpha_yv12(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 136 void vo_draw_alpha_yv12(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
140 #ifdef RUNTIME_CPUDETECT | 137 #ifdef RUNTIME_CPUDETECT |
141 #ifdef CAN_COMPILE_X86_ASM | 138 #if ARCH_X86 |
142 // ordered by speed / fastest first | 139 // ordered by speed / fastest first |
143 if(gCpuCaps.hasMMX2) | 140 if(gCpuCaps.hasMMX2) |
144 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride); | 141 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride); |
145 else if(gCpuCaps.has3DNow) | 142 else if(gCpuCaps.has3DNow) |
146 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride); | 143 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride); |
166 #endif //!RUNTIME_CPUDETECT | 163 #endif //!RUNTIME_CPUDETECT |
167 } | 164 } |
168 | 165 |
169 void vo_draw_alpha_yuy2(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 166 void vo_draw_alpha_yuy2(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
170 #ifdef RUNTIME_CPUDETECT | 167 #ifdef RUNTIME_CPUDETECT |
171 #ifdef CAN_COMPILE_X86_ASM | 168 #if ARCH_X86 |
172 // ordered by speed / fastest first | 169 // ordered by speed / fastest first |
173 if(gCpuCaps.hasMMX2) | 170 if(gCpuCaps.hasMMX2) |
174 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride); | 171 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride); |
175 else if(gCpuCaps.has3DNow) | 172 else if(gCpuCaps.has3DNow) |
176 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride); | 173 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride); |
196 #endif //!RUNTIME_CPUDETECT | 193 #endif //!RUNTIME_CPUDETECT |
197 } | 194 } |
198 | 195 |
199 void vo_draw_alpha_uyvy(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 196 void vo_draw_alpha_uyvy(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
200 #ifdef RUNTIME_CPUDETECT | 197 #ifdef RUNTIME_CPUDETECT |
201 #ifdef CAN_COMPILE_X86_ASM | 198 #if ARCH_X86 |
202 // ordered by speed / fastest first | 199 // ordered by speed / fastest first |
203 if(gCpuCaps.hasMMX2) | 200 if(gCpuCaps.hasMMX2) |
204 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride); | 201 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride); |
205 else if(gCpuCaps.has3DNow) | 202 else if(gCpuCaps.has3DNow) |
206 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride); | 203 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride); |
226 #endif //!RUNTIME_CPUDETECT | 223 #endif //!RUNTIME_CPUDETECT |
227 } | 224 } |
228 | 225 |
229 void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 226 void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
230 #ifdef RUNTIME_CPUDETECT | 227 #ifdef RUNTIME_CPUDETECT |
231 #ifdef CAN_COMPILE_X86_ASM | 228 #if ARCH_X86 |
232 // ordered by speed / fastest first | 229 // ordered by speed / fastest first |
233 if(gCpuCaps.hasMMX2) | 230 if(gCpuCaps.hasMMX2) |
234 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride); | 231 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride); |
235 else if(gCpuCaps.has3DNow) | 232 else if(gCpuCaps.has3DNow) |
236 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride); | 233 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride); |
256 #endif //!RUNTIME_CPUDETECT | 253 #endif //!RUNTIME_CPUDETECT |
257 } | 254 } |
258 | 255 |
259 void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 256 void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
260 #ifdef RUNTIME_CPUDETECT | 257 #ifdef RUNTIME_CPUDETECT |
261 #ifdef CAN_COMPILE_X86_ASM | 258 #if ARCH_X86 |
262 // ordered by speed / fastest first | 259 // ordered by speed / fastest first |
263 if(gCpuCaps.hasMMX2) | 260 if(gCpuCaps.hasMMX2) |
264 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride); | 261 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride); |
265 else if(gCpuCaps.has3DNow) | 262 else if(gCpuCaps.has3DNow) |
266 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride); | 263 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride); |
301 #endif | 298 #endif |
302 //FIXME the optimized stuff is a lie for 15/16bpp as they aren't optimized yet | 299 //FIXME the optimized stuff is a lie for 15/16bpp as they aren't optimized yet |
303 if( mp_msg_test(MSGT_OSD,MSGL_V) ) | 300 if( mp_msg_test(MSGT_OSD,MSGL_V) ) |
304 { | 301 { |
305 #ifdef RUNTIME_CPUDETECT | 302 #ifdef RUNTIME_CPUDETECT |
306 #ifdef CAN_COMPILE_X86_ASM | 303 #if ARCH_X86 |
307 // ordered per speed fasterst first | 304 // ordered per speed fasterst first |
308 if(gCpuCaps.hasMMX2) | 305 if(gCpuCaps.hasMMX2) |
309 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); | 306 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); |
310 else if(gCpuCaps.has3DNow) | 307 else if(gCpuCaps.has3DNow) |
311 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit 3DNow) Optimized OnScreenDisplay\n"); | 308 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit 3DNow) Optimized OnScreenDisplay\n"); |