Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
rdpPtr
rdpGetDevFromScreen(ScreenPtr pScreen)
{
    ScrnInfoPtr pScrn;
    rdpPtr dev;

    if (pScreen == NULL)
    {
        pScrn = xf86Screens[0];
    }
    else
    {
        pScrn = xf86Screens[pScreen->myNum];
    }
    dev = XRDPPTR(pScrn);
    return dev;
}