Войти
ПрограммированиеФорумГрафика

Как узнать сколько может влезть в glBufferData?

Страницы: 1 2 3 Следующая »
#0
22:34, 14 апр. 2019

Сабж.

Интересует сколько байт можно сохранить в один GL_ARRAY_BUFFER.

Нужно что-то типа:

glGetIntegerv(GL_MAX_BUFFER_SIZE, &x);

Заранее спасибо.


#1
23:09, 14 апр. 2019

Тоже интересно. Когда я задался подобным вопросом то не нашел вменяемого ответа.

#2
23:12, 14 апр. 2019

Выделение памяти ни чем не ограниченно, не на GPU не на CPU, все упирается в то сколько свободно памяти. По этому при нехватке памяти тебе просто вернется GL_OUT_OF_MEMORY.

#3
23:19, 14 апр. 2019

vindast
> сколько байт можно сохранить в один GL_ARRAY_BUFFER
До двух Гб

#4
23:49, 14 апр. 2019

Блин, точного ответа нет?
Я не думаю что на моей видяшке в 8гб можно алоцировать один массив размером в 8 гб.

#5
0:19, 15 апр. 2019

vindast
MrShoor
signed int?

#6
1:56, 15 апр. 2019

lookid
> signed int?
Да, я имел ввиду это, но ошибся, т.к. по памяти отвечал. Сейчас посмотрел, на самом деле 4Гб, т.к. там unsigned int (но я точно помню что где-то в OGL была лажа именно в размере данных. Они заюзали signed int, и как результат нельзя было работать с больше чем 2Гб).

vindast
> то получается что у нас 4 гига максимум памяти?
На один буфер у тебя 4 гига. Никто не запрещает тебе создавать больше буферов. Но делать 1 буфер в 4 гига я бы не рекомендовал, ибо реально можешь столкнуться с фрагментацией видеопамяти.

#7
6:30, 15 апр. 2019

MrShoor
> Но делать 1 буфер в 4 гига я бы не рекомендовал, ибо реально можешь столкнуться
> с фрагментацией видеопамяти.

очень интересно - пример будет ?

#8
(Правка: 8:02) 7:27, 15 апр. 2019

innuendo

очень интересно - пример будет ?

Какой уж тут пример - насоздавай пачку FBOs большого размера (чередуя немного меньше и немного больший размер, удаляя те, что по-меньше) и наблюдай слайдшоу, когда драйвер пытается рисовать в FBO, который не влез целиком в видеопамять. В OpenGL это возможно, потому что он продолжает работать, даже когда видеопамять закончится (фейлится только когда адресное пространство заканчивается, что было заметно только в 32битный приложениях).

Я такое регулярно наблюдал на более старой конфигурации с несколькими мониторами и с одним или несколькими простыми 3Д приложениями со включенным MSAA 8x (при прочих равных проблема не всегда возникала, при проявлении закрытие всех других приложений не помогало, а по индикаторам потребления ресурсов видеопамять не было полностью истощена).
Сюрприз-сюрприз, видеопамять шарится между всеми приложениями и системой (и не только для графики, но и ещё для всяких видео-декодеров DXVA), поэтому фрагментация видеопамяти и её свободный объём зависят не только от твоего приложения!

#9
8:56, 15 апр. 2019

gkv311
> Какой уж тут пример - насоздавай пачку FBOs большого размера

тут же речь про ОДИН буфер на 4 Gb?

#10
9:23, 15 апр. 2019

innuendo
> тут же речь про ОДИН буфер на 4 Gb?
Тебе же ответили. Или ты дальше первого предложения не осилил?

видеопамять шарится между всеми приложениями и системой (и не только для графики, но и ещё для всяких видео-декодеров DXVA), поэтому фрагментация видеопамяти и её свободный объём зависят не только от твоего приложения!
#11
(Правка: 12:39) 9:25, 15 апр. 2019

MrShoor
> Тебе же ответили.

мне ничего не ответили

> Или ты дальше первого предложения не осилил

или ты не смог прочитать ?

> насоздавай пачку FBOs большого размера (чередуя немного меньше и немного
> больший размер, удаляя те, что по-меньше) и наблюдай слайдшоу,

до тебя тупо не дошло ?

что ты там бухтел - в одно лицо делал графику в компании с мировым именем ?
я за полгода работы в крупной конторе всего лишь внёс несколько правок :)
#12
9:58, 15 апр. 2019

vindast
> glGetIntegerv(GL_MAX_BUFFER_SIZE, &x);

попробуй выделять максимум - получишь OUT_OF_MEMORY
уменьши в два раза и тд - как-то так :)

#13
12:09, 15 апр. 2019

innuendo
Тоесть когда у тебя зоопарк GPU, то ты тупа бинарным поиском бегаешь по size_t и ловишь OUT_OF_MEMORY для определения лимита памяти? Хм...

#14
12:17, 15 апр. 2019

Меня интересует, а для чего может быть необходимо знать сколько байт в GL_ARRAY_BUFFER можно сохранить? 
Может это необходимо во время разработки, ну зачем это во время выпуска?

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика