pub(crate) fn mobile_device_limits(adapter_limits: wgpu::Limits) -> wgpu::Limits {
let mut limits = wgpu::Limits::downlevel_defaults().using_resolution(adapter_limits.clone());
limits.max_uniform_buffer_binding_size = adapter_limits
.max_uniform_buffer_binding_size
.min(wgpu::Limits::default().max_uniform_buffer_binding_size);
limits
}
#[cfg(test)]
mod tests {
use super::mobile_device_limits;
#[test]
fn uniform_binding_size_follows_adapter_up_to_desktop_default() {
let desktop_binding = wgpu::Limits::default().max_uniform_buffer_binding_size;
let capable = mobile_device_limits(wgpu::Limits::default());
assert_eq!(capable.max_uniform_buffer_binding_size, desktop_binding);
let mut minimal = wgpu::Limits::downlevel_defaults();
minimal.max_uniform_buffer_binding_size = 16384;
let limits = mobile_device_limits(minimal);
assert_eq!(limits.max_uniform_buffer_binding_size, 16384);
let big_textures = wgpu::Limits {
max_texture_dimension_2d: 16384,
..wgpu::Limits::default()
};
let limits = mobile_device_limits(big_textures);
assert_eq!(limits.max_texture_dimension_2d, 16384);
}
}