X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=init.cpp;h=7f2f5ccf124e668bf3aaa3789be195003c3482fb;hp=d312cd8bd7e58eae1abdc7231a68b3532c8c138f;hb=65c6584f77bff0af0c8e38d1ac90298bcd55e9ac;hpb=706365ccee2ad69c5bc3608e12ca8e9ada7ce954 diff --git a/init.cpp b/init.cpp index d312cd8..7f2f5cc 100644 --- a/init.cpp +++ b/init.cpp @@ -15,7 +15,7 @@ namespace movit { bool movit_initialized = false; MovitDebugLevel movit_debug_level = MOVIT_DEBUG_ON; float movit_texel_subpixel_precision; -bool movit_timer_queries_supported; +bool movit_timer_queries_supported, movit_compute_shaders_supported; int movit_num_wrongly_rounded; MovitShaderModel movit_shader_model; @@ -310,6 +310,16 @@ bool check_extensions() movit_timer_queries_supported = (epoxy_gl_version() >= 33 || epoxy_has_gl_extension("GL_ARB_timer_query")); + // Certain effects have compute shader implementations, which may be + // more efficient than the normal fragment shader versions. + // GLSL 3.10 supposedly also has compute shaders, but I haven't tested them, + // so we require desktop OpenGL. + movit_compute_shaders_supported = + (epoxy_is_desktop_gl() && + (epoxy_gl_version() >= 43 || + (epoxy_has_gl_extension("GL_ARB_compute_shader") && + epoxy_has_gl_extension("GL_ARB_shader_image_load_store")))); + return true; }