LLGL 0.05 Beta
Loading...
Searching...
No Matches
LLGL::RenderingLimits Struct Reference

Contains all rendering limitations such as maximum buffer size, maximum texture resolution etc. More...

#include <RenderSystemFlags.h>

Public Attributes

float lineWidthRange [2] = { 1.0f, 1.0f }
 Specifies the range for rasterizer line widths. By default [1, 1].
std::uint32_t maxTextureArrayLayers = 0
 Specifies the maximum number of texture array layers (for 1D-, 2D-, and cube textures).
std::uint32_t maxColorAttachments = 0
 Specifies the maximum number of color attachments for each render target.
std::uint32_t maxPatchVertices = 0
 Specifies the maximum number of patch control points.
std::uint32_t max1DTextureSize = 0
 Specifies the maximum size of each 1D texture.
std::uint32_t max2DTextureSize = 0
 Specifies the maximum size of each 2D texture (for width and height).
std::uint32_t max3DTextureSize = 0
 Specifies the maximum size of each 3D texture (for width, height, and depth).
std::uint32_t maxCubeTextureSize = 0
 Specifies the maximum size of each cube texture (for width and height).
std::uint32_t maxAnisotropy = 0
 Specifies the maximum anisotropy texture filter.
std::uint32_t maxComputeShaderWorkGroups [3] = { 0, 0, 0 }
 Specifies the maximum number of work groups in a compute shader.
std::uint32_t maxComputeShaderWorkGroupSize [3] = { 0, 0, 0 }
 Specifies the maximum work group size in a compute shader.
std::uint32_t maxViewports = 0
 Specifies the maximum number of viewports and scissor rectangles the render system supports. Upper limit is specified by LLGL_MAX_NUM_VIEWPORTS_AND_SCISSORS.
std::uint32_t maxViewportSize [2] = { 0, 0 }
 Specifies the maximum width and height of each viewport and scissor rectangle.
std::uint32_t maxViews = 0
 Specifies the maximum number of views for multiview (single-pass layered) rendering.
std::uint64_t maxBufferSize = 0
 Specifies the maximum size (in bytes) that is supported for hardware buffers (vertex, index, storage buffers).
std::uint64_t maxConstantBufferSize = 0
 Specifies the maximum size (in bytes) that is supported for hardware constant buffers.
std::uint32_t maxVertexBufferInputs = 0
 Specifies the maximum number of vertex buffer input slots that is supported by the graphics device.
std::uint32_t maxStreamOutputs = 0
 Specifies the maximum number of simultaneous stream-output buffers.
std::uint32_t maxTessFactor = 0
 Specifies the maximum tessellation factor.
std::uint64_t minConstantBufferAlignment = 0
 Specifies the minimum alignment (in bytes) for Constant Buffer Views (CBV).
std::uint64_t minSampledBufferAlignment = 0
 Specifies the minimum alignment (in bytes) for sampled buffers, aka. Shader Resource Views (SRV).
std::uint64_t minStorageBufferAlignment = 0
 Specifies the minimum alignment (in bytes) for storage buffers, aka. Unordered Access Views (UAV).
std::uint32_t maxColorBufferSamples = 0
 Specifies the maximum number of samples for color buffers. Common values are 4, 8, 16, or 32.
std::uint32_t maxDepthBufferSamples = 0
 Specifies the maximum number of samples for depth buffers. Common values are 4, 8, 16, or 32.
std::uint32_t maxStencilBufferSamples = 0
 Specifies the maximum number of samples for stencil buffers. Common values are 4, 8, 16, or 32.
std::uint32_t maxNoAttachmentSamples = 0
 Specifies the maximum number of samples for a RenderTarget with no attachments. Common values are 4, 8, 16, or 32.
long storageResourceStageFlags = 0
 Specifies the shader stages in which storage buffers and textures (aka UAVs/ SSBOs) can be used.

Detailed Description

Contains all rendering limitations such as maximum buffer size, maximum texture resolution etc.

See also
RenderingCapabilities::limits

Member Data Documentation

◆ lineWidthRange

