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

Выделение памяти на GPU. (4 стр)

Страницы: 1 2 3 4
#45
2:55, 24 мар. 2020

san
> За советы спасибо, но гуглить я и сам умею.

Не умеешь, потому что в MS есть пример на эту тему:
https://github.com/microsoft/DirectX-Graphics-Samples/tree/master… mallResources


#46
8:18, 24 мар. 2020

gamedevfor
> Не умеешь

дело не в умении искать - доков мсдн не достаточно ?

#47
8:58, 24 мар. 2020

san
> DX12 отличается тем, что действие которое производится одной функцией для своей
> работы требует еще два десятка других функций.

разве это не круто? низкоуровневое апи же

#48
18:31, 24 мар. 2020

innuendo
> доков мсдн не достаточно ?
Когда ты научишься не только читать но и писать, то обнаружишь, что между "доками" и работающей программой дисстанция огромного размера.

А пока предварительные выводы:
Загрузка и выгрузка текстур обьемом в 2 гига на шине x8 занимает примерно 500 мс. И это было бы неплохо, если бы при этом не тормозилась вся остальная работа.
Т.е. пока драйвер занят этой перекачкой все остальные процессы замирают и ждут пока освободится шина. А вот это уже никуда не годится.
Почему так - непонятно, поскольку основному рендеру шина вообщем-то не нужна - все его добро уже сидит в VRAM.
Я проверил только на AMD, на Nvidia у меня просто нет текстур что бы забить все 12 гиг. Пока думаю как тут быть.

#49
18:36, 24 мар. 2020

san
Тебя ранее предупреждали что будут фризы и лаги.

#50
(Правка: 18:55) 18:48, 24 мар. 2020

san
> Когда ты научишься не только читать но и писать, то обнаружишь, что между
> "доками" и работающей программой дисстанция огромного размера.

верно - но обычно прежде чем писать изучают доки внимательно

san
> Загрузка и выгрузка текстур обьемом в 2 гига на шине x8 занимает примерно 500
> мс. И это было бы неплохо, если бы при этом не тормозилась вся остальная
> работа.

стримминг не поможет ?

#51
19:11, 24 мар. 2020

так вот же оно, не?

https://github.com/microsoft/DirectX-Graphics-Samples/tree/master… rvedResources

#52
19:27, 24 мар. 2020

baga
Притормози коней, TC еще Placed resources не освоил.

#53
1:29, 25 мар. 2020

baga
> так вот же оно, не?
Оно да не совсем. Я с этого сорса и начал. Там как всегда у Микрософта намутено. Вместо простого примера с текстурами они зачем-то стали манипулировать с мип-уровнями одной текстуры Так что теперь разобраться что они там хотели изобразить и как это применить к тривиальному случаю с текстурами понять очень сложно. Я не осилил.

gamedevfor
> Тебя ранее предупреждали что будут фризы и лаги.
То, что передача гигабайт по шине требует времени, это было понятно с самого начала. И время известно - достаточно поделить обьем данных на скорость шины. Но я полагал, что операции с шиной не связаны с работой шейдеров, которые не используют передаваемые ресурсы. Ну типа как компьют шейдер может работать одновременно с пиксельным. Точнее даже лучше - шейдера занимают одни и те же коры, а операции VRAM-PSIe-RAM вообще к пейплайну отношения не имеют. Оказалось фиг вам. Вот это меня и обломало. Почему так сделано я не имею понятия. Логики тут не видно, скорее всего это особенность архитектуры GPU.

#54
(Правка: 1:49) 1:48, 25 мар. 2020

san
Если бы тебе нужно было бы понемного подкачивать то Reserved Resources тебе помогли бы, но в случае когда нужно полностью перезагрузить видеопамять без фриза c пометкой Loading не обойтись (
врочем в HL2 так и было и никого это особо не парило) или ждать видюхи с 32Gb VRAM где размер твоих данных уже не будет большой проблемой.

#55
2:54, 25 мар. 2020

gamedevfor
А какой смысл "подкачивать понемногу"? Этот механизм имеет смысл если памяти не хватает. Поскольку ее там не меньше нескольких гиг, то "не хватает" наверно достаточно много, ну гиг или больше. Но дело даже не в этом, я не пойму какой смысл блокировать работу практически всей карты на время этой операции. Вот картинка:

Untitled-3 | Выделение памяти на GPU.

Как можно заметить, на время выгрузки части текстур в Shared Memory вырубается вообще все. Даже карта, к которой мониторы подключены, и которая вообще в рендеринге не участвует (Titan V) и та начинает икать.

#56
12:30, 25 мар. 2020

san
> А какой смысл "подкачивать понемногу"?

Например передвижение по большой карте, двигаешься вперед карта немного подкачивается в этом направлении (но не вся же карта целиком).

#57
16:11, 25 мар. 2020

gamedevfor
> двигаешься вперед карта немного подкачивается в этом направлении (но не вся же карта целиком).
Да, это имеет смысл. Жаль что не мой случай.
Но все равно непонятно почему на время подкачки должен останавливаться рендер. Для VR это фатально.
Понятно, что вопрос риторический и скорее всего к производителям железа.

#58
16:31, 25 мар. 2020

san
Потому что такой кейс никто не рассматривает как стабильно рабочий и никто не думает что кто то всерьез такой кейс будет реально использовать.
По хорошему еще на этапе разработки архитектуры приложения все всячески избегают появления такого кейса, а если такого кейса избежать не возможно то тупо повышают требования к железу.

Страницы: 1 2 3 4
ПрограммированиеФорумГрафика