1 //
2 //  SuperTuxKart - a fun racing game with go-kart
3 //  Copyright (C) 2014-2015 Joerg Henrichs
4 //
5 //  This program is free software; you can redistribute it and/or
6 //  modify it under the terms of the GNU General Public License
7 //  as published by the Free Software Foundation; either version 3
8 //  of the License, or (at your option) any later version.
9 //
10 //  This program is distributed in the hope that it will be useful,
11 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //  GNU General Public License for more details.
14 //
15 //  You should have received a copy of the GNU General Public License
16 //  along with this program; if not, write to the Free Software
17 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 
19 #ifndef HEADER_GRAPHICS_RESTrICTIONS_HPP
20 #define HEADER_GRAPHICS_RESTrICTIONS_HPP
21 
22 /**
23  * \defgroup graphics
24  */
25 
26 #include <string>
27 #include <vector>
28 
29 namespace GraphicsRestrictions
30 {
31     /** Which graphical restrictions can be defined. Note that
32      *  the variable m_names_of_restrictions in the cpp file contains the
33      *  string representation used in the XML files. Any change to this
34      *  type declaration needs a change in that variable as well. */
35     enum GraphicsRestrictionsType
36     {
37         GR_UNIFORM_BUFFER_OBJECT,
38         GR_GEOMETRY_SHADER,
39         GR_DRAW_INDIRECT,
40         GR_TEXTURE_VIEW,
41         GR_TEXTURE_STORAGE,
42         GR_IMAGE_LOAD_STORE,
43         GR_BASE_INSTANCE,
44         GR_COMPUTE_SHADER,
45         GR_ARRAYS_OF_ARRAYS,
46         GR_SHADER_STORAGE_BUFFER_OBJECT,
47         GR_MULTI_DRAW_INDIRECT,
48         GR_SHADER_ATOMIC_COUNTERS,
49         GR_BUFFER_STORAGE,
50         GR_BINDLESS_TEXTURE,
51         GR_EXT_TEXTURE_COMPRESSION_S3TC,
52         GR_AMD_VERTEX_SHADER_LAYER,
53         GR_EXPLICIT_ATTRIB_LOCATION,
54         GR_TEXTURE_FILTER_ANISOTROPIC,
55         GR_TEXTURE_FORMAT_BGRA8888,
56         GR_COLOR_BUFFER_FLOAT,
57         GR_DRIVER_RECENT_ENOUGH,
58         GR_HIGHDEFINITION_TEXTURES,
59         GR_HIGHDEFINITION_TEXTURES_256,
60         GR_ADVANCED_PIPELINE,
61         GR_CORRECT_10BIT_NORMALIZATION,
62         GR_GI,
63         GR_FORCE_LEGACY_DEVICE,
64         GR_VERTEX_ID_WORKING,
65         GR_HARDWARE_SKINNING,
66         GR_NPOT_TEXTURES,
67         GR_TEXTURE_BUFFER_OBJECT,
68         GR_SYSTEM_SCREEN_KEYBOARD,
69         GR_COUNT  /** MUST be last entry. */
70     } ;
71 
72     void init(const std::string &driver_version,
73               const std::string &card_name,
74               const std::string &vendor       );
75     bool isDisabled(GraphicsRestrictionsType type);
76 
77     void unitTesting();
78 };   // HardwareStats
79 
80 #endif
81