DirectX RenderContext RAM / VRAM - PullRequest
       95

DirectX RenderContext RAM / VRAM

0 голосов
/ 17 сентября 2018

У меня есть 8 ГБ или Vram (Gpu) и 16 ГБ Normal Ram при выделении (создании) многих, скажем, больших 4096x4096 текстур, у меня в конечном итоге заканчивается Vram ... однако из того, что я вижу, вместо этого создайте его на ОЗУ .. Когда вам когда-либо понадобится его визуализировать (с помощью или в), он пытается передать контекст рендеринга из ram в vram, чтобы сделать это. При нормальном доступе ко многим контекстам рендеринга снова и снова в каждом кадре (60 кадров в секунду и т. Д.) Компьютер отстает, поскольку он пытается передавать очень большие суммы назад и вперед. Однако до тех пор, пока количество новых (не недавно использованных контекстов рендеринга (и т. Д. По-прежнему на ram, а не vram)) ссылок каждую секунду, проблем не должно быть (с точки зрения производительности). Вопрос в том, верна ли эта информация?

1 Ответ

0 голосов
/ 18 сентября 2018

DirectX будет выделять DEFAULT ресурсы пула из видеопамяти и / или ОЗУ с апертурой PCIe, которые могут быть доступны непосредственно графическому процессору. Часто цели рендеринга должны быть в видеопамяти, и, как правило, видеопамять - это более быстрая память - хотя это сильно зависит от конкретной архитектуры видеокарты.

То, что вы описываете, - это сценарий «чрезмерной фиксации», когда вы выделили больше ресурсов, чем фактически вписывается в ресурсы, доступные для графического процессора. В этом случае DirectX 11 делает «все возможное», что, как правило, включает в себя изменение отображения виртуальной памяти для рендеринга сцены, но производительность, очевидно, довольно низкая по сравнению с более нормальной ситуацией.

DirectX 12 оставляет дело с «чрезмерной фиксацией» до приложения, так же как и все остальное в DirectX 12, где обычно «магическое поведение во время выполнения» было удалено. См. документы для получения подробной информации об этом поведении, а также этот образец

...