Разработка игрового 3D-движка Force Tech: загадочные тормоза

Прошедший месяц разработки прошел под эгидой исследования причин странных задержек при отрисовке кадра в моём движке Force Tech.

Чтобы читать было интереснее, предлагаю посмотреть на скриншоты из предыдущей версии Force Tech. FM для Thief II - Reverse Robbery Director's Cut.
6868

при нехватке видеопамяти, драйвер прозрачно начинает пользоваться оперативнойВообще, про эту фичу не то чтобы много кто в курсе. Помню ещё одному типу сказал, что видеокарта начинает заимствовать ОЗУ при нехватке своей памяти, так он меня долбоёбом назвал и даже слушать не стал. Хотя даже в диспетчере задач указан объём ОЗУ, который винда готова предоставить видеокарте, под названием "общая память графического процессора".

Но это конечно чисто костыль, чтоб приложение не крашилось при превышении объёма VRAM. Производительность сразу нахуй идёт.

8

наоборот странно что кто-то этого не знал. Винда всегда при нехватке оперативки лезет в файл подкачки на диске, а видеокарты при нехватке своей памяти, в оперативку. Не дураки делали операционные системы. Всё заранее продумано и реализовано так, чтобы сократить вылеты по банальным причинам типа нехватки видеопамяти.
Я знал об использовании оперативки в качестве видеопамяти ещё в 2010-ом, когда начал смотреть тесты железа в играх. Там часто была статистика потребления видеопамяти и оперативки. И всегда было видно что чем меньше у видеокарты видеопамяти, чем больше потребление оперативки. Даже встроенная в процессоры графика всю жизнь использует оперативку под видеопамять. Раз встроенные в проц графические ядра могут использовать оперативку под свои нужды, то очевидно что и дискретные могут тоже самое. И не только диспетчер задач показывает виртуальную память видеокарты. Даже сам факт того, что игры, требующие кучу видеопамяти не вылетают за старых затычках, а просто выдают 5fps говорит о том, что видеокарта всегда найдёт что использовать в качестве памяти. Нехватки не будет никогда. Будет лишь снижение скорости передачи данных из-за использования заведомо более медленного устройства в качестве памяти. Во многих играх даже есть индикация того, сколько видеопамяти потребляют выбранные настройки качества. И при превышении объёма памяти видеокарты игры всё также запускаются и работают. Уже одного этого факта должно быть достаточно чтобы люди догадались что под видеопамять используется что-то ещё. И абсолютно очевидно что это оперативка, т.к. чаще всего она никогда не загружена на 100% и она вторая по скорости передачи данных в компе после видеопамяти.

2

Хех, да я сам даже был в курсе, но понять, что вот это вот прямо сейчас происходит, не удалось - впервые с этим сталкиваюсь на практике. Зато теперь, когда симптомы известны, всюду мерещится переполнение видеопамяти :).

Странно такие вещи отрицать, далбаеб видимо он сам кто отрицает, если врам Рип, то активно начинается все это лезь в рам, а если рам маловато то на хдд/ссд.

Краш очень быстро наступает если ещё откл файл подкачки при недостаточной памяти.

1

Хотя даже в диспетчере задач указан объём ОЗУ, который винда готова предоставить видеокарте, под названием "общая память графического процессора".У меня 32 ГБ оперативной памяти и 16 ГБ видеопамяти. И винда готова выделить видеокарте еще 16 ГБ. Получается она может выделить максимум половину оперативной памяти?