+struct RequiredExtension {
+ int min_equivalent_gl_version;
+ const char extension_name[64];
+};
+const RequiredExtension required_extensions[] = {
+ // We fundamentally need FBOs and floating-point textures.
+ // FBOs are covered by OpenGL 1.5, and are not an extension there.
+ // Floating-point textures are part of OpenGL 3.0 and newer.
+ { 15, "GL_ARB_framebuffer_object" },
+ { 30, "GL_ARB_texture_float" },
+
+ // We assume that we can use non-power-of-two textures without restrictions.
+ { 20, "GL_ARB_texture_non_power_of_two" },
+
+ // We also need GLSL fragment shaders.
+ { 20, "GL_ARB_fragment_shader" },
+ { 20, "GL_ARB_shading_language_100" },
+
+ // FlatInput and YCbCrInput uses PBOs. (They could in theory do without,
+ // but no modern card would really not provide it.)
+ { 21, "GL_ARB_pixel_buffer_object" },
+
+ // ResampleEffect uses RG textures to encode a two-component LUT.
+ // We also need GL_R several places, for single-channel input.
+ { 30, "GL_ARB_texture_rg" },
+};
+