From 5df2190536ba542f04436509161d390f6b7b14f0 Mon Sep 17 00:00:00 2001 From: Luke Benstead Date: Sat, 2 Oct 2021 14:43:23 +0100 Subject: [PATCH] Fix various bugs with non-fastpath rendering --- GL/draw.c | 12 ++++++++---- samples/multitexture_arrays/pvr-texture.c | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/GL/draw.c b/GL/draw.c index 0fa99f3..3afc053 100644 --- a/GL/draw.c +++ b/GL/draw.c @@ -888,8 +888,10 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei } else { if(mode == GL_QUADS) { generateArraysFastPath_QUADS(target, first, count); + return; // Don't need to do any more processing } else if(mode == GL_TRIANGLES) { generateArraysFastPath_TRIS(target, first, count); + return; // Don't need to do any more processing } else { generateArraysFastPath_ALL(target, first, count); } @@ -906,8 +908,10 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei // Drawing arrays switch(mode) { case GL_TRIANGLES: - break; // Already done - case GL_QUADS: // Already done + genTriangles(it, count); + break; + case GL_QUADS: + genQuads(it, count); break; case GL_TRIANGLE_FAN: genTriangleFan(it, count); @@ -1392,8 +1396,8 @@ void APIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const G ATTRIB_POINTERS.colour.ptr = pointer; ATTRIB_POINTERS.colour.type = type; - ATTRIB_POINTERS.colour.size = (ATTRIB_POINTERS.colour.size == GL_BGRA) ? 4 : size; - ATTRIB_POINTERS.colour.stride = (stride) ? stride : ATTRIB_POINTERS.colour.size * byte_size(type); + ATTRIB_POINTERS.colour.size = size; + ATTRIB_POINTERS.colour.stride = (stride) ? stride : ((size == GL_BGRA) ? 4 : size) * byte_size(type); _glRecalcFastPath(); } diff --git a/samples/multitexture_arrays/pvr-texture.c b/samples/multitexture_arrays/pvr-texture.c index c9d5f92..7a2190b 100644 --- a/samples/multitexture_arrays/pvr-texture.c +++ b/samples/multitexture_arrays/pvr-texture.c @@ -62,7 +62,7 @@ GLuint glTextureLoadPVR(char *fname, unsigned char isMipMapped, unsigned char gl if(tex == NULL) { printf("FILE READ ERROR: %s\n", fname); - while(1); + return 1; } fseek(tex, 0, SEEK_END);