ref: e24909b3f3c7830bb88a0867d96055cc310ff893
parent: 3aaf17bc54e0ab5bc103036d016a76283c371517
author: David <gek@katherine>
date: Tue Feb 16 16:09:08 EST 2021
Benchmarks
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@

+
+
TinyGL 0.8 (c) 1997-2021 Fabrice Bellard, C-Chads, Gek (see License, it's free software)
This is a maintained fork of TinyGL, by the C-Chads.
@@ -276,7 +278,94 @@
## ALSO COMPATIBLE WITH 16 BIT
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+## BENCHMARK RESULTS
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+### CPU: i7-6700 (Gek)
+### OS: Linux Mint Debian Edition
+at the default settings, 32 bit,
+```c
+#define TGL_FEATURE_ARRAYS 1
+#define TGL_FEATURE_DISPLAYLISTS 1
+#define TGL_FEATURE_LIT_TEXTURES 1
+//NOTE: Polygon Offset does nothing at the moment.
+#define TGL_FEATURE_POLYGON_OFFSET 0
+#define TGL_FEATURE_POLYGON_STIPPLE 0
+//A stipple pattern is 128 bytes in size.
+#define TGL_POLYGON_STIPPLE_BYTES 128
+//A stipple pattern is 2^5 (32) bits wide.
+#define TGL_POLYGON_STIPPLE_POW2_WIDTH 5
+//The stipple pattern mask (the last bits of the screen coordinates used for indexing)
+//The default pattern is 32 bits wide and 32 bits tall, or 4 bytes per row and 32 tall, 4 * 32 = 128 bytes.
+#define TGL_POLYGON_STIPPLE_MASK_X 31
+#define TGL_POLYGON_STIPPLE_MASK_Y 31
+
+//These are features useful for integrating TinyGL with other renderers.
+#define TGL_FEATURE_NO_COPY_COLOR 0
+#define TGL_FEATURE_NO_DRAW_COLOR 0
+#define TGL_FEATURE_FORCE_CLEAR_NO_COPY_COLOR 0
+#define TGL_NO_COPY_COLOR 0xff00ff
+#define TGL_NO_DRAW_COLOR 0xff00ff
+//^ solid debug pink.
+#define TGL_COLOR_MASK 0x00ffffff
+
+//..
+
+#define TGL_FEATURE_16_BITS 0
+#define TGL_FEATURE_32_BITS 1
+```
+
+```
+./model -m monkey3.obj -count 27
+```
+
+Hovers around 55-62 fps at count 27.
+(I get the exact same performance figures with textures enabled)
+
+```
+./gears
+Low: 731 FPS
+High: 885 FPS
+Average: around 835
+```
+
+```
+./helloworld
+Low: 1178 FPS
+High: 1530 FPS
+Average: around 1380 FPS
+```
+
+```
+./texture
+Low: 476 FPS
+High: 547 FPS
+Average: around 510 FPS
+```
+#### With NO_DRAW_COLOR enabled, otherwise the same
+
+```
+./model -m monkey3.obj -count 24
+```
+
+Raising the count above 25 causes the count to unreliably stay above 50 FPS and never reach 60.
+
+```
+./texture
+Low: 467 FPS
+High: 592 FPS
+Average: around 570 FPS
+```
+Surprising that it actually runs faster
+
+```
+./gears
+Low: 804 FPS
+High: 917 FPS
+Average: around 842 FPS
+```
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Here is the old description of TinyGL, saved for historical/attribution purposes:
### General Description:
--- a/SDL_Examples/model.c
+++ b/SDL_Examples/model.c
@@ -326,6 +326,7 @@
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
+ glSetEnableSpecular(0);
static GLfloat white[4] = {1.0, 1.0, 1.0, 0.0};static GLfloat pos[4] = {5, 5, 10, 0.0}; // Light at infinity.
glLightfv(GL_LIGHT0, GL_POSITION, pos);
--- a/include/GL/glx_unused.h
+++ /dev/null
@@ -1,144 +1,0 @@
-#ifndef GLX_H
-#define GLX_H
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include "GL/gl.h"
-
-
-/* the following comes from Mesa */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define GLX_VERSION_1_1 1
-
-
-/*
- * Tokens for glXChooseVisual and glXGetConfig:
- */
-enum _GLX_CONFIGS {
- GLX_USE_GL = 1,
- GLX_BUFFER_SIZE = 2,
- GLX_LEVEL = 3,
- GLX_RGBA = 4,
- GLX_DOUBLEBUFFER = 5,
- GLX_STEREO = 6,
- GLX_AUX_BUFFERS = 7,
- GLX_RED_SIZE = 8,
- GLX_GREEN_SIZE = 9,
- GLX_BLUE_SIZE = 10,
- GLX_ALPHA_SIZE = 11,
- GLX_DEPTH_SIZE = 12,
- GLX_STENCIL_SIZE = 13,
- GLX_ACCUM_RED_SIZE = 14,
- GLX_ACCUM_GREEN_SIZE = 15,
- GLX_ACCUM_BLUE_SIZE = 16,
- GLX_ACCUM_ALPHA_SIZE = 17,
-
- /* GLX_EXT_visual_info extension */
- GLX_X_VISUAL_TYPE_EXT = 0x22,
- GLX_TRANSPARENT_TYPE_EXT = 0x23,
- GLX_TRANSPARENT_INDEX_VALUE_EXT = 0x24,
- GLX_TRANSPARENT_RED_VALUE_EXT = 0x25,
- GLX_TRANSPARENT_GREEN_VALUE_EXT = 0x26,
- GLX_TRANSPARENT_BLUE_VALUE_EXT = 0x27,
- GLX_TRANSPARENT_ALPHA_VALUE_EXT = 0x28
-};
-
-
-/*
- * Error codes returned by glXGetConfig:
- */
-#define GLX_BAD_SCREEN 1
-#define GLX_BAD_ATTRIBUTE 2
-#define GLX_NO_EXTENSION 3
-#define GLX_BAD_VISUAL 4
-#define GLX_BAD_CONTEXT 5
-#define GLX_BAD_VALUE 6
-#define GLX_BAD_ENUM 7
-
-
-/*
- * GLX 1.1 and later:
- */
-#define GLX_VENDOR 1
-#define GLX_VERSION 2
-#define GLX_EXTENSIONS 3
-
-
-/*
- * GLX_visual_info extension
- */
-#define GLX_TRUE_COLOR_EXT 0x8002
-#define GLX_DIRECT_COLOR_EXT 0x8003
-#define GLX_PSEUDO_COLOR_EXT 0x8004
-#define GLX_STATIC_COLOR_EXT 0x8005
-#define GLX_GRAY_SCALE_EXT 0x8006
-#define GLX_STATIC_GRAY_EXT 0x8007
-#define GLX_NONE_EXT 0x8000
-#define GLX_TRANSPARENT_RGB_EXT 0x8008
-#define GLX_TRANSPARENT_INDEX_EXT 0x8009
-
-
-typedef void *GLXContext;
-typedef Pixmap GLXPixmap;
-typedef Drawable GLXDrawable;
-typedef XID GLXContextID;
-
-
-extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
- int *attribList );
-
-extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
- GLXContext shareList, Bool direct );
-
-extern void glXDestroyContext( Display *dpy, GLXContext ctx );
-
-extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
- GLXContext ctx);
-
-extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
- GLuint mask );
-
-extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
-
-extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
- Pixmap pixmap );
-
-extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
-
-extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
-
-extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
-
-extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
-
-extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
- int attrib, int *value );
-
-extern GLXContext glXGetCurrentContext( void );
-
-extern GLXDrawable glXGetCurrentDrawable( void );
-
-extern void glXWaitGL( void );
-
-extern void glXWaitX( void );
-
-extern void glXUseXFont( Font font, int first, int count, int list );
-
-
-/* GLX 1.1 and later */
-extern const char *glXQueryExtensionsString( Display *dpy, int screen );
-
-extern const char *glXQueryServerString( Display *dpy, int screen, int name );
-
-extern const char *glXGetClientString( Display *dpy, int name );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/include/GL/nglx_unused.h
+++ /dev/null
@@ -1,27 +1,0 @@
-#ifndef NGLX_H
-#define NGLX_H
-
-#include <microwin/nano-X.h>
-#include "GL/gl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *NGLXContext;
-typedef GR_DRAW_ID NGLXDrawable;
-
-extern NGLXContext nglXCreateContext( NGLXContext shareList, int flags );
-
-extern void nglXDestroyContext( NGLXContext ctx );
-
-extern int nglXMakeCurrent( NGLXDrawable drawable,
- NGLXContext ctx);
-
-extern void nglXSwapBuffers( NGLXDrawable drawable );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/include/GL/oscontext_unused.h
+++ /dev/null
@@ -1,37 +1,0 @@
-#ifndef _tgl_osbuffer_h_
-#define _tgl_osbuffer_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- void **zbs;
- void **framebuffers;
- int numbuffers;
- int xsize, ysize;
-} ostgl_context;
-
-ostgl_context *
-ostgl_create_context(const int xsize,
- const int ysize,
- const int depth,
- void **framebuffers,
- const int numbuffers);
-void
-ostgl_delete_context(ostgl_context *context);
-
-void
-ostgl_make_current(ostgl_context *context, const int index);
-
-void
-ostgl_resize(ostgl_context * context,
- const int xsize,
- const int ysize,
- void **framebuffers);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _tgl_osbuffer_h_ */