From 99a346439c7d1574e1aed4a16e3f2d6c8856c825 Mon Sep 17 00:00:00 2001 From: Sylvain <sylvain.becker@gmail.com> Date: Fri, 24 Sep 2021 09:42:04 +0200 Subject: [PATCH] OpenGLES2: LINES and POINTS successive commands are combined into a single draw call (using the same case for DRAW_GEOMETRY) --- src/render/opengles2/SDL_render_gles2.c | 26 +++++++++---------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 54be98dab..57cf6a9a3 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1118,22 +1118,6 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver break; } - case SDL_RENDERCMD_DRAW_POINTS: { - if (SetDrawState(data, cmd, GLES2_IMAGESOURCE_SOLID) == 0) { - data->glDrawArrays(GL_POINTS, 0, (GLsizei) cmd->data.draw.count); - } - break; - } - - case SDL_RENDERCMD_DRAW_LINES: { - const size_t count = cmd->data.draw.count; - SDL_assert(count >= 2); - if (SetDrawState(data, cmd, GLES2_IMAGESOURCE_SOLID) == 0) { - data->glDrawArrays(GL_LINE_STRIP, 0, (GLsizei) count); - } - break; - } - case SDL_RENDERCMD_FILL_RECTS: /* unused */ break; @@ -1143,6 +1127,8 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver case SDL_RENDERCMD_COPY_EX: /* unused */ break; + case SDL_RENDERCMD_DRAW_POINTS: + case SDL_RENDERCMD_DRAW_LINES: case SDL_RENDERCMD_GEOMETRY: { /* as long as we have the same copy command in a row, with the same texture, we can combine them all into a single draw call. */ @@ -1176,7 +1162,13 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver } if (ret == 0) { - data->glDrawArrays(GL_TRIANGLES, 0, (GLsizei) count); + int op = GL_TRIANGLES; /* SDL_RENDERCMD_GEOMETRY */ + if (thiscmdtype == SDL_RENDERCMD_DRAW_POINTS) { + op = GL_POINTS; + } else if (thiscmdtype == SDL_RENDERCMD_DRAW_LINES) { + op = GL_LINE_STRIP; + } + data->glDrawArrays(op, 0, (GLsizei) count); } cmd = finalcmd; /* skip any copy commands we just combined in here. */