1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ix!();

#[derive(Debug,Copy,Clone)]
pub struct WaveTableDim {
    pub mipmap_levels: usize,
    pub num_tables:    usize,
    pub table_len:     usize,
}

impl Default for WaveTableDim {
    fn default() -> Self {
        Self {
            mipmap_levels: 1,
            num_tables: 1,
            table_len: 1024,
        }
    }
}

pub fn required_mipmap_levels(table_len: usize) -> usize 
{
    let mut levels = 1;

    while (( 1 << levels ) < table_len ) & (levels < MAX_MIPMAP_LEVELS) 
    {
        levels += 1;
    }

    levels as usize
}