Perf tweaks

This commit is contained in:
Luke Benstead 2021-09-13 12:57:52 +01:00
parent 52ff506397
commit adce2c7538
3 changed files with 10 additions and 13 deletions

View File

@ -11,11 +11,11 @@
AttribPointerList ATTRIB_POINTERS;
GLuint ENABLED_VERTEX_ATTRIBUTES = 0;
GLboolean FAST_PATH_ENABLED = GL_FALSE;
GLuint FAST_PATH_ENABLED = GL_FALSE;
static GLubyte ACTIVE_CLIENT_TEXTURE = 0;
extern inline GLboolean _glRecalcFastPath();
extern inline GLuint _glRecalcFastPath();
#define ITERATE(count) \
GLuint i = count; \
@ -1135,9 +1135,6 @@ GL_FORCE_INLINE void submitVertices(GLenum mode, GLsizei first, GLuint count, GL
target->extras = &extras;
}
const GLboolean doLighting = LIGHTING_ENABLED;
const GLboolean doMultitexture = TEXTURES_ENABLED[1];
/* Polygons are treated as triangle fans, the only time this would be a
* problem is if we supported glPolygonMode(..., GL_LINE) but we don't.
* We optimise the triangle and quad cases.
@ -1175,7 +1172,7 @@ GL_FORCE_INLINE void submitVertices(GLenum mode, GLsizei first, GLuint count, GL
* If we're not doing lighting though we can optimise by taking
* vertices straight to clip-space */
if(doLighting) {
if(LIGHTING_ENABLED) {
_glMatrixLoadModelView();
} else {
_glMatrixLoadModelViewProjection();
@ -1190,7 +1187,7 @@ GL_FORCE_INLINE void submitVertices(GLenum mode, GLsizei first, GLuint count, GL
transform(target);
}
if(doLighting){
if(LIGHTING_ENABLED){
light(target);
/* OK eye-space work done, now move into clip space */
@ -1241,7 +1238,7 @@ GL_FORCE_INLINE void submitVertices(GLenum mode, GLsizei first, GLuint count, GL
- We want to set the uv coordinates to the passed st ones
*/
if(!doMultitexture) {
if(!TEXTURES_ENABLED[1]) {
/* Multitexture actively disabled */
return;
}

View File

@ -12,7 +12,7 @@
#include "private.h"
extern inline GLboolean _glRecalcFastPath();
extern inline GLuint _glRecalcFastPath();
GLboolean IMMEDIATE_MODE_ACTIVE = GL_FALSE;
static GLenum ACTIVE_POLYGON_MODE = GL_TRIANGLES;
@ -248,7 +248,7 @@ void APIENTRY glEnd() {
#ifndef NDEBUG
// Immediate mode should always activate the fast path
GLboolean fastPathEnabled = _glRecalcFastPath();
GLuint fastPathEnabled = _glRecalcFastPath();
assert(fastPathEnabled);
#else
/* If we're not debugging, set to true - we assume we haven't broken it! */

View File

@ -391,9 +391,9 @@ GLboolean _glIsNormalizeEnabled();
extern AttribPointerList ATTRIB_POINTERS;
extern GLuint ENABLED_VERTEX_ATTRIBUTES;
extern GLboolean FAST_PATH_ENABLED;
extern GLuint FAST_PATH_ENABLED;
GL_FORCE_INLINE GLboolean _glIsVertexDataFastPathCompatible() {
GL_FORCE_INLINE GLuint _glIsVertexDataFastPathCompatible() {
/* The fast path is enabled when all enabled elements of the vertex
* match the output format. This means:
*
@ -443,7 +443,7 @@ GL_FORCE_INLINE GLboolean _glIsVertexDataFastPathCompatible() {
return GL_TRUE;
}
GL_FORCE_INLINE GLboolean _glRecalcFastPath() {
GL_FORCE_INLINE GLuint _glRecalcFastPath() {
FAST_PATH_ENABLED = _glIsVertexDataFastPathCompatible();
return FAST_PATH_ENABLED;
}