float LLGL::RenderingLimits::lineWidthRange[2] = { 1.0f, 1.0f }

Specifies the range for rasterizer line widths. By default [1, 1].

Note
Only supported with: OpenGL, Vulkan.
See also
RasterizerDescriptor::lineWidth

◆ max1DTextureSize

std::uint32_t LLGL::RenderingLimits::max1DTextureSize = 0

Specifies the maximum size of each 1D texture.

See also
TextureDescriptor::extent

◆ max2DTextureSize

std::uint32_t LLGL::RenderingLimits::max2DTextureSize = 0

Specifies the maximum size of each 2D texture (for width and height).

See also
TextureDescriptor::extent

◆ max3DTextureSize

std::uint32_t LLGL::RenderingLimits::max3DTextureSize = 0

Specifies the maximum size of each 3D texture (for width, height, and depth).

See also
TextureDescriptor::extent

◆ maxAnisotropy

std::uint32_t LLGL::RenderingLimits::maxAnisotropy = 0

Specifies the maximum anisotropy texture filter.

See also
SamplerDescriptor::maxAnisotropy

◆ maxBufferSize

std::uint64_t LLGL::RenderingLimits::maxBufferSize = 0

Specifies the maximum size (in bytes) that is supported for hardware buffers (vertex, index, storage buffers).

Remarks
Constant buffers are a special case for which maxConstantBufferSize can be used.
See also
BufferDescriptor::size
maxConstantBufferSize

◆ maxColorAttachments

std::uint32_t LLGL::RenderingLimits::maxColorAttachments = 0

Specifies the maximum number of color attachments for each render target.

Remarks
This value must not be greater than 8.
See also
RenderTargetDescriptor::attachments
RenderPassDescriptor::colorAttachments
BlendDescriptor::targets

◆ maxColorBufferSamples

std::uint32_t LLGL::RenderingLimits::maxColorBufferSamples = 0

Specifies the maximum number of samples for color buffers. Common values are 4, 8, 16, or 32.

Remarks
Most renderers will return at least a value of 4.
See also
RenderPassDescriptor::samples
RenderTargetDescriptor::samples
TextureDescriptor::samples

◆ maxComputeShaderWorkGroups

std::uint32_t LLGL::RenderingLimits::maxComputeShaderWorkGroups[3] = { 0, 0, 0 }

Specifies the maximum number of work groups in a compute shader.

See also
CommandBuffer::Dispatch

◆ maxComputeShaderWorkGroupSize

std::uint32_t LLGL::RenderingLimits::maxComputeShaderWorkGroupSize[3] = { 0, 0, 0 }

Specifies the maximum work group size in a compute shader.

◆ maxConstantBufferSize

std::uint64_t LLGL::RenderingLimits::maxConstantBufferSize = 0

Specifies the maximum size (in bytes) that is supported for hardware constant buffers.

Remarks
This is typically a lot smaller than the maximum size for other types of buffers.
See also
BufferDescriptor::size

◆ maxCubeTextureSize

std::uint32_t LLGL::RenderingLimits::maxCubeTextureSize = 0

Specifies the maximum size of each cube texture (for width and height).

See also
TextureDescriptor::extent

◆ maxDepthBufferSamples

std::uint32_t LLGL::RenderingLimits::maxDepthBufferSamples = 0

Specifies the maximum number of samples for depth buffers. Common values are 4, 8, 16, or 32.

Remarks
Most renderers will return at least a value of 4.
See also
RenderPassDescriptor::samples
RenderTargetDescriptor::samples
TextureDescriptor::samples

◆ maxNoAttachmentSamples

std::uint32_t LLGL::RenderingLimits::maxNoAttachmentSamples = 0

Specifies the maximum number of samples for a RenderTarget with no attachments. Common values are 4, 8, 16, or 32.

Remarks
Most renderers will return at least a value of 4.
See also
RenderTargetDescriptor::samples

◆ maxPatchVertices

std::uint32_t LLGL::RenderingLimits::maxPatchVertices = 0

Specifies the maximum number of patch control points.

See also
PrimitiveTopology::Patches1
PrimitiveTopology::Patches32

◆ maxStencilBufferSamples

std::uint32_t LLGL::RenderingLimits::maxStencilBufferSamples = 0

Specifies the maximum number of samples for stencil buffers. Common values are 4, 8, 16, or 32.

Remarks
Most renderers will return at least a value of 4.
See also
RenderPassDescriptor::samples
RenderTargetDescriptor::samples
TextureDescriptor::samples

◆ maxStreamOutputs

std::uint32_t LLGL::RenderingLimits::maxStreamOutputs = 0

Specifies the maximum number of simultaneous stream-output buffers.

Remarks
This must not be larger than LLGL_MAX_NUM_SO_BUFFERS which is 4.
See also
CommandBuffer::BeginStreamOutput
RenderingFeatures::hasStreamOutputs

◆ maxTessFactor

std::uint32_t LLGL::RenderingLimits::maxTessFactor = 0

Specifies the maximum tessellation factor.

Remarks
Metal for example supports 64 on macOS and 16 on iOS.
See also
TessellationDescriptor::maxTessFactor

◆ maxTextureArrayLayers

std::uint32_t LLGL::RenderingLimits::maxTextureArrayLayers = 0

Specifies the maximum number of texture array layers (for 1D-, 2D-, and cube textures).

See also
TextureDescriptor::arrayLayers

◆ maxVertexBufferInputs

std::uint32_t LLGL::RenderingLimits::maxVertexBufferInputs = 0

Specifies the maximum number of vertex buffer input slots that is supported by the graphics device.

Remarks
See also
RenderSystem::CreateBufferArray
CommandBuffer::SetVertexBuffers

◆ maxViewports

std::uint32_t LLGL::RenderingLimits::maxViewports = 0

Specifies the maximum number of viewports and scissor rectangles the render system supports. Upper limit is specified by LLGL_MAX_NUM_VIEWPORTS_AND_SCISSORS.

See also
CommandBuffer::SetViewports
CommandBuffer::SetScissors
GraphicsPipelineDescriptor::viewports
GraphicsPipelineDescriptor::scissors
RenderingFeatures::hasViewportArrays

◆ maxViewportSize

std::uint32_t LLGL::RenderingLimits::maxViewportSize[2] = { 0, 0 }

Specifies the maximum width and height of each viewport and scissor rectangle.

See also
Viewport::width
Viewport::height
Scissor::width
Scissor::height

◆ maxViews

std::uint32_t LLGL::RenderingLimits::maxViews = 0

Specifies the maximum number of views for multiview (single-pass layered) rendering.

Remarks
This is the upper limit for RenderPassDescriptor::views. This values should only be more than 1 if hasMultiview is true.
See also
RenderPassDescriptor::views
RenderingFeatures::hasMultiview

◆ minConstantBufferAlignment

std::uint64_t LLGL::RenderingLimits::minConstantBufferAlignment = 0

Specifies the minimum alignment (in bytes) for Constant Buffer Views (CBV).

See also
BufferViewDescriptor::offset
BufferViewDescriptor::size

◆ minSampledBufferAlignment

std::uint64_t LLGL::RenderingLimits::minSampledBufferAlignment = 0

Specifies the minimum alignment (in bytes) for sampled buffers, aka. Shader Resource Views (SRV).

See also
BufferViewDescriptor::offset
BufferViewDescriptor::size

◆ minStorageBufferAlignment

std::uint64_t LLGL::RenderingLimits::minStorageBufferAlignment = 0

Specifies the minimum alignment (in bytes) for storage buffers, aka. Unordered Access Views (UAV).

See also
BufferViewDescriptor::offset
BufferViewDescriptor::size

◆ storageResourceStageFlags

long LLGL::RenderingLimits::storageResourceStageFlags = 0

Specifies the shader stages in which storage buffers and textures (aka UAVs/ SSBOs) can be used.

Remarks
If storage resources are not supported at all, this is zero.
See also
RenderingFeatures::hasStorageBuffers

The documentation for this struct was generated from the following file: