]> git.tdb.fi Git - libs/gl.git/blob - source/glsl/features.cpp
Improve compatibility checks of location qualifiers in various contexts
[libs/gl.git] / source / glsl / features.cpp
1 #include <msp/gl/extensions/arb_enhanced_layouts.h>
2 #include <msp/gl/extensions/arb_explicit_attrib_location.h>
3 #include <msp/gl/extensions/arb_explicit_uniform_location.h>
4 #include <msp/gl/extensions/arb_gpu_shader5.h>
5 #include <msp/gl/extensions/arb_separate_shader_objects.h>
6 #include <msp/gl/extensions/arb_uniform_buffer_object.h>
7 #include <msp/gl/extensions/ext_gpu_shader4.h>
8 #include <msp/gl/extensions/ext_texture_array.h>
9 #include "features.h"
10
11 namespace Msp {
12 namespace GL {
13 namespace SL {
14
15 Features::Features():
16         gl_api(OPENGL),
17         arb_enhanced_layouts(false),
18         arb_explicit_attrib_location(false),
19         arb_explicit_uniform_location(false),
20         arb_gpu_shader5(false),
21         arb_separate_shader_objects(false),
22         arb_uniform_buffer_object(false),
23         ext_gpu_shader4(false),
24         ext_texture_array(false),
25         max_constant_id(0x7FFFFFFF)
26 { }
27
28 Features Features::from_context()
29 {
30         Features features;
31         features.gl_api = get_gl_api();
32         features.glsl_version = get_glsl_version();
33         features.arb_enhanced_layouts = ARB_enhanced_layouts;
34         features.arb_explicit_attrib_location = ARB_explicit_attrib_location;
35         features.arb_explicit_uniform_location = ARB_explicit_uniform_location;
36         features.arb_gpu_shader5 = ARB_gpu_shader5;
37         features.arb_separate_shader_objects = ARB_separate_shader_objects;
38         features.arb_uniform_buffer_object = ARB_uniform_buffer_object;
39         features.ext_gpu_shader4 = EXT_gpu_shader4;
40         features.ext_texture_array = EXT_texture_array;
41         return features;
42 }
43
44 Features Features::all()
45 {
46         Features features;
47         features.gl_api = OPENGL;
48         features.glsl_version = Version(4, 60);
49         features.arb_enhanced_layouts = true;
50         features.arb_explicit_attrib_location = true;
51         features.arb_explicit_uniform_location = true;
52         features.arb_gpu_shader5 = true;
53         features.arb_separate_shader_objects = true;
54         features.arb_uniform_buffer_object = true;
55         features.ext_gpu_shader4 = true;
56         features.ext_texture_array = true;
57         return features;
58 }
59
60 } // namespace SL
61 } // namespace GL
62 } // namespace Msp