From 85e1c2d573ff98e688331b4f1218511c623fe218 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sat, 3 Aug 2013 01:15:08 -0700 Subject: [PATCH] Exploit cache locality for slightly faster drawing --- src/gba/renderers/video-software.c | 4 ++-- src/gba/renderers/video-software.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 0d8d5e298..4c470484c 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -378,11 +378,10 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render backdrop |= softwareRenderer->variantPalette[0]; } for (int x = 0; x < VIDEO_HORIZONTAL_PIXELS; ++x) { - row[x] = backdrop; + softwareRenderer->row[x] = backdrop; } } - softwareRenderer->row = row; memset(softwareRenderer->spriteLayer, 0, sizeof(softwareRenderer->spriteLayer)); softwareRenderer->windows[0].endX = VIDEO_HORIZONTAL_PIXELS; @@ -400,6 +399,7 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render } _drawScanline(softwareRenderer, y); + memcpy(row, softwareRenderer->row, VIDEO_HORIZONTAL_PIXELS * sizeof(*row)); } static void GBAVideoSoftwareRendererFinishFrame(struct GBAVideoRenderer* renderer) { diff --git a/src/gba/renderers/video-software.h b/src/gba/renderers/video-software.h index f6230194a..4d710ab4c 100644 --- a/src/gba/renderers/video-software.h +++ b/src/gba/renderers/video-software.h @@ -86,6 +86,7 @@ struct GBAVideoSoftwareRenderer { union GBARegisterDISPCNT dispcnt; + uint32_t row[VIDEO_HORIZONTAL_PIXELS]; uint32_t spriteLayer[VIDEO_HORIZONTAL_PIXELS]; // BLDCNT @@ -118,7 +119,6 @@ struct GBAVideoSoftwareRenderer { struct GBAVideoSoftwareBackground bg[4]; - uint32_t* row; int start; int end;