Cosa può causare ALT-TAB come 'fastidioso' / lento / glitch?


25

Questa è più una domanda a risposta aperta, ma spero di avere qualche buona idea su come evitare il problema.

Quando giochi a Windows, potrei voler ALT-TAB. Alcuni giochi non hanno problemi, altri non sono così facili: possono richiedere AGES per passare e rientrare. Alcuni sono addirittura inclini a crash o comportamenti strani come distorsione grafica o suono balbettante.

Mi chiedo solo cosa causi questo comportamento? È più una cosa DirectX o OpenGL? È causato dal fatto che Games è "intelligente" e memorizza nella cache / cancella la cache ogni volta che cambiano le impostazioni dello schermo? (Suppongo che ottengano una sorta di segnale quando ALT-TAB?)

Non ho alcun problema da solo, ma vorrei sapere cosa evitare e quale trucco "intelligente" può causare questo tipo di orribile esperienza del cliente?


1
Ottima domanda! Speriamo di avere delle risposte perspicaci, come al solito!

Risposte:


17

In alcune situazioni ALT-TAB provocherà la perdita del dispositivo DirectX. Quando si perde il dispositivo, tutte le risorse GPU (vertici, trame, shader e così via) devono essere considerate non valide e non possono essere riutilizzate. Riferimento MSDN qui .

Queste risorse perse devono essere rilasciate e ricreate al momento del ripristino del dispositivo. Nel caso della maggior parte dei giochi per ripristinare queste risorse è necessario caricare nuovamente molti dati dal disco, spesso con la stessa procedura di caricamento eseguita all'inizio del gioco / livello.

Cosa si può fare per evitarlo?

  • Puoi conservare una cache dei tuoi dati in ram, quindi trasferirli nuovamente sulla GPU sarà più veloce del ricaricare dall'HD. Credo che ci sia un modo per fare in modo che DirectX lo faccia automaticamente.
  • Utilizzare una nuova versione di DirectX. Questa citazione ( fonte ) proviene da MSDN su DirectX 9Ex:

I dispositivi ora vengono persi solo in due circostanze; quando l'hardware viene ripristinato perché è bloccato e quando il driver del dispositivo viene arrestato. Quando l'hardware si blocca, è possibile ripristinare il dispositivo chiamando ResetEx. Se l'hardware si blocca, la memoria delle trame viene persa.


Potresti fornire un link per quella citazione? Troviamo che il dispositivo si perde anche quando si blocca il desktop.
Kylotan,

Ho aggiunto il link per il preventivo.
CiscoIPPhone il

1
la modifica del comportamento di DirectX è un effetto collaterale della modifica del modello di driver. Cioè, richiede WDDM. Quindi è solo Vista / Win7.
Bahbar,

7

In Direct3D un dispositivo può andare perso quando ALT-TAB esce dalla finestra a schermo intero. In tal caso, è necessario rilasciare e ripristinare le risorse e ripristinare il dispositivo. Questo può essere difficile da eseguire correttamente a seconda della complessità del gioco o della pigrizia degli sviluppatori (ciao Valve!). Non penso che OpenGL soffra dello stesso problema perché il driver è responsabile di mantenere il contesto OpenGL per te, ma non ne sono sicuro.

C'è una domanda su StackOverflow sulle migliori pratiche per il supporto ALT-TAB in un'app DirectX che include collegamenti utili da MSDN e altre fonti.


3
Hai ragione, la ragione per cui OpenGL non ne soffre (tanto) a causa del fatto che il driver conserva una copia di tutto per te su Windows. Ciò può far sì che le app GL utilizzino più RAM delle app DX, ma un'app DX ben educata dovrebbe memorizzare nella cache tutto nel caso in cui abbia bisogno di ripristinare i dati di contesto, quindi equivale a chi è la responsabilità della memorizzazione nella cache.
Branan,

È vero (su OpenGL).
piedi il

0

Può essere la quantità disponibile di ram gratis. Se è troppo basso, quando il gioco è in esecuzione, Windows nasconde la maggior parte dei suoi servizi nell'area di scambio (ovvero prende la maggior parte dei dati caricati nella RAM e li mette invece in un'area speciale del tuo disco rigido) in ordine per il tuo gioco per avere il più spazio disponibile RAM possibile.

Quindi, quando alt + tab dal gioco a Windows, ha bisogno di questi servizi per essere caricato nella RAM per funzionare, quindi prenderà i tuoi dati di gioco dalla RAM, li memorizzerà nello swap ed estrarrà i dati di Windows da lo scambio alla RAM.

E come sai, scrivere sul disco rigido può richiedere AGES rispetto alla RAM. La stessa cosa in realtà accade anche quando si esce da un gioco pesante. Ecco perché avere abbastanza spazio RAM sia per un gioco che per Windows può essere davvero più comodo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.