From: Steinar H. Gunderson Date: Sun, 9 Mar 2014 11:30:27 +0000 (+0100) Subject: Merge branch 'master' into epoxy X-Git-Tag: 1.1~12^2~45 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=12c11c0e615f7fc17ef7a600ff0c9099f7908dbc;hp=-c;p=movit Merge branch 'master' into epoxy --- 12c11c0e615f7fc17ef7a600ff0c9099f7908dbc diff --combined init.cpp index 3c781e1,13a86df..671c507 --- a/init.cpp +++ b/init.cpp @@@ -1,4 -1,4 +1,4 @@@ -#include +#include #include #include #include @@@ -221,12 -221,6 +221,6 @@@ void measure_roundoff_problems( 1.0f, 1.0f, 1.0f, 0.0f }; - float texcoords[] = { - 0.25f, 0.0f, - 0.25f, 0.0f, - 0.75f, 0.0f, - 0.75f, 0.0f - }; GLuint vao; glGenVertexArrays(1, &vao); @@@ -235,7 -229,7 +229,7 @@@ check_error(); GLuint position_vbo = fill_vertex_attribute(glsl_program_num, "position", 2, GL_FLOAT, sizeof(vertices), vertices); - GLuint texcoord_vbo = fill_vertex_attribute(glsl_program_num, "texcoord", 2, GL_FLOAT, sizeof(texcoords), texcoords); + GLuint texcoord_vbo = fill_vertex_attribute(glsl_program_num, "texcoord", 2, GL_FLOAT, sizeof(vertices), vertices); // Same data. glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); check_error(); @@@ -284,43 -278,32 +278,43 @@@ bool check_extensions() { // We fundamentally need FBOs and floating-point textures. - if (!glewIsSupported("GL_ARB_framebuffer_object")) return false; - if (!glewIsSupported("GL_ARB_texture_float")) return false; + // FBOs are covered by OpenGL 1.5, and are not an extension there. + // Floating-point textures are part of OpenGL 3.0 and newer. + if (epoxy_gl_version() < 15 && + !epoxy_has_gl_extension("GL_ARB_framebuffer_object")) return false; + if (epoxy_gl_version() < 30 && + !epoxy_has_gl_extension("GL_ARB_texture_float")) return false; // We assume that we can use non-power-of-two textures without restrictions. - if (!glewIsSupported("GL_ARB_texture_non_power_of_two")) return false; + if (epoxy_gl_version() < 20 && + !epoxy_has_gl_extension("GL_ARB_texture_non_power_of_two")) return false; // We also need GLSL fragment shaders. - if (!glewIsSupported("GL_ARB_fragment_shader")) return false; - if (!glewIsSupported("GL_ARB_shading_language_100")) return false; + if (epoxy_gl_version() < 20) { + if (!epoxy_has_gl_extension("GL_ARB_fragment_shader")) return false; + if (!epoxy_has_gl_extension("GL_ARB_shading_language_100")) return false; + } // FlatInput and YCbCrInput uses PBOs. (They could in theory do without, // but no modern card would really not provide it.) - if (!glewIsSupported("GL_ARB_pixel_buffer_object")) return false; + if (epoxy_gl_version() < 21 && + !epoxy_has_gl_extension("GL_ARB_pixel_buffer_object")) return false; // ResampleEffect uses RG textures to encode a two-component LUT. - if (!glewIsSupported("GL_ARB_texture_rg")) return false; + if (epoxy_gl_version() < 30 && + !epoxy_has_gl_extension("GL_ARB_texture_rg")) return false; // sRGB texture decode would be nice, but are not mandatory // (GammaExpansionEffect can do the same thing if needed). - movit_srgb_textures_supported = glewIsSupported("GL_EXT_texture_sRGB"); + movit_srgb_textures_supported = + (epoxy_gl_version() >= 21 || epoxy_has_gl_extension("GL_EXT_texture_sRGB")); // We may want to use round() at the end of the final shader, // if supported. We need either GLSL 1.30 or this extension to do that, // and 1.30 brings with it other things that we don't want to demand // for now. - movit_shader_rounding_supported = glewIsSupported("GL_EXT_gpu_shader4"); + movit_shader_rounding_supported = + (epoxy_gl_version() >= 30 || epoxy_has_gl_extension("GL_EXT_gpu_shader4")); return true; } @@@ -336,6 -319,11 +330,6 @@@ bool init_movit(const string& data_dire movit_data_directory = new string(data_directory); movit_debug_level = debug_level; - GLenum err = glewInit(); - if (err != GLEW_OK) { - return false; - } - // geez glPixelStorei(GL_PACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);