start mmap'ing vram, with hugetlb if possible
[pcsx_rearmed.git] / plugins / gpulib / cspace.c
1 #include "cspace.h"
2
3 /*
4  * note: these are intended for testing and should be avoided
5  * in favor of NEON version or platform-specific conversion
6  */
7
8 void bgr555_to_rgb565(void *dst_, const void *src_, int bytes)
9 {
10         const unsigned int *src = src_;
11         unsigned int *dst = dst_;
12         unsigned int p;
13         int x;
14
15         for (x = 0; x < bytes / 4; x++) {
16                 p = src[x];
17                 p = ((p & 0x7c007c00) >> 10) | ((p & 0x03e003e0) << 1)
18                         | ((p & 0x001f001f) << 11);
19                 dst[x] = p;
20         }
21 }
22
23 void bgr888_to_rgb565(void *dst_, const void *src_, int bytes)
24 {
25         const unsigned char *src = src_;
26         unsigned int *dst = dst_;
27         unsigned int r1, g1, b1, r2, g2, b2;
28
29         for (; bytes >= 6; bytes -= 6, src += 6, dst++) {
30                 r1 = src[0] & 0xf8;
31                 g1 = src[1] & 0xfc;
32                 b1 = src[2] & 0xf8;
33                 r2 = src[3] & 0xf8;
34                 g2 = src[4] & 0xfc;
35                 b2 = src[5] & 0xf8;
36                 *dst = (r2 << 24) | (g2 << 19) | (b2 << 13) |
37                         (r1 << 8) | (g1 << 3) | (b1 >> 3);
38         }
39 }
40
41 // TODO?
42 void rgb888_to_rgb565(void *dst, const void *src, int bytes) {}
43 void bgr888_to_rgb888(void *dst, const void *src, int bytes) {}
44