this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Changed renderer's shader_version to min_shader_version and max_shader_version for more flexibility when considering GPU capability.

+53 -12
+5 -3
common/common.c
··· 42 42 43 43 void printCurrentRenderer(void) 44 44 { 45 - GPU_RendererID id = GPU_GetCurrentRenderer()->id; 45 + GPU_Renderer* renderer = GPU_GetCurrentRenderer(); 46 + GPU_RendererID id = renderer->id; 46 47 47 - GPU_Log("Using renderer: %s (%d.%d)\n\n", id.name, id.major_version, id.minor_version); 48 + GPU_Log("Using renderer: %s (%d.%d)\n", id.name, id.major_version, id.minor_version); 49 + GPU_Log(" Shader versions supported: %d to %d\n\n", renderer->min_shader_version, renderer->max_shader_version); 48 50 } 49 51 50 52 GPU_Target* initialize_demo(int argc, char** argv, Uint16 w, Uint16 h) ··· 125 127 // Get size from header 126 128 if(renderer->shader_language == GPU_LANGUAGE_GLSL) 127 129 { 128 - if(renderer->shader_version >= 120) 130 + if(renderer->max_shader_version >= 120) 129 131 header = "#version 120\n"; 130 132 else 131 133 header = "#version 110\n"; // Maybe this is good enough?
+2 -1
include/SDL_gpu.h
··· 590 590 GPU_InitFlagEnum GPU_init_flags; 591 591 592 592 GPU_ShaderLanguageEnum shader_language; 593 - int shader_version; 593 + int min_shader_version; 594 + int max_shader_version; 594 595 GPU_FeatureEnum enabled_features; 595 596 596 597 /*! Current display target */
+2 -1
src/renderer_GLES_1.c
··· 36 36 renderer->id = request; 37 37 renderer->id.renderer = GPU_RENDERER_GLES_1; 38 38 renderer->shader_language = GPU_LANGUAGE_NONE; 39 - renderer->shader_version = 0; 39 + renderer->min_shader_version = 0; 40 + renderer->max_shader_version = 0; 40 41 41 42 renderer->current_context_target = NULL; 42 43
+2 -1
src/renderer_GLES_2.c
··· 41 41 renderer->id = request; 42 42 renderer->id.renderer = GPU_RENDERER_GLES_2; 43 43 renderer->shader_language = GPU_LANGUAGE_GLSLES; 44 - renderer->shader_version = SDL_GPU_GLSL_VERSION; 44 + renderer->min_shader_version = 100; 45 + renderer->max_shader_version = SDL_GPU_GLSL_VERSION; 45 46 46 47 renderer->current_context_target = NULL; 47 48
+34 -2
src/renderer_GL_common.inl
··· 872 872 if(GPU_flags & GPU_INIT_REQUEST_COMPATIBILITY_PROFILE) 873 873 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); 874 874 else 875 + { 875 876 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); 877 + // Force newer default shader version for core contexts because they don't support lower versions 878 + renderer->min_shader_version = SDL_GPU_GLSL_VERSION_CORE; 879 + if(renderer->min_shader_version > renderer->max_shader_version) 880 + renderer->max_shader_version = SDL_GPU_GLSL_VERSION_CORE; 881 + } 876 882 877 - // Set newer default shader version for core-capable contexts 878 - renderer->shader_version = SDL_GPU_GLSL_VERSION_CORE; 879 883 } 880 884 #endif 881 885 ··· 1172 1176 1173 1177 GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL version string: \"%s\"", version_string); 1174 1178 } 1179 + #ifndef SDL_GPU_DISABLE_SHADERS 1180 + // Check max GLSL version 1181 + { 1182 + int major, minor; 1183 + version_string = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); 1184 + if(sscanf(version_string, "%d.%d", &major, &minor) <= 0) 1185 + { 1186 + GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse GLSL version string: \"%s\"", version_string); 1187 + } 1188 + else 1189 + renderer->max_shader_version = major*100 + minor; 1190 + } 1191 + #endif 1175 1192 #else 1176 1193 // GLES doesn't have GL_MAJOR_VERSION. Check via version string instead. 1177 1194 version_string = (const char*)glGetString(GL_VERSION); ··· 1191 1208 GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL version string: \"%s\"", version_string); 1192 1209 } 1193 1210 } 1211 + #ifndef SDL_GPU_DISABLE_SHADERS 1212 + // Check max GLSL version 1213 + { 1214 + int major, minor; 1215 + version_string = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); 1216 + if(sscanf(version_string, "OpenGL ES GLSL ES %d.%d", &major, &minor) <= 0) 1217 + { 1218 + GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse GLSL version string: \"%s\"", version_string); 1219 + } 1220 + else 1221 + renderer->max_shader_version = major*100 + minor; 1222 + } 1223 + #endif 1194 1224 #endif 1195 1225 1196 1226 // Did the wrong runtime library try to use a later versioned renderer? ··· 2817 2847 // Returns NULL on failure. Returns the original surface if no copy is needed. Returns a new surface converted to the right format otherwise. 2818 2848 static SDL_Surface* copySurfaceIfNeeded(GPU_Renderer* renderer, GLenum glFormat, SDL_Surface* surface, GLenum* surfaceFormatResult) 2819 2849 { 2850 + #ifdef SDL_GPU_USE_GLES 2820 2851 SDL_Surface* original = surface; 2852 + #endif 2821 2853 2822 2854 // If format doesn't match, we need to do a copy 2823 2855 int format_compare = compareFormats(renderer, glFormat, surface, surfaceFormatResult);
+2 -1
src/renderer_OpenGL_1.c
··· 36 36 renderer->id = request; 37 37 renderer->id.renderer = GPU_RENDERER_OPENGL_1; 38 38 renderer->shader_language = GPU_LANGUAGE_GLSL; 39 - renderer->shader_version = SDL_GPU_GLSL_VERSION; 39 + renderer->min_shader_version = 110; 40 + renderer->max_shader_version = SDL_GPU_GLSL_VERSION; 40 41 41 42 renderer->current_context_target = NULL; 42 43
+2 -1
src/renderer_OpenGL_1_BASE.c
··· 34 34 renderer->id = request; 35 35 renderer->id.renderer = GPU_RENDERER_OPENGL_1_BASE; 36 36 renderer->shader_language = GPU_LANGUAGE_NONE; 37 - renderer->shader_version = 0; 37 + renderer->min_shader_version = 0; 38 + renderer->max_shader_version = 0; 38 39 39 40 renderer->current_context_target = NULL; 40 41
+2 -1
src/renderer_OpenGL_2.c
··· 34 34 renderer->id = request; 35 35 renderer->id.renderer = GPU_RENDERER_OPENGL_2; 36 36 renderer->shader_language = GPU_LANGUAGE_GLSL; 37 - renderer->shader_version = SDL_GPU_GLSL_VERSION; 37 + renderer->min_shader_version = 110; 38 + renderer->max_shader_version = SDL_GPU_GLSL_VERSION; 38 39 39 40 renderer->current_context_target = NULL; 40 41
+2 -1
src/renderer_OpenGL_3.c
··· 38 38 renderer->id = request; 39 39 renderer->id.renderer = GPU_RENDERER_OPENGL_3; 40 40 renderer->shader_language = GPU_LANGUAGE_GLSL; 41 - renderer->shader_version = SDL_GPU_GLSL_VERSION; 41 + renderer->min_shader_version = 110; 42 + renderer->max_shader_version = SDL_GPU_GLSL_VERSION; 42 43 43 44 renderer->current_context_target = NULL; 44 45