#include #include #pragma once typedef struct { uint32_t deviceId; uint32_t vendorId; const char* name; const char* renderer; uint32_t subgroupSize; bool discrete; } GraphicsDevice; typedef struct { bool textureBC; bool textureASTC; bool wireframe; bool depthClamp; bool indirectDrawFirstInstance; bool float64; bool int64; bool int16; } GraphicsFeatures; typedef struct { uint32_t textureSize2D; uint32_t textureSize3D; uint32_t textureSizeCube; uint32_t textureLayers; uint32_t renderSize[3]; uint32_t uniformBufferRange; uint32_t storageBufferRange; uint32_t uniformBufferAlign; uint32_t storageBufferAlign; uint32_t vertexAttributes; uint32_t vertexBufferStride; uint32_t vertexShaderOutputs; uint32_t clipDistances; uint32_t cullDistances; uint32_t clipAndCullDistances; uint32_t computeDispatchCount[3]; uint32_t computeWorkgroupSize[3]; uint32_t computeWorkgroupVolume; uint32_t computeSharedMemory; uint32_t shaderConstantSize; uint32_t indirectDrawCount; uint32_t instances; float anisotropy; float pointSize; } GraphicsLimits; bool lovrGraphicsInit(bool debug); void lovrGraphicsDestroy(void); void lovrGraphicsGetDevice(GraphicsDevice* device); void lovrGraphicsGetFeatures(GraphicsFeatures* features); void lovrGraphicsGetLimits(GraphicsLimits* limits);