]> git.sesse.net Git - movit/commitdiff
Merge branch 'master' into epoxy
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 9 Mar 2014 11:30:27 +0000 (12:30 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 9 Mar 2014 11:30:27 +0000 (12:30 +0100)
1  2 
init.cpp

diff --combined init.cpp
index 3c781e125bb45a366da2d04229da3cfe7f99bbb6,13a86df236d5ea909dc269c8f8af827e1b7b5a35..671c507c5588c7faf5783b7f0a500d1780fc9162
+++ b/init.cpp
@@@ -1,4 -1,4 +1,4 @@@
 -#include <GL/glew.h>
 +#include <epoxy/gl.h>
  #include <assert.h>
  #include <stddef.h>
  #include <algorithm>
@@@ -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);
        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();
  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);