96 const std::vector<uint8_t>& linear_data) {
97 size_t num_tiles = linear_data.size() / 64;
98 std::vector<uint8_t> planar_data(num_tiles * 32);
100 for (
size_t tile = 0; tile < num_tiles; ++tile) {
101 const uint8_t* src = linear_data.data() + tile * 64;
102 uint8_t* dst = planar_data.data() + tile * 32;
104 for (
int row = 0; row < 8; ++row) {
105 uint8_t bp0 = 0, bp1 = 0, bp2 = 0, bp3 = 0;
107 for (
int col = 0; col < 8; ++col) {
108 uint8_t pixel = src[row * 8 + col] & 0x0F;
111 bp0 |= ((pixel >> 0) & 1) << bit;
112 bp1 |= ((pixel >> 1) & 1) << bit;
113 bp2 |= ((pixel >> 2) & 1) << bit;
114 bp3 |= ((pixel >> 3) & 1) << bit;
119 dst[row * 2 + 1] = bp1;
120 dst[16 + row * 2] = bp2;
121 dst[16 + row * 2 + 1] = bp3;