From 17f156fae5cab42457c422c27364b3aabf21a6f8 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 15 Nov 2021 09:08:09 +0100 Subject: [PATCH] Fixed bug #4964 - opengles2 & batching = conjoined lines put back the initial switch case because groups of joined lines cannot be batched. --- src/render/opengles2/SDL_render_gles2.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 45d1eba36..6602c6281 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1134,8 +1134,14 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver case SDL_RENDERCMD_COPY_EX: /* unused */ break; + case SDL_RENDERCMD_DRAW_LINES: { + if (SetDrawState(data, cmd, GLES2_IMAGESOURCE_SOLID) == 0) { + data->glDrawArrays(GL_LINE_STRIP, 0, (GLsizei) cmd->data.draw.count); + } + 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. */ @@ -1148,7 +1154,7 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver int ret; while (nextcmd != NULL) { const SDL_RenderCommandType nextcmdtype = nextcmd->command; - if (nextcmdtype != thiscmdtype || thiscmdtype == SDL_RENDERCMD_DRAW_LINES) { + if (nextcmdtype != thiscmdtype) { break; /* can't go any further on this draw call, different render command up next. */ } else if (nextcmd->data.draw.texture != thistexture || nextcmd->data.draw.blend != thisblend) { break; /* can't go any further on this draw call, different texture/blendmode copy up next. */ @@ -1169,8 +1175,6 @@ GLES2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver 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); }