]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/device.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / device.h
index 6a6a76080fed875ec165622ef5b194b5a3539586..8c7e92a99f0144e6d4e0f8052314239d90913191 100644 (file)
@@ -2,11 +2,40 @@
 #define MSP_GL_DEVICE_H_
 
 #include <msp/graphics/window.h>
+#include "backend.h"
 #include "device_backend.h"
+#include "glsl/features.h"
 
 namespace Msp {
 namespace GL {
 
+/**
+Contains information about various limits imposed by the graphics device.
+*/
+struct DeviceLimits
+{
+       unsigned max_clip_planes = 6;
+       unsigned max_vertex_attributes = 16;
+       unsigned max_texture_bindings = 16;
+       unsigned max_storage_texture_bindings = 8;
+       unsigned max_color_attachments = 8;
+       unsigned max_samples = 4;
+       unsigned max_uniform_bindings = 24;
+       unsigned uniform_buffer_alignment = 256;
+       float max_anisotropy = 1.0f;
+};
+
+/**
+Contains information about a graphics device.
+*/
+struct DeviceInfo
+{
+       GraphicsApi api;
+       Version api_version;
+       DeviceLimits limits;
+       SL::Features glsl_features;
+};
+
 /**
 Represents a graphics device.  An instance must be created to use the library.
 */
@@ -15,13 +44,17 @@ class Device: public DeviceBackend
        friend DeviceBackend;
 
 private:
+       DeviceInfo info;
+
        static Device *current;
 
 public:
-       Device(Graphics::Window &, const DeviceOptions & = DeviceOptions());
+       Device(Graphics::Window &);
+       Device(Graphics::Window &, const DeviceOptions &);
        ~Device();
 
        using DeviceBackend::get_context;
+       const DeviceInfo &get_info() const { return info; }
 
        static Device &get_current();
 };