Що може спричинити ALT-TAB, щоб бути "дратівливим" / повільним / глючним?


25

Це скоріше відкрите запитання, але я сподіваюся отримати гарне уявлення про те, як уникнути проблеми.

Граючи в Ігри в Windows, я можу захотіти ALT-TAB з нього. У деяких іграх немає проблем, в інших не так просто: вони можуть зайняти AGES для вимикання та повернення назад. Деякі навіть схильні до збоїв або до дивної поведінки, як графічне спотворення або заїкання звуку.

Мені просто цікаво, що викликає таку поведінку? Це більше DirectX або OpenGL? Це спричинено тим, що Ігри є "розумними" та кешують / витирають кеш-пам'ять, коли змінюються налаштування екрана? (Я припускаю, що вони отримують якийсь сигнал, коли я ALT-TAB?)

У мене немає жодної проблеми, але я хотів би знати, чого слід уникати і який «розумний» трюк може спричинити цей жахливий досвід клієнтів?


1
Чудове запитання! Сподіваємось, ми отримаємо кілька проникливих відповідей, як завжди!

Відповіді:


17

У деяких ситуаціях ALT-TAB призведе до втрати пристрою DirectX. Коли пристрій втрачено, усі ресурси графічного процесора (вершини, текстури, шейдери тощо) повинні вважатися недійсними і не можуть використовуватися знову. Тут посилання на MSDN .

Ці втрачені ресурси потрібно звільнити та відновити після відновлення пристрою. У разі більшості ігор для відновлення цих ресурсів потрібно знову завантажити багато даних з диска - найчастіше та сама процедура завантаження, що і на початку гри / рівня.

Що можна зробити, щоб цього уникнути?

  • Ви можете зберігати кеш даних у операційному режимі, тому передача їх назад до GPU буде швидше, ніж перезавантаження з HD. Я вважаю, що існує спосіб змусити DirectX зробити це автоматично.
  • Використовуйте нову версію DirectX. Ця цитата ( джерело ) від MSDN на DirectX 9Ex:

Тепер пристрої втрачаються лише за двох обставин; коли апаратне забезпечення скидається, оскільки воно висить, і коли драйвер пристрою зупинено. Коли апаратне забезпечення висить, пристрій можна скинути, викликавши ResetEx. Якщо апаратне забезпечення висить, пам'ять текстури втрачається.


Чи можете ви надати посилання на цю цитату? Ми виявляємо, що пристрій втрачається і при блокуванні робочого столу.
Килотан

Я додав посилання для цитати.
CiscoIPPhone

1
зміна поведінки DirectX є побічним ефектом від зміни моделі драйверів. Тобто для цього потрібна WDDM. Так що це тільки Vista / Win7.
Бахбар,

7

У Direct3D пристрій може загубитися, якщо ALT-TAB вийде з повного екрану. Якщо це трапиться, вам доведеться звільнити та відновити ресурси та скинути пристрій. Це може бути важко зробити належним чином залежно від складності гри або ліні розробників (привіт Valve!). Я не думаю, що OpenGL страждає від тієї ж проблеми, оскільки драйвер несе відповідальність за збереження для вас контексту OpenGL, але я не впевнений.

У StackOverflow виникає питання про кращі практики підтримки ALT-TAB в додатку DirectX, який включає корисні посилання з MSDN та інших джерел.


3
Ви маєте рацію, тому що OpenGL не страждає (настільки) від цього, тому що драйвер зберігає копію всього для вас у Windows. Це може призвести до того, що програми GL використовуватимуть більше оперативної пам’яті, ніж програми DX, але добре сприйнятий DX-додаток повинен кешувати все на випадок, якщо йому потрібно відновити свої контекстні дані, так що це означає, на кого відповідає відповідальність за кешування.
Бранан

Це правда (про OpenGL).
точний

0

Це може бути наявна кількість безкоштовного барана. Якщо він занадто низький, під час запуску вашої гри Windows приховує більшість своїх служб у зоні swap (тобто вона бере більшість даних, завантажених в оперативній пам’яті, і замість цього поміщає їх у спеціальну область вашого жорсткого диска) для того, щоб ваша гра щоб було якомога більше місця для оперативної пам’яті.

Потім, коли ви переключаєте клавішу alt + з гри на windows, для її роботи ці сервіси потрібно завантажувати в оперативну пам’ять, тому вони братимуть ваші ігрові дані з оперативної пам'яті, зберігатимуть їх у свопі та витягуватимуть дані Windows із заміна на ОЗП.

Як відомо, запис на жорсткий диск може зайняти AGES порівняно з оперативною пам'яттю. Те ж саме відбувається і тоді, коли ви кинете важку гру. Ось чому наявність достатньої кількості оперативної пам’яті як для гри, так і для вікон може бути справді комфортніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.