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");