View Full Version : Il perché i giochi in Dx10 rallentano
Sire_Angelus
01-06-2008, 11:08
Ragazzi.. stavo camminando e pensando a questo...
"le dx10 sono più veloci, cé meno overhead " e tutto il resto...
Ma perché invece i giochi rispetto al motore 3d dx9 rallentano???
Poi, ho avuto un lampo di genio, e mi sono messo a fare due calcoli.
Una volta, la scheda video nvidia più performante aveva 24 pixel shader e 8 vertex shaders.
Ora, ne hanno 128, ma che vengono auto assegnate da un'algoritmo (penso) hardware.
immaginate ora un gioco come crysis: quando si esegue il bench, senga 1m di poligoni per frame in media.
Ora, lavorando puramente di immaginazione, questi 128 shader in dx9 vengono divisi in 100 pixel e 28 vertex...
In Dx10.. cé un'incomodo in più!!!
Eh si, xke bisogna assegnare abbastanza geometry shader per gestire la scena!!!
Quindi, ci si ritrova per gestire la stessa scena(Che ricordiamo, non fa uso di dx10 se non per qualche effetto particolare) mettiamo,
90 pixel shader, 16 geometry shader, 22 vertex shader...
Quindi, ben 16 SU sottratte per i nuovi shader!!
Aggiungete il fatto che sicuramente l'algoritmo di assegnazione é ampiamente migliorabile,dato che non avevano prima d'ora una reale idea di come i nuovi shader dovessero esser gestiti, avete una situazione in cui ben 16 unità sono state sottratte dall'elaborazione.. e 16 unità fanno la differenza (anche se non solo quella) tra una gts e una gtx!
ma se invece l'architettura fosse stata fissa?
dx9: 90pixel shader, 22 vertex shader, 0 geometry shader.
dx10: 90 pixel shader, 22 vertex shader, 15 geometry shader
Avremmo visto un rallentamento o l'esecuzione sarebbe stata velocizzata?
my two cents...
@mod: potreste modificare il titolo in " Il perché i giochi in Dx10 rallentano", grazie?
Sire_Angelus
02-06-2008, 12:55
dite la vostra che io ho detto la mia.
Sire_Angelus
04-06-2008, 09:02
up
appleroof
04-06-2008, 16:26
gli sp di g80 & derivati non vengono assegnati in maniera fissa, ma continuamente variabile di modo che (per dire) di secondo in secondo abbiamo proporzioni variabili rispetto alle "esigenze" della scena
che poi le cose siano migliorabili è ovvio, ma secondo me i giochi vanno peggio semplicemente perchè sono più pesanti (una 8800gtx cmq gestisce un qualunque gioco odierno senza rinunce di dettagli e filtri, a 1920x1200, da giocabilissimo a "malapena giocabile" -unico caso: il famigerato crysis- cosa impensabile fino a pochi anni fà)
certo l'hype che si era sollevato intorno alle dx10 (effetti grafici migliorati di molto a parità di pesantezza, in sostanza) ha generato molta delusione (in parte anche la mia), in più hanno giocato aspetti non secondari come il grosso successo delle consolle che non supportano dx10 (ma il mercato dei relativi giochi è enormemente più remunerativo di quello dei giochi only pc, anche a causa della pirateria) e di vista (molti gamer hanno avuto repulsione verso questo Os, se le dx10 fossero subito "esplose" di sicuro sarebbero passati a questo attivando un circolo virtuoso, invece che l'attuale circolo vizioso)
ma sono convinto che "il grosso" deve ancora arrivare e lo colloco l'anno prox più o meno a ridosso delle dx11 (oppure arriveranno direttamente prima le dx11 :D )
Sire_Angelus
04-06-2008, 21:02
mmm io infatti non dico questo.. davo un'idea di questo tipo:
Mettiamo che l'algoritmo ne assegni. X per ogniuno... in una scena qualsiasi
cosa succede nei due casi?
Sire_Angelus
10-06-2008, 16:22
up
io penso a cose simili dopo una cannetta:mbe:
non capisco dove vuoi arrivare....
Sire_Angelus
15-06-2008, 22:28
a capire se il calo di performance sarà insito nelle dx10 oppure no.
é un puro esperimento del pensiero.
inoltre.. pone un'altro problema:
implementando physix via cuda, altre unità verranno sottratte all'elaborazione grafica per la fisica...
Sire_Angelus
08-11-2008, 03:14
up
Sire_Angelus
10-11-2008, 16:05
up possibile nessuno supporta /smonta la mia teoria o nn vuole parlarne?
Mercuri0
10-11-2008, 17:16
up possibile nessuno supporta /smonta la mia teoria o nn vuole parlarne?
Non ci sono giochi DX10 su cui poter discutere. Leggevo che i giochi vengono tuttora programmati secondo la filosofia DX9 (o meglio, vengono programmati per girare su console), e poi in qualche modo estesi al DX10.
Un confronto "serio" si dovrebbe fare con un gioco ultra-ottimizzato per le DX9 & ultra-ottimizzato per le DX10, tra l'altro a parità di ottimizzazione dei driver.
Siccome nessuno farà mai una cosa del genere, noi utenti non possiamo fare il confronto.
Io penso che chi ha definito le api il conto se lo sia fatto ;)
Eh si, xke bisogna assegnare abbastanza geometry shader per gestire la scena!!!
Geometry shaders? Perché, si usano? :mbe:
ma se invece l'architettura fosse stata fissa?
dx9: 90pixel shader, 22 vertex shader, 0 geometry shader.
dx10: 90 pixel shader, 22 vertex shader, 15 geometry shader
Scusa, ma che ragionamento è?
Se io facessi un'architettura "variabile" con 127 shader non andrebbe bene lo stesso? Al massimo farebbe girare i giochi DX9 più velocemente, potendo riassegnare le unità usate per i geometry a vertex o pixel. E questo sarebbe un male? :mbe:
E in ogni caso la modalità directx9, non potendo calcolare i geometry, avrebbe "qualcosa di meno", quindi il confronto non è fatto a parità di grafica. Mica in DX10 sono obbligatori, no?
Sire_Angelus
21-12-2008, 20:23
intendo questo(scusa il ritardo):
primo luogo, qualsiasi gioco che abbia il supporto alle dx10 usa i geometry shader, seppure di poco.
quindi, mi dai ragione: se funzionasse con architettura fissa, con le dx10 dovrebbe andare molto più veloce(l'unreal engine sfrutta bene le dx10 per esempio)
tigershark
22-12-2008, 08:10
intendo questo(scusa il ritardo):
primo luogo, qualsiasi gioco che abbia il supporto alle dx10 usa i geometry shader, seppure di poco.
quindi, mi dai ragione: se funzionasse con architettura fissa, con le dx10 dovrebbe andare molto più veloce(l'unreal engine sfrutta bene le dx10 per esempio)
sei completamente fuori strada, un'architettura di vecchia generazione con unità specializzate ed assegnate non può essere ne più veloce ne più efficiente di una a shaders unificati. La'llocazione delle unità avviene in modo dinamico e bilanciato al fine di assicurare sempre la migliore performance possibile, trascuri il fatto non banale che le unità hardware che gestiscono questo "traffico" facendo in qualche modo da arbitri, hanno anche la funzione di tenere SEMPRE occupate tutte le risorse di eleborazione integrate nel core, cosa che non succedeva nelle vecchie architetture dove a seconda del gioco o del titolo, potevi ritrovarti molte unità a sonnecchiare a scapito di altre sovraccariche di lavoro.
Per farla breve, un'architettura a shaders unificati è generalmente e mediamente più veloce di una con unità fisse e specializzate
Sire_Angelus
22-12-2008, 10:57
io parlo a parità di tipologia di architettura:
architettura ad assegnazione variabile:
malus:unità in meno per gestire i geometry shader.
plus: unità usate sempre al massimo dell'efficenza
architettura ad assegnazione fissa:
dx9: le unità geometry shader vengono inutilizzate.
dx10: le unità geometry shader vengono usate a seconda della necessità, quindi a parità di titolo in dx10 dovrebbe andare molto più veloce, grazie all'overead ridotto del 80-90%
quindi il problema non é delle directx 10, ma più che altro dell'architettura su cui si basano(e dei driver immaturi che girano in modalità utente..)
tigershark
22-12-2008, 11:50
io parlo a parità di tipologia di architettura:
architettura ad assegnazione variabile:
malus:unità in meno per gestire i geometry shader.
plus: unità usate sempre al massimo dell'efficenza
architettura ad assegnazione fissa:
dx9: le unità geometry shader vengono inutilizzate.
dx10: le unità geometry shader vengono usate a seconda della necessità, quindi a parità di titolo in dx10 dovrebbe andare molto più veloce, grazie all'overead ridotto del 80-90%
quindi il problema non é delle directx 10, ma più che altro dell'architettura su cui si basano(e dei driver immaturi che girano in modalità utente..)
si daccordo, ma per consentire ad un'architettura di "vecchia" generazione di equiparare in prestazioni una moderna a shaders unificati ci vorrebbero una marea di unità di calcolo. Faccio un esempio:
- gtx 280 dispone di 240 unità shaders multifunzionali, allocate ed utilizzate in base alle operazioni da svolgere
Per avere prestazioni simili su un'architettura tradizionale dovresti "montare" sul chip almeno lo stesso numero di unità geometriche specializzate, in più quelle vertex, ne verrebbe fuori un mostro dalla complessità gigantesca e soprattutto (alla fine) impossibile da sfruttare a dovere.
Diverso è il confronto tra l'efficienza che si può ottenere da un'unità di calcolo specializzata nel fare solo e soltanto un tipo di operazioni ed una invece multifunzionale.
Non per niente una delle differenze tra Gt2xx e G80 sta proprio nell'unità thread dipatcher (se nn ricordo male è chiamata così) fortemente ottimizzata dal punto di vista degli algoritmi di allocazione del carico di lavoro.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.