MCPcopy Create free account
hub / github.com/dolphin-emu/dolphin / EncodeRGBA6

Function EncodeRGBA6

Source/Core/VideoBackends/Software/TextureEncoder.cpp:260–296  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258 } \
259
260static void EncodeRGBA6(u8 *dst, u8 *src, u32 format)
261{
262 u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize;
263 s32 tSpan, sBlkSpan, tBlkSpan, writeStride;
264 u8 r, g, b, a;
265 u32 readStride = 3;
266 u8 *dstBlockStart = dst;
267
268 switch (format)
269 {
270 case GX_TF_I4:
271 SetBlockDimensions(3, 3, &sBlkCount, &tBlkCount, &sBlkSize, &tBlkSize);
272 SetSpans(sBlkSize, tBlkSize, &tSpan, &sBlkSpan, &tBlkSpan, &writeStride);
273 sBlkSize /= 2;
274 ENCODE_LOOP_BLOCKS
275 {
276 RGBA_to_RGB8(src, &r, &g, &b);
277 src += readStride;
278 *dst = RGB8_to_I(r, g, b) & 0xf0;
279
280 RGBA_to_RGB8(src, &r, &g, &b);
281 src += readStride;
282 *dst |= RGB8_to_I(r, g, b) >> 4;
283 dst++;
284 }
285 ENCODE_LOOP_SPANS
286 break;
287
288 case GX_TF_I8:
289 SetBlockDimensions(3, 2, &sBlkCount, &tBlkCount, &sBlkSize, &tBlkSize);
290 SetSpans(sBlkSize, tBlkSize, &tSpan, &sBlkSpan, &tBlkSpan, &writeStride);
291 ENCODE_LOOP_BLOCKS
292 {
293 RGBA_to_RGB8(src, &r, &g, &b);
294 src += readStride;
295 *dst++ = RGB8_to_I(r, g, b);
296 }
297 ENCODE_LOOP_SPANS
298 break;
299

Callers 1

TextureEncoder.cppFile · 0.85

Calls 4

SetBlockDimensionsFunction · 0.85
SetSpansFunction · 0.85
RGBA_to_RGB8Function · 0.85
RGB8_to_IFunction · 0.85

Tested by

no test coverage detected