ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4381895
Jetzt (Chat):
24 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
DirectX API
[gelöst] DX10 initialisierung langsam
Normal
AutorThema
NytroX Offline
ZFX'ler


Registriert seit:
03.10.2003

Baden-Württemberg
[gelöst] DX10 initialisierung langsamNach oben.
Hi allerseits,

ich habe mal eine Frage an die DX10 Liebhaber unter euch:
Aus irgendeinem Grund dauert die Initialisierung, oder genauer gesagt die Funktion D3D10CreateDeviceAndSwapChain bei mir sehr lange, nämlich ungefähr 1,8 Sekunden.

Ist das unter Vista 64bit normal?
Ich hatte mir das schneller vorgestellt.

Meine Vorgehensweise ist folgende: Ich öffne ein Fenster, initialisiere DX10, cleare den Backbuffer und rufe dann device->Present auf.

PIX zeigt mir an, dass die CPU während des ersten Frames stark unter Last steht, also würd ich jetzt mal davon ausgehen, dass ich da nicht viel machen kann ?

Habt ihr ähnliche Erfahrungen gemacht ?

1 Mal gendert, zuletzt am 01.02.2009, 17:48:53 Uhr von NytroX.
01.02.2009, 17:09:12 Uhr
Aramis Offline
ZFX'ler


Registriert seit:
14.03.2007

Baden-Württemberg
406712329
Re: DX10 initialisierung langsamNach oben.
Bist du vielleicht in einem Debugbuild oder hast zu stark am D3D10-Debuglevel gespielt?

Gruß,
Alex
01.02.2009, 17:15:53 Uhr
NytroX Offline
ZFX'ler


Registriert seit:
03.10.2003

Baden-Württemberg
Re: DX10 initialisierung langsamNach oben.
Oh, das ging aber schnell, danke

Ist egal, ob debug oder retail, das tritt immer auf.
Wenn ich die Applikation und die DX Runtime beides auf Debug / Retail stelle (alle Kombinationen durchprobiert) kommt immer das gleiche raus,
er braucht zwischen 1,7 und 1,9 Sekunden.

Alle anderen Aufrufe sind im Retail Mode etwas schneller, aber das ist ja ganz klar...

Also ich mache beim Clear den Backbuffer schwarz. Ich sehe dass er das Win32 Fenster öffnet (geht schön schnell),
mit einem weißen Hintergrund, dann die 1,8 Sekunden wartet und dann, "schwupps", ist der
Hintergrund schwarz und alles ist super schnell.
01.02.2009, 17:27:28 Uhr
Krishty Offline
ZFX'ler


Registriert seit:
01.02.2004

Nordrhein-Westfalen
342173470
Re: DX10 initialisierung langsamNach oben.
Das ist normal und liegt daran, dass bei der Initialisierung alle genutzten Systemkomponenten in den Speicher deiner Anwendung eingegliedert werden müssen …

Beim Erzeugen einer DXGI-Factory sind das immerhin um die zehn DLLs, beim Erzeugen eines D3D-Devices ungefähr nochmal halb soviele (wie die der Grafiktreiber, des Shader-Compilers und u.U. der D3DX-Hilfsbibliotheken).

Das physische Laden der Komponenten von der Festplatte dauert nicht lange (zumal sie meist schon gecached sind), das eingliedern in den Adressraum und die Initialisierung jeder Komponente können aber schon Arbeit bedeuten.

Wenn du dir dann folgende Liste (zwar von D3D11, ist aber im Grunde das gleiche) anschaust:
Code:
(Beim erzeugen der DXGI-Factory)
'.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\userenv.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\imagehlp.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\setupapi.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\oleaut32.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\ole32.dll'
(Beim erzeugen des D3D-Devices)
'.exe': Loaded 'C:\Windows\SysWOW64\atidxx32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\D3D11SDKLayers.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\D3D11SDKLayers.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\ole32.dll'
'.exe': Unloaded 'C:\Windows\SysWOW64\atidxx32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\atidxx32.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\D3D11SDKLayers.dll'
'.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll'
… ist das eben schon ein ganz schönes Stück Arbeit, das da verrichtet werden muss.

Gruß, Ky

2 Mal gendert, zuletzt am 01.02.2009, 17:40:06 Uhr von Krishty.
01.02.2009, 17:37:33 Uhr
NytroX Offline
ZFX'ler


Registriert seit:
03.10.2003

Baden-Württemberg
Re: DX10 initialisierung langsamNach oben.
Danke nochmal für die schnelle Rückmeldung.

Das Problem hat sich erledigt.
Ich weiss zwar nicht wieso, aber es liegt am Visual Studio 2008 Express.

Wenn ich die Applikation so starte, ohne im VC den Execute-Button zu benutzen (also einfach per Doppelklick auf die .exe),
verkürzt sich die Zeit des 1. Frames auf 190 ms (retail) bzw. 270 ms (debug), statt der 1800 ms.

Damit kann ich gut leben

Vielen Dank euch beiden.
01.02.2009, 17:46:38 Uhr
Aramis Offline
ZFX'ler


Registriert seit:
14.03.2007

Baden-Württemberg
406712329
Re: [gelöst] DX10 initialisierung langsamNach oben.
Dann liegt es wohl eher an dem Debugger, der von VS mitgestartet wird, und der bei jeder neu geladenen DLL vermutlich erstmal nach Symbolen sucht

Gruß,
Alex
01.02.2009, 17:51:11 Uhr
Krishty Offline
ZFX'ler


Registriert seit:
01.02.2004

Nordrhein-Westfalen
342173470
Re: [gelöst] DX10 initialisierung langsamNach oben.
Kurze Frage: Wenn du es mit Strg+F5 startest, ist es dann immernoch langsam?
01.02.2009, 18:02:30 Uhr
NytroX Offline
ZFX'ler


Registriert seit:
03.10.2003

Baden-Württemberg
Re: [gelöst] DX10 initialisierung langsamNach oben.
Zitat:

Kurze Frage: Wenn du es mit Strg+F5 startest, ist es dann immernoch langsam?


Ja, irgendwie schon. Immernoch langsam.
Der scheint noch irgendwas zu machen, abgesehen vom Debugger.
Außerdem hätte ich gesagt der Debugger hängt sich nicht erst an, wenn bereits das WinAPI Fenster usw. offen ist,
sondern direkt nach Applikationsstart... ?
01.02.2009, 18:12:33 Uhr
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel