// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Renderer module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_RENDERER_RENDERDEVICEINFO_HPP #define NAZARA_RENDERER_RENDERDEVICEINFO_HPP #include #include #include #include namespace Nz { struct RenderDeviceFeatures { bool anisotropicFiltering = false; bool computeShaders = false; bool depthClamping = false; bool nonSolidFaceFilling = false; bool storageBuffers = false; bool textureReadWithoutFormat = false; bool textureReadWrite = false; bool textureWriteWithoutFormat = false; bool unrestrictedTextureViews = false; }; struct RenderDeviceLimits { UInt64 maxComputeSharedMemorySize; UInt32 maxComputeWorkGroupInvocations; Vector3ui32 maxComputeWorkGroupCount; Vector3ui32 maxComputeWorkGroupSize; UInt64 maxStorageBufferSize; UInt64 maxUniformBufferSize; UInt64 minStorageBufferOffsetAlignment; UInt64 minUniformBufferOffsetAlignment; }; struct RenderDeviceInfo { RenderDeviceFeatures features; RenderDeviceLimits limits; RenderDeviceType type; std::string name; }; } #endif // NAZARA_RENDERER_RENDERDEVICEINFO_HPP