this repo has no description
0
fork

Configure Feed

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

Factored out the code to get the GL and GLSL versions.

+88 -61
+88 -61
src/renderer_GL_common.inl
··· 989 989 return ((renderer->enabled_features & feature) == feature); 990 990 } 991 991 992 + static Uint8 get_GL_version(int* major, int* minor) 993 + { 994 + const char* version_string; 995 + #ifdef SDL_GPU_USE_OPENGL 996 + // OpenGL < 3.0 doesn't have GL_MAJOR_VERSION. Check via version string instead. 997 + version_string = (const char*)glGetString(GL_VERSION); 998 + if(sscanf(version_string, "%d.%d", major, minor) <= 0) 999 + { 1000 + // Failure 1001 + *major = SDL_GPU_GL_MAJOR_VERSION; 1002 + #if SDL_GPU_GL_MAJOR_VERSION != 3 1003 + *minor = 1; 1004 + #else 1005 + *minor = 0; 1006 + #endif 1007 + 1008 + GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL version string: \"%s\"", version_string); 1009 + return 0; 1010 + } 1011 + return 1; 1012 + #else 1013 + // GLES doesn't have GL_MAJOR_VERSION. Check via version string instead. 1014 + version_string = (const char*)glGetString(GL_VERSION); 1015 + // OpenGL ES 2.0? 1016 + if(sscanf(version_string, "OpenGL ES %d.%d", major, minor) <= 0) 1017 + { 1018 + // OpenGL ES-CM 1.1? OpenGL ES-CL 1.1? 1019 + if(sscanf(version_string, "OpenGL ES-C%*c %d.%d", major, minor) <= 0) 1020 + { 1021 + // Failure 1022 + *major = SDL_GPU_GLES_MAJOR_VERSION; 1023 + #if SDL_GPU_GLES_MAJOR_VERSION == 1 1024 + *minor = 1; 1025 + #else 1026 + *minor = 0; 1027 + #endif 1028 + 1029 + GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL ES version string: \"%s\"", version_string); 1030 + return 0; 1031 + } 1032 + } 1033 + return 1; 1034 + #endif 1035 + } 1036 + 1037 + static Uint8 get_GLSL_version(int* version) 1038 + { 1039 + #ifndef SDL_GPU_DISABLE_SHADERS 1040 + const char* version_string; 1041 + int major, minor; 1042 + #ifdef SDL_GPU_USE_OPENGL 1043 + { 1044 + version_string = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); 1045 + if(version_string == NULL || sscanf(version_string, "%d.%d", &major, &minor) <= 0) 1046 + { 1047 + GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to parse GLSL version string: \"%s\"", version_string); 1048 + *version = SDL_GPU_GLSL_VERSION; 1049 + return 0; 1050 + } 1051 + else 1052 + *version = major*100 + minor; 1053 + } 1054 + #else 1055 + { 1056 + version_string = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); 1057 + if(version_string == NULL || sscanf(version_string, "OpenGL ES GLSL ES %d.%d", &major, &minor) <= 0) 1058 + { 1059 + GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to parse GLSL ES version string: \"%s\"", version_string); 1060 + *version = SDL_GPU_GLSL_VERSION; 1061 + return 0; 1062 + } 1063 + else 1064 + *version = major*100 + minor; 1065 + } 1066 + #endif 1067 + #endif 1068 + return 1; 1069 + } 1070 + 1071 + static Uint8 get_API_versions(GPU_Renderer* renderer) 1072 + { 1073 + return (get_GL_version(&renderer->id.major_version, &renderer->id.minor_version) 1074 + && get_GLSL_version(&renderer->max_shader_version)); 1075 + } 992 1076 993 1077 static GPU_Target* CreateTargetFromWindow(GPU_Renderer* renderer, Uint32 windowID, GPU_Target* target) 994 1078 { ··· 1004 1088 #ifdef SDL_GPU_USE_OPENGL 1005 1089 GLenum err; 1006 1090 #endif 1007 - const char* version_string; 1008 1091 GPU_FeatureEnum required_features = GPU_GetRequiredFeatures(); 1009 1092 1010 1093 if(target == NULL) ··· 1161 1244 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &framebuffer_handle); 1162 1245 ((GPU_TARGET_DATA*)target->data)->handle = framebuffer_handle; 1163 1246 1164 - // Update our renderer info from the current GL context. 1165 - #ifdef SDL_GPU_USE_OPENGL 1166 - // OpenGL < 3.0 doesn't have GL_MAJOR_VERSION. Check via version string instead. 1167 - version_string = (const char*)glGetString(GL_VERSION); 1168 - if(sscanf(version_string, "%d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0) 1169 - { 1170 - renderer->id.major_version = SDL_GPU_GL_MAJOR_VERSION; 1171 - #if SDL_GPU_GL_MAJOR_VERSION != 3 1172 - renderer->id.minor_version = 1; 1173 - #else 1174 - renderer->id.minor_version = 0; 1175 - #endif 1176 1247 1177 - GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL version string: \"%s\"", version_string); 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 1192 - #else 1193 - // GLES doesn't have GL_MAJOR_VERSION. Check via version string instead. 1194 - version_string = (const char*)glGetString(GL_VERSION); 1195 - // OpenGL ES 2.0? 1196 - if(sscanf(version_string, "OpenGL ES %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0) 1197 - { 1198 - // OpenGL ES-CM 1.1? OpenGL ES-CL 1.1? 1199 - if(sscanf(version_string, "OpenGL ES-C%*c %d.%d", &renderer->id.major_version, &renderer->id.minor_version) <= 0) 1200 - { 1201 - renderer->id.major_version = SDL_GPU_GLES_MAJOR_VERSION; 1202 - #if SDL_GPU_GLES_MAJOR_VERSION == 1 1203 - renderer->id.minor_version = 1; 1204 - #else 1205 - renderer->id.minor_version = 0; 1206 - #endif 1207 - 1208 - GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to parse OpenGL version string: \"%s\"", version_string); 1209 - } 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 1224 - #endif 1248 + // Update our renderer info from the current GL context. 1249 + if(!get_API_versions(renderer)) 1250 + GPU_PushErrorCode("GPU_CreateTargetFromWindow", GPU_ERROR_BACKEND_ERROR, "Failed to get backend API versions."); 1225 1251 1226 1252 // Did the wrong runtime library try to use a later versioned renderer? 1227 1253 if(renderer->id.major_version < renderer->requested_id.major_version) ··· 1230 1256 target->context->failed = 1; 1231 1257 return NULL; 1232 1258 } 1259 + 1233 1260 1234 1261 init_features(renderer); 1235 1262