X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fdevice.h;h=2b75e4c81a9d9613ee478fc64ac1e99c4aac3517;hp=6a6a76080fed875ec165622ef5b194b5a3539586;hb=d16d28d2ccf7c6255204f02975834f713ff1df08;hpb=fb04f4ef9162f58f494cf4323cf3dc66b2f3d4ac diff --git a/source/core/device.h b/source/core/device.h index 6a6a7608..2b75e4c8 100644 --- a/source/core/device.h +++ b/source/core/device.h @@ -2,11 +2,39 @@ #define MSP_GL_DEVICE_H_ #include +#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_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,6 +43,8 @@ class Device: public DeviceBackend friend DeviceBackend; private: + DeviceInfo info; + static Device *current; public: @@ -22,6 +52,7 @@ public: ~Device(); using DeviceBackend::get_context; + const DeviceInfo &get_info() const { return info; } static Device &get_current(); };