Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 September 28

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Всего 6 отдельных иерархий было. А так как верхний чанк 256МБ, то на видеокарте память кончалась
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А, стоп.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Я думал ты и мне рекомендуешь рекурсивный подход.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Не. Тебе ни к чему. Ты же не прямо в ось лезешь за аллокацией чанков. А в GlobalAlloc
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Так секунду.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
В Вулкане просто рекомендуется не аллоцировать из драйвера мельче чем 32МБ
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Ты рекомендуешь сделать иерархию битмапов, менеджащую плоский список больших чанков. Так что верхний уровень битмапа менеджит большие чанки, а его подуровни — чанки внутри этих чанков.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Не. Я рекомендую сделать

struct Chunked {
 sizes: Vec<Size>,
}

struct Size {
 free: Bitmap,
 chunks: Vec<*mut u8>,
}
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Где каждый Size под блоки размера 1 << index
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
А free говорит тебе которые блоки свободны
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Примерно за log(n) позволяя найти свободны блок
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Это я говорю log(n), но по факту имею ввиду 4
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А. Нуу это же скучнее 😁. И не то чтоб было сильно сложней сделать иерархический битмап, нет?
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Битмап то сам иерархический для быстрого поиска
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
struct Chunked {
   level1:  Vec<u64>,
   level2: Vec<[u64; 64]>,
   blocks: Arena<[u8; 512]>,
}
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Как-то так.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
И как ты 8кб выделишь тут? У тебя шаг роста x64
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Только с менее резкими градациями конечно.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Ну, больше левелов, меньше битмапы.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
У тебя тогда бит должен соответсвовать не 64 битам на следующем уровне, а 8 максимум. А то уже совсем большой оверхэд будет
источник