nicegraf
ngf_device_capabilities Struct Reference

Data Fields

size_t uniform_buffer_offset_alignment
 
size_t storage_buffer_offset_alignment
 
size_t max_uniform_buffer_range
 
size_t texel_buffer_offset_alignment
 
size_t max_vertex_input_attributes_per_pipeline
 
size_t max_sampled_images_per_stage
 
size_t max_samplers_per_stage
 
size_t max_uniform_buffers_per_stage
 
size_t max_fragment_input_components
 
size_t max_fragment_inputs
 
size_t max_1d_image_dimension
 
size_t max_2d_image_dimension
 
size_t max_3d_image_dimension
 
size_t max_cube_image_dimension
 
size_t max_image_layers
 
size_t max_color_attachments_per_pass
 
float max_sampler_anisotropy
 
bool clipspace_z_zero_to_one
 
bool cubemap_arrays_supported
 
size_t framebuffer_color_sample_counts
 
ngf_sample_count max_supported_framebuffer_color_sample_count
 
size_t framebuffer_depth_sample_counts
 
ngf_sample_count max_supported_framebuffer_depth_sample_count
 
size_t texture_color_sample_counts
 
ngf_sample_count max_supported_texture_color_sample_count
 
size_t texture_depth_sample_counts
 
ngf_sample_count max_supported_texture_depth_sample_count
 
bool device_local_memory_is_host_visible
 

Detailed Description

Contains information about various device features, limits, etc. Clients shouldn't instantiate this structure. See ngf_get_device_capabilities.

Field Documentation

◆ clipspace_z_zero_to_one

bool ngf_device_capabilities::clipspace_z_zero_to_one

This flag is set to true if the platform supports [0; 1] range for the clip-space z coordinate. nicegraf enforces clip-space z to be in this range on all backends that support it. This ensures better precision for near-field objects. See the following for an in-depth explanation: http://web.archive.org/web/20210829130722/https://developer.nvidia.com/content/depth-precision-visualized

◆ cubemap_arrays_supported

bool ngf_device_capabilities::cubemap_arrays_supported

This flag is set to true if the device supports cubemap arrays.

◆ device_local_memory_is_host_visible

bool ngf_device_capabilities::device_local_memory_is_host_visible

Indicates whether the device-local storage is also host visible. Examples of cases where this may be supported are iGPU systems with unified memory, or discrete GPUs with ReBAR enabled. On systems with this capability, device-local storage can be mapped directly into the host address space, removing the need for host-visible staging buffers in certain cases.

◆ framebuffer_color_sample_counts

size_t ngf_device_capabilities::framebuffer_color_sample_counts

Bitmap representing multisample count support for framebuffer color attachments For example, (framebuffer_color_sample_counts & 16) indicates support for 16 samples

◆ framebuffer_depth_sample_counts

size_t ngf_device_capabilities::framebuffer_depth_sample_counts

Bitmap representing multisample count support for framebuffer depth attachments For example, (framebuffer_depth_sample_counts & 16) indicates support for 16 samples

◆ max_1d_image_dimension

size_t ngf_device_capabilities::max_1d_image_dimension

Maximum allowed width of a 1D image.

◆ max_2d_image_dimension

size_t ngf_device_capabilities::max_2d_image_dimension

Maximum allowed width, or height of a 2D image.

◆ max_3d_image_dimension

size_t ngf_device_capabilities::max_3d_image_dimension

Maximum allowed width, height, or depth of a 3D image.

◆ max_color_attachments_per_pass

size_t ngf_device_capabilities::max_color_attachments_per_pass

Maximum number of color attachments that can be written to during a render pass.

◆ max_cube_image_dimension

size_t ngf_device_capabilities::max_cube_image_dimension

Maximum allowed width, or height of a cubemap.

◆ max_fragment_input_components

size_t ngf_device_capabilities::max_fragment_input_components

This is the maximum number of components, across all inputs, for the fragment stage. "Input component" refers to the individual components of an input vector. For example, if the fragment stage has a single float4 input (vector of 4 floats), then it has 4 input components.

◆ max_fragment_inputs

size_t ngf_device_capabilities::max_fragment_inputs

This is the maximum number of inputs for the fragment stage.

◆ max_image_layers

size_t ngf_device_capabilities::max_image_layers

Maximum allowed number of layers in an image.

◆ max_sampled_images_per_stage

size_t ngf_device_capabilities::max_sampled_images_per_stage

The maximum allowed number of sampled images (textures) per single shader stage. Descriptors with type NGF_DESCRIPTOR_IMAGE_AND_SAMPLER and NGF_DESCRIPTOR_TEXEL_BUFFER do count against this limit.

◆ max_sampler_anisotropy

float ngf_device_capabilities::max_sampler_anisotropy

The maximum degree of sampler anisotropy.

◆ max_samplers_per_stage

size_t ngf_device_capabilities::max_samplers_per_stage

The maximum allowed number of sampler objects per single shader stage. Descriptors with type NGF_DESCRIPTOR_IMAGE_AND_SAMPLER do count against this limit.

◆ max_supported_framebuffer_color_sample_count

ngf_sample_count ngf_device_capabilities::max_supported_framebuffer_color_sample_count

The highest supported sample count for framebuffer color attachments. This value is derived from framebuffer_color_sample_counts.

◆ max_supported_framebuffer_depth_sample_count

ngf_sample_count ngf_device_capabilities::max_supported_framebuffer_depth_sample_count

The highest supported sample count for framebuffer depth attachments. This value is derived from framebuffer_depth_sample_counts.

◆ max_supported_texture_color_sample_count

ngf_sample_count ngf_device_capabilities::max_supported_texture_color_sample_count

The highest supported sample count for color textures. This value is derived from texture_color_sample_counts.

◆ max_supported_texture_depth_sample_count

ngf_sample_count ngf_device_capabilities::max_supported_texture_depth_sample_count

The highest supported sample count for depth textures. This value is derived from texture_depth_sample_counts.

◆ max_uniform_buffer_range

size_t ngf_device_capabilities::max_uniform_buffer_range

When binding a uniform buffer, the specified range must not exceed this value.

◆ max_uniform_buffers_per_stage

size_t ngf_device_capabilities::max_uniform_buffers_per_stage

The maximum allowed number of uniform buffers per single shader stage.

◆ max_vertex_input_attributes_per_pipeline

size_t ngf_device_capabilities::max_vertex_input_attributes_per_pipeline

The maximum allowed number of vertex attributes per pipeline.

◆ storage_buffer_offset_alignment

size_t ngf_device_capabilities::storage_buffer_offset_alignment

When binding storage buffers, the specified offset must be a multiple of this number.

◆ texel_buffer_offset_alignment

size_t ngf_device_capabilities::texel_buffer_offset_alignment

When binding texel buffers, the specified offset must be a multiple of this number.

◆ texture_color_sample_counts

size_t ngf_device_capabilities::texture_color_sample_counts

Bitmap representing multisample count support for color textures For example, (texture_color_sample_counts & 16) indicates support for 16 samples

◆ texture_depth_sample_counts

size_t ngf_device_capabilities::texture_depth_sample_counts

Bitmap representing multisample count support for depth textures For example, (texture_depth_sample_counts & 16) indicates support for 16 samples

◆ uniform_buffer_offset_alignment

size_t ngf_device_capabilities::uniform_buffer_offset_alignment

When binding uniform buffers, the specified offset must be a multiple of this number.