]> git.sesse.net Git - movit/blobdiff - init.cpp
Call init_lanczos_table() once instead of checking for it all the time.
[movit] / init.cpp
index a7bd1e3ea5d4e247722c04f3d1a6d1aabd2b33a4..5b8da897271e8cf6b282cf153759bb8666e47a53 100644 (file)
--- a/init.cpp
+++ b/init.cpp
@@ -16,6 +16,7 @@ bool movit_initialized = false;
 MovitDebugLevel movit_debug_level = MOVIT_DEBUG_ON;
 float movit_texel_subpixel_precision;
 bool movit_srgb_textures_supported;
+bool movit_timer_queries_supported;
 int movit_num_wrongly_rounded;
 bool movit_shader_rounding_supported;
 MovitShaderModel movit_shader_model;
@@ -355,6 +356,12 @@ bool check_extensions()
        movit_shader_rounding_supported =
                (epoxy_gl_version() >= 30 || epoxy_has_gl_extension("GL_EXT_gpu_shader4"));
 
+       // The user can specify that they want a timing report for each
+       // phase in an effect chain. However, that depends on this extension;
+       // without it, we do cannot even create the query objects.
+       movit_timer_queries_supported =
+               (epoxy_gl_version() >= 33 || epoxy_has_gl_extension("GL_ARB_timer_query"));
+
        return true;
 }
 
@@ -421,12 +428,14 @@ bool init_movit(const string& data_directory, MovitDebugLevel debug_level)
        }
 
        // Find out what shader model we should compile for.
+       // We need at least 1.30, due to use of (among others) integers.
        if (epoxy_is_desktop_gl()) {
-               if (get_glsl_version() >= 1.30) {
-                       movit_shader_model = MOVIT_GLSL_130;
-               } else {
-                       movit_shader_model = MOVIT_GLSL_110;
+               if (get_glsl_version() < 1.30f) {
+                       fprintf(stderr, "Movit system requirements: Needs at least GLSL version 1.30 (has version %.1f)\n",
+                               get_glsl_version());
+                       return false;
                }
+               movit_shader_model = MOVIT_GLSL_130;
        } else {
                movit_shader_model = MOVIT_ESSL_300;
        }