Exploit cache locality for slightly faster drawing

This commit is contained in:
Jeffrey Pfau 2013-08-03 01:15:08 -07:00
parent 6b86cdf9ef
commit 85e1c2d573
2 changed files with 3 additions and 3 deletions

View File

@ -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) {

View File

@ -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;