Bring in Despair's gl error checking from the gl renderer.

This commit is contained in:
Bill Currie 2011-12-28 09:05:36 +09:00
parent 151cc05882
commit b657905c83

View file

@ -59,6 +59,73 @@ static __attribute__ ((used)) const char rcsid[] = "$Id$";
#include "r_screen.h"
#include "r_shared.h"
/* Unknown renamed to GLErr_Unknown to solve conflict with winioctl.h */
unsigned int GLErr_InvalidEnum;
unsigned int GLErr_InvalidValue;
unsigned int GLErr_InvalidOperation;
unsigned int GLErr_OutOfMemory;
unsigned int GLErr_Unknown;
extern void (*R_DrawSpriteModel) (struct entity_s *ent);
static unsigned int
R_TestErrors (unsigned int numerous)
{
switch (qfglGetError ()) {
case GL_NO_ERROR:
return numerous;
break;
case GL_INVALID_ENUM:
GLErr_InvalidEnum++;
R_TestErrors (numerous++);
break;
case GL_INVALID_VALUE:
GLErr_InvalidValue++;
R_TestErrors (numerous++);
break;
case GL_INVALID_OPERATION:
GLErr_InvalidOperation++;
R_TestErrors (numerous++);
break;
case GL_OUT_OF_MEMORY:
GLErr_OutOfMemory++;
R_TestErrors (numerous++);
break;
default:
GLErr_Unknown++;
R_TestErrors (numerous++);
break;
}
return numerous;
}
static void
R_DisplayErrors (void)
{
if (GLErr_InvalidEnum)
printf ("%d OpenGL errors: Invalid Enum!\n", GLErr_InvalidEnum);
if (GLErr_InvalidValue)
printf ("%d OpenGL errors: Invalid Value!\n", GLErr_InvalidValue);
if (GLErr_InvalidOperation)
printf ("%d OpenGL errors: Invalid Operation!\n", GLErr_InvalidOperation);
if (GLErr_OutOfMemory)
printf ("%d OpenGL errors: Out Of Memory!\n", GLErr_OutOfMemory);
if (GLErr_Unknown)
printf ("%d Unknown OpenGL errors!\n", GLErr_Unknown);
}
static void
R_ClearErrors (void)
{
GLErr_InvalidEnum = 0;
GLErr_InvalidValue = 0;
GLErr_InvalidOperation = 0;
GLErr_OutOfMemory = 0;
GLErr_Unknown = 0;
}
static void
SCR_TileClear (void)
{
@ -89,6 +156,10 @@ SCR_UpdateScreen (double realtime, SCR_Func *scr_funcs)
{
static int begun = 0;
if (R_TestErrors (0))
R_DisplayErrors ();
R_ClearErrors ();
if (begun) {
begun = 0;
GL_EndRendering ();