From 53d9e6b43213d9eed2c7bc5b38d16f4fdad37bc3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 20 May 2019 13:15:17 -0700 Subject: [PATCH] GBA Video: Batch VRAM upload --- src/gba/renderers/gl.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gba/renderers/gl.c b/src/gba/renderers/gl.c index 0822bc64c..e7941f161 100644 --- a/src/gba/renderers/gl.c +++ b/src/gba/renderers/gl.c @@ -994,13 +994,17 @@ void GBAVideoGLRendererDrawScanline(struct GBAVideoRenderer* renderer, int y) { glRenderer->paletteDirty = false; } int i; - for (i = 0; i < 24; ++i) { + int first = -1; + glBindTexture(GL_TEXTURE_2D, glRenderer->vramTex); + for (i = 0; i < 25; ++i) { if (!(glRenderer->vramDirty & (1 << i))) { - continue; + if (first >= 0) { + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 8 * first, 256, 8 * (i - first), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, &glRenderer->d.vram[2048 * first]); + first = -1; + } + } else if (first < 0) { + first = i; } - // TODO: PBOs - glBindTexture(GL_TEXTURE_2D, glRenderer->vramTex); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 8 * i, 256, 8, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, &glRenderer->d.vram[2048 * i]); } glRenderer->vramDirty = 0;