(Bolded portion may have something to do with it.) Instead of ending gracefully (on startup with limited OpenGL setup) it ends with
this (this is a window on top of a black viewport).
Also, with software rendering, the ESC key should probably be run in a separate thread (it takes about 5 seconds for the ESC to register in software mode). Preferably instead of exiting it should permit only software mode. Other than that, looking great and I look forward to see what becomes of this.

It's still working great in wine/Linux so major props for that. Finally a more or less cross-platform benchmark.
--- Mandelbrot Shader Info Log ---
MakeGLWindow: registered class
MakeGLWindow: fullscreen mode successful
SizeGLScreen: set projection
SizeGLScreen: set viewport
MakeGLWindow: created window
InitGL: acquired device context
InitGL: setup pixel format
InitGL: created rendering context
InitGL: bound rendering context
InitGL: set ogl parmeters
InitGL: checked extensions
SizeGLScreen: set projection
SizeGLScreen: set viewport
CreateBitmapFont: font created
Init: detected 1 processors
LoadBMP: load completed
Init: allocated imgBuffer
Init: allocated thread handles
Init: created mutex handle
Init: generated quad list
Init: generated flip list
Init: compiled quadlist
Init: compiled fliplist
LoadBMP: load completed
CreateTexture: creation complete
Init: shader version not > 1
Renderer: GDI Generic
OpenGL version: 1.1.0
Extensions: GL_WIN_swap_hint GL_EXT_bgra GL_EXT_paletted_texture
number of threads: 1
shader version: 0
support multitexturing: 0
support FBO: 0
fontlist: 1
quadlist: 97
fliplist: 98
palette texture id: 1
FBO id: 0
pingpong Tex IDs: [0, 0]
FBO color attachments: [8CE0, 8CE1]
vertex program: 0
fragment programs: [0, 0, 0, 0, 0]
program objects: [0, 0, 0, 0, 0]
Init: reset view
Cleanup: closed mutex handle
Cleanup: released thread handles
Cleanup: freed palette data
Cleanup: freed imgBuffer data
Cleanup: deleted palette texture
Cleanup: deleted quadlist
Cleanup: deleted fliplist
Cleanup: deleted fontlist
KillGLWindow: unbind and delete rendering context
KillGLWindow: release device context
SizeGLScreen: set projection
SizeGLScreen: set viewport
KillGLWindow: exit fullscreen mode
KillGLWindow: destroyed window
KillGLWindow: unregistered class