Add defaults to wgpu::limits

This commit is contained in:
Nikita Lisitsa 2024-11-14 13:47:56 +03:00
parent e6ae945b92
commit f986f0d4b1
3 changed files with 34 additions and 34 deletions

View file

@ -49,38 +49,38 @@ namespace psemek::wgpu
struct limits struct limits
{ {
std::uint32_t max_texture_dimension_1D; std::uint32_t max_texture_dimension_1D = 8192;
std::uint32_t max_texture_dimension_2D; std::uint32_t max_texture_dimension_2D = 8192;
std::uint32_t max_texture_dimension_3D; std::uint32_t max_texture_dimension_3D = 2048;
std::uint32_t max_texture_array_layers; std::uint32_t max_texture_array_layers = 256;
std::uint32_t max_bind_groups; std::uint32_t max_bind_groups = 4;
std::uint32_t max_bind_groups_plus_vertex_buffers; std::uint32_t max_bind_groups_plus_vertex_buffers = 8;
std::uint32_t max_bindings_per_bind_group; std::uint32_t max_bindings_per_bind_group = 1000;
std::uint32_t max_dynamic_uniform_buffers_per_pipeline_layout; std::uint32_t max_dynamic_uniform_buffers_per_pipeline_layout = 8;
std::uint32_t max_dynamic_storage_buffers_per_pipeline_layout; std::uint32_t max_dynamic_storage_buffers_per_pipeline_layout = 4;
std::uint32_t max_sampled_textures_per_shader_stage; std::uint32_t max_sampled_textures_per_shader_stage = 16;
std::uint32_t max_samplers_per_shader_stage; std::uint32_t max_samplers_per_shader_stage = 16;
std::uint32_t max_storage_buffers_per_shader_stage; std::uint32_t max_storage_buffers_per_shader_stage = 8;
std::uint32_t max_storage_textures_per_shader_stage; std::uint32_t max_storage_textures_per_shader_stage = 4;
std::uint32_t max_uniform_buffers_per_shader_stage; std::uint32_t max_uniform_buffers_per_shader_stage = 12;
std::uint64_t max_uniform_buffer_binding_size; std::uint64_t max_uniform_buffer_binding_size = 64 * 1024;
std::uint64_t max_storage_buffer_binding_size; std::uint64_t max_storage_buffer_binding_size = 128 * 1024 * 1024;
std::uint32_t min_uniform_buffer_offset_alignment; std::uint32_t min_uniform_buffer_offset_alignment = 256;
std::uint32_t min_storage_buffer_offset_alignment; std::uint32_t min_storage_buffer_offset_alignment = 256;
std::uint32_t max_vertex_buffers; std::uint32_t max_vertex_buffers = 8;
std::uint64_t max_buffer_size; std::uint64_t max_buffer_size = 256 * 1024 * 1024;
std::uint32_t max_vertex_attributes; std::uint32_t max_vertex_attributes = 16;
std::uint32_t max_vertex_buffer_array_stride; std::uint32_t max_vertex_buffer_array_stride = 2048;
std::uint32_t max_inter_stage_shader_components; std::uint32_t max_inter_stage_shader_components = 60;
std::uint32_t max_inter_stage_shader_variables; std::uint32_t max_inter_stage_shader_variables = 15;
std::uint32_t max_color_attachments; std::uint32_t max_color_attachments = 1;
std::uint32_t max_color_attachment_bytes_per_sample; std::uint32_t max_color_attachment_bytes_per_sample = 4;
std::uint32_t max_compute_workgroup_storage_size; std::uint32_t max_compute_workgroup_storage_size = 16384;
std::uint32_t max_compute_invocations_per_workgroup; std::uint32_t max_compute_invocations_per_workgroup = 256;
std::uint32_t max_compute_workgroup_size_x; std::uint32_t max_compute_workgroup_size_x = 256;
std::uint32_t max_compute_workgroup_size_y; std::uint32_t max_compute_workgroup_size_y = 256;
std::uint32_t max_compute_workgroup_size_z; std::uint32_t max_compute_workgroup_size_z = 64;
std::uint32_t max_compute_workgroups_per_dimension; std::uint32_t max_compute_workgroups_per_dimension = 65535;
}; };
enum class create_pipeline_async_status : std::uint32_t enum class create_pipeline_async_status : std::uint32_t

View file

@ -22,7 +22,7 @@ namespace psemek::wgpu
// TODO: support out chain // TODO: support out chain
wgpu::limits result; wgpu::limits result;
static_assert(sizeof(result) == sizeof(limits.limits)); static_assert(sizeof(result) == sizeof(limits.limits));
std::memcpy(&result, &limits.limits, sizeof(result)); std::memcpy((char *)&result, (char *)&limits.limits, sizeof(result));
return result; return result;
} }

View file

@ -397,7 +397,7 @@ namespace psemek::wgpu
// TODO: support out chain // TODO: support out chain
wgpu::limits result; wgpu::limits result;
static_assert(sizeof(result) == sizeof(limits.limits)); static_assert(sizeof(result) == sizeof(limits.limits));
std::memcpy(&result, &limits.limits, sizeof(result)); std::memcpy((char *)&result, (char *)&limits.limits, sizeof(result));
return result; return result;
} }