From 638918b4df619bfb3dd09e107762081b03e72db9 Mon Sep 17 00:00:00 2001 From: John Lorentzson Date: Sat, 12 Apr 2025 17:44:22 +0200 Subject: [PATCH] Big endian changes --- src/Backends/Rendering/Software.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Backends/Rendering/Software.cpp b/src/Backends/Rendering/Software.cpp index e992840c..7ef89d06 100644 --- a/src/Backends/Rendering/Software.cpp +++ b/src/Backends/Rendering/Software.cpp @@ -121,9 +121,9 @@ void RenderBackend_UploadSurface(RenderBackend_Surface *surface, const unsigned surface->pixels[dstl + dstr + 1] = pixels[srcl + srcr + 1]; surface->pixels[dstl + dstr + 2] = pixels[srcl + srcr + 0]; #else - surface->pixels[dstl + dstr + 1] = pixels[srcl + srcr + 0]; + surface->pixels[dstl + dstr + 1] = pixels[srcl + srcr + 2]; surface->pixels[dstl + dstr + 2] = pixels[srcl + srcr + 1]; - surface->pixels[dstl + dstr + 3] = pixels[srcl + srcr + 2]; + surface->pixels[dstl + dstr + 3] = pixels[srcl + srcr + 0]; #endif } } @@ -179,7 +179,17 @@ ATTRIBUTE_HOT void RenderBackend_Blit(RenderBackend_Surface *source_surface, con for (long i = 0; i < rect_clamped.right - rect_clamped.left; ++i) { - if (UNLIKELY(source_pointer[0] == 0 && source_pointer[1] == 0 && source_pointer[2] == 0)) // Assumes the colour key will always be #000000 (black) +#ifdef LITTLE_ENDIAN + register char red = source_pointer[0]; + register char green = source_pointer[1]; + register char blue = source_pointer[2]; +#else + register char red = source_pointer[1]; + register char green = source_pointer[2]; + register char blue = source_pointer[3]; +#endif + + if (UNLIKELY(red == 0 && green == 0 && blue == 0)) // Assumes the colour key will always be #000000 (black) { source_pointer += 4; destination_pointer += 4;