From 0cc338ba6257949c73a782b77bb2ab7d7bd6bb4e Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Fri, 26 May 2017 12:15:51 +0300 Subject: [PATCH] Removed vk_enabled()/gl_enabled(). Just use corresponding expressions directly during APIs initialization, in other places use glActive/vk.active. --- src/engine/platform/win_glimp.c | 6 +++++- src/engine/platform/win_qgl.c | 28 +++++++++------------------- src/engine/renderer/tr_backend.c | 5 ++--- src/engine/renderer/tr_image.c | 5 +++-- src/engine/renderer/tr_init.c | 28 ++++++++++++++++------------ src/engine/renderer/tr_local.h | 4 +--- 6 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/engine/platform/win_glimp.c b/src/engine/platform/win_glimp.c index 4673259..abd7206 100644 --- a/src/engine/platform/win_glimp.c +++ b/src/engine/platform/win_glimp.c @@ -651,6 +651,9 @@ static void GLW_InitExtensions( void ) */ void GLimp_EndFrame (void) { + if (!glActive) + return; + // // swapinterval stuff // @@ -768,6 +771,7 @@ void GLimp_Shutdown( void ) WG_RestoreGamma(); + glActive = false; memset(&glConfig, 0, sizeof(glConfig)); memset(&glState, 0, sizeof(glState)); @@ -788,7 +792,7 @@ void vk_imp_init() { ri.Printf(PRINT_ALL, "Initializing Vulkan subsystem\n"); // This will set qgl pointers to no-op placeholders. - if (!gl_enabled()) { + if (!glActive) { QGL_Init(nullptr); qglActiveTextureARB = [] (GLenum) {}; qglClientActiveTextureARB = [](GLenum) {}; diff --git a/src/engine/platform/win_qgl.c b/src/engine/platform/win_qgl.c index 4582cc8..346755a 100644 --- a/src/engine/platform/win_qgl.c +++ b/src/engine/platform/win_qgl.c @@ -188,13 +188,7 @@ static void noglEnableClientState(GLenum array) {} static void noglEnd(void) {} static void noglFinish(void) {} static GLenum noglGetError(void) { return GL_NO_ERROR; } - -static void noglGetIntegerv(GLenum pname, GLint *params) { - if (pname == GL_MAX_TEXTURE_SIZE) { - *params = 2048; - } -} - +static void noglGetIntegerv(GLenum pname, GLint *params) {} static const GLubyte* noglGetString(GLenum name) { static char* s = ""; return (GLubyte*)s;} static void noglLineWidth(GLfloat width) {} static void noglLoadIdentity(void) {} @@ -667,18 +661,14 @@ static void APIENTRY logViewport(GLint x, GLint y, GLsizei width, GLsizei height */ void QGL_Shutdown( void ) { - if (gl_enabled()) { + if ( hinstOpenGL ) + { ri.Printf( PRINT_ALL, "...shutting down QGL\n" ); - - if ( hinstOpenGL ) - { - ri.Printf( PRINT_ALL, "...unloading OpenGL DLL\n" ); - FreeLibrary( hinstOpenGL ); - } + ri.Printf( PRINT_ALL, "...unloading OpenGL DLL\n" ); + FreeLibrary( hinstOpenGL ); + hinstOpenGL = NULL; } - hinstOpenGL = NULL; - qglAlphaFunc = NULL; qglBegin = NULL; qglBindTexture = NULL; @@ -739,7 +729,7 @@ void QGL_Shutdown( void ) } # pragma warning (disable : 4113 4133 4047 ) -# define GPA( a ) (gl_enabled() ? (void*)GetProcAddress(hinstOpenGL, #a) : (void*)(&no ## a)) +# define GPA( a ) (dllname ? (void*)GetProcAddress(hinstOpenGL, #a) : (void*)(&no ## a)) /* ** QGL_Init @@ -752,7 +742,7 @@ void QGL_Shutdown( void ) */ qboolean QGL_Init( const char *dllname ) { - if (gl_enabled()) { + if (dllname != nullptr) { assert( hinstOpenGL == 0 ); ri.Printf( PRINT_ALL, "...initializing QGL\n" ); @@ -830,7 +820,7 @@ qboolean QGL_Init( const char *dllname ) qglLockArraysEXT = 0; qglUnlockArraysEXT = 0; - if (gl_enabled()) { + if (dllname != nullptr) { // check logging QGL_EnableLogging( (qboolean) r_logFile->integer ); } diff --git a/src/engine/renderer/tr_backend.c b/src/engine/renderer/tr_backend.c index 60aa8c1..5aed818 100644 --- a/src/engine/renderer/tr_backend.c +++ b/src/engine/renderer/tr_backend.c @@ -901,7 +901,7 @@ void RB_ShowImages( void ) { float x, y, w, h; int start, end; - if (!gl_enabled()) + if (!glActive) return; if ( !backEnd.projection2D ) { @@ -1041,8 +1041,7 @@ const void *RB_SwapBuffers( const void *data ) { GLimp_LogComment( "***************** RB_SwapBuffers *****************\n\n\n" ); - if (gl_enabled()) - GLimp_EndFrame(); + GLimp_EndFrame(); backEnd.projection2D = qfalse; diff --git a/src/engine/renderer/tr_image.c b/src/engine/renderer/tr_image.c index 1cdb2f4..ece7075 100644 --- a/src/engine/renderer/tr_image.c +++ b/src/engine/renderer/tr_image.c @@ -582,8 +582,9 @@ static void Upload32( unsigned *data, // scale both axis down equally so we don't have to // deal with a half mip resampling // - while ( scaled_width > glConfig.maxTextureSize - || scaled_height > glConfig.maxTextureSize ) { + int max_texture_size = glActive ? glConfig.maxTextureSize : 2048; + while ( scaled_width > max_texture_size + || scaled_height > max_texture_size ) { scaled_width >>= 1; scaled_height >>= 1; } diff --git a/src/engine/renderer/tr_init.c b/src/engine/renderer/tr_init.c index bde98f0..c6f6c46 100644 --- a/src/engine/renderer/tr_init.c +++ b/src/engine/renderer/tr_init.c @@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "tr_local.h" +bool glActive; glconfig_t glConfig; glstate_t glState; @@ -185,19 +186,22 @@ static void InitRenderAPI( void ) // if ( glConfig.vidWidth == 0 ) { - if (gl_enabled()) + // OpenGL + if (r_renderAPI->integer == 0 || r_twinMode->integer) { GLimp_Init(); + GLint temp; + qglGetIntegerv( GL_MAX_TEXTURE_SIZE, &temp ); + glConfig.maxTextureSize = temp; + + glActive = true; + } + // VULKAN - if (vk_enabled()) { + if (r_renderAPI->integer != 0 || r_twinMode->integer) { vk_imp_init(); vk_initialize(); } - - // OpenGL driver constants - GLint temp; - qglGetIntegerv( GL_MAX_TEXTURE_SIZE, &temp ); - glConfig.maxTextureSize = temp; } // init command buffers and SMP @@ -760,7 +764,7 @@ void GfxInfo_f( void ) "fullscreen" }; - if (gl_enabled()) { + if (glActive) { ri.Printf( PRINT_ALL, "\nGL_VENDOR: %s\n", glConfig.vendor_string ); ri.Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string ); ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string ); @@ -786,7 +790,7 @@ void GfxInfo_f( void ) ri.Printf( PRINT_ALL, "picmip: %d\n", r_picmip->integer ); ri.Printf( PRINT_ALL, "texture bits: %d\n", r_texturebits->integer ); - if (gl_enabled()) { + if (glActive) { ri.Printf( PRINT_ALL, "compiled vertex arrays: %s\n", enablestrings[qglLockArraysEXT != 0 ] ); ri.Printf( PRINT_ALL, "texenv add: %s\n", enablestrings[glConfig.textureEnvAddAvailable != 0] ); ri.Printf( PRINT_ALL, "compressed textures: %s\n", enablestrings[glConfig.textureCompression!=TC_NONE] ); @@ -796,12 +800,12 @@ void GfxInfo_f( void ) { ri.Printf( PRINT_ALL, "HACK: using vertex lightmap approximation\n" ); } - if ( gl_enabled() && glConfig.smpActive ) { + if ( glActive && glConfig.smpActive ) { ri.Printf( PRINT_ALL, "Using dual processor acceleration\n" ); } // VULKAN - if (vk_enabled()) { + if (vk.active) { VkPhysicalDeviceProperties props; vkGetPhysicalDeviceProperties(vk.physical_device, &props); @@ -1090,7 +1094,7 @@ void RE_Shutdown( qboolean destroyWindow ) { R_DoneFreeType(); // shut down platform specific OpenGL stuff - if ( gl_enabled() ) { + if ( glActive ) { if (destroyWindow) GLimp_Shutdown(); } diff --git a/src/engine/renderer/tr_local.h b/src/engine/renderer/tr_local.h index c6372ec..592367c 100644 --- a/src/engine/renderer/tr_local.h +++ b/src/engine/renderer/tr_local.h @@ -924,6 +924,7 @@ typedef struct { extern backEndState_t backEnd; extern trGlobals_t tr; +extern bool glActive; // set to true if OpenGL is used for rendering extern glconfig_t glConfig; // outside of TR since it shouldn't be cleared during ref re-init extern glstate_t glState; // outside of TR since it shouldn't be cleared during ref re-init @@ -1390,9 +1391,6 @@ void RB_CalcDiffuseColor( unsigned char *colors ); void myGlMultMatrix( const float *a, const float *b, float *out ); -inline bool gl_enabled() { return r_renderAPI->integer == 0 || r_twinMode->integer; } -inline bool vk_enabled() { return r_renderAPI->integer != 0 || r_twinMode->integer; } - /* =============================================================