Bool rdpSimdInit(ScreenPtr pScreen, ScrnInfoPtr pScrn) { rdpPtr dev; dev = XRDPPTR(pScrn); /* assign functions */ LLOGLN(0, ("rdpSimdInit: assigning yuv functions")); dev->yv12_to_rgb32 = YV12_to_RGB32; dev->i420_to_rgb32 = I420_to_RGB32; dev->yuy2_to_rgb32 = YUY2_to_RGB32; dev->uyvy_to_rgb32 = UYVY_to_RGB32; dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box; #if SIMD_USE_ACCEL if (g_simd_use_accel) { #if defined(__x86_64__) || defined(__AMD64__) || defined (_M_AMD64) int ax, bx, cx, dx; cpuid_amd64(1, 0, &ax, &bx, &cx, &dx); LLOGLN(0, ("rdpSimdInit: cpuid ax 1 cx 0 return ax 0x%8.8x bx " "0x%8.8x cx 0x%8.8x dx 0x%8.8x", ax, bx, cx, dx)); if (dx & (1 << 26)) /* SSE 2 */ { dev->yv12_to_rgb32 = yv12_to_rgb32_amd64_sse2; dev->i420_to_rgb32 = i420_to_rgb32_amd64_sse2; dev->yuy2_to_rgb32 = yuy2_to_rgb32_amd64_sse2; dev->uyvy_to_rgb32 = uyvy_to_rgb32_amd64_sse2; dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box_amd64_sse2; LLOGLN(0, ("rdpSimdInit: sse2 amd64 yuv functions assigned")); } #elif defined(__x86__) || defined(_M_IX86) || defined(__i386__) int ax, bx, cx, dx; cpuid_x86(1, 0, &ax, &bx, &cx, &dx); LLOGLN(0, ("rdpSimdInit: cpuid ax 1 cx 0 return ax 0x%8.8x bx " "0x%8.8x cx 0x%8.8x dx 0x%8.8x", ax, bx, cx, dx)); if (dx & (1 << 26)) /* SSE 2 */ { dev->yv12_to_rgb32 = yv12_to_rgb32_x86_sse2; dev->i420_to_rgb32 = i420_to_rgb32_x86_sse2; dev->yuy2_to_rgb32 = yuy2_to_rgb32_x86_sse2; dev->uyvy_to_rgb32 = uyvy_to_rgb32_x86_sse2; dev->a8r8g8b8_to_a8b8g8r8_box = a8r8g8b8_to_a8b8g8r8_box_x86_sse2; LLOGLN(0, ("rdpSimdInit: sse2 x86 yuv functions assigned")); } #endif } #endif return 1; }
rdpPtr rdpGetDevFromScreen(ScreenPtr pScreen) { ScrnInfoPtr pScrn; rdpPtr dev; if (pScreen == NULL) { pScrn = xf86Screens[0]; } else { pScrn = xf86Screens[pScreen->myNum]; } dev = XRDPPTR(pScrn); return dev; }