.[ ČeskéHry.cz ].
DX11 - málo FPS - memory leaky

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 12. srpen 2012, 09:22:32    Předmět: DX11 - málo FPS - memory leaky Odpovědět s citátem

Mám "divný" problém...

Pokud pustím mojí DX11 aplikaci poprvé po startu počítače, vše je OK... klasicky 60FPS... několik opakovaných spuštění je taktéž OK.
Jenomže po určitém čase se při novém spuštění aplikace neuvěřitelně zpomaluje. A FPS se pohybuje okolo 5 snímků.

Přitom CPU má vytížení pořád stejné.. takže to musí být GPU... nicméně netuším proč.

Nějaký nápad ? Mad
_________________
Perry.cz


Naposledy upravil perry dne 14. srpen 2012, 16:09:23, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Aroidzap



Založen: 14. 11. 2011
Příspěvky: 68

PříspěvekZaslal: 12. srpen 2012, 11:50:14    Předmět: Odpovědět s citátem

Asi se to bude hledat tezko, ale byt tebou, sel bych vyrazovaci metodou, proste vypinej na gpu ruzne veci dokud to nepobezi... tak ja resim vetsinu veci a vetsinou uspesne Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 12. srpen 2012, 12:43:43    Předmět: Odpovědět s citátem

Renderer jsem omezil více-méně na terén... povypínal jsem post-process apod.
Jediný co tam je, a vypnout nejde, je deferred rendering... Ale s tím dřív problémy nebyly... podezírám driver GPU... protože když se to "začne hnojit" tak takty GPU jsou zhruba 1/3 oproti normálnímu stavu (300MHz místo 1GHz).
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 12. srpen 2012, 12:54:25    Předmět: Odpovědět s citátem

perry> nějaký problém s driverem? s přehříváním? s uvolňováním zdrojů ve tvé aplikaci?

Asi zkus opdovědět na následující otázky:
1. děje se to jen u tvojí aplikace, nebo i u ostatních DX11 aplikací/her? (děje se to u OpenGL aplikací? U DX9/DX10 aplikací?)
2. pokud ne, děje se to u starších verzí aplikace?
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 12. srpen 2012, 14:06:54    Předmět: Odpovědět s citátem

Mohly by to být resource leaky, třeba neuvolněné textury, které neustále přibývají.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 12. srpen 2012, 15:20:40    Předmět: Odpovědět s citátem

citace:
1. děje se to jen u tvojí aplikace, nebo i u ostatních DX11 aplikací/her? (děje se to u OpenGL aplikací? U DX9/DX10 aplikací?)

Neděje... jiné aplikace běží korektně.

citace:
2. pokud ne, děje se to u starších verzí aplikace?

Děje... tam se to dřív nedělo.. takže změnama v kódu to asi nebude

Zkusím projet memory-leaky na GPU... ale co mi píše GPU-Ram manager, zabráno je asi 200MB / 1 GB
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 12. srpen 2012, 17:05:08    Předmět: Odpovědět s citátem

Hm.. takže DX11 Debug mode hlásí memory leaky na GPU.... nicméně nedaří se mi je dohledat...
např: 45 Textur... problém je, že všechny textury mám v Manageru, který je taky hromadně uvolní... takže nevím kde to může zůstat viset..

Plus třeba absolutně nepobírám tohle:
citace:
D3D11: WARNING: Live Device: Name="unnamed", Addr=0x006960B8, ExtRef=41 [ STATE_CREATION WARNING #2097297: LIVE_DEVICE ]

_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 13. srpen 2012, 08:26:48    Předmět: Odpovědět s citátem

Tento warning znamena, ze mas 41 (fakt dost mrte Very Happy) referencii na tvoj Device v momente, ked DX konci... Takze si 41x zabudol zavolat Release aspon na tomto objekte. Predpokladam, ze tam budes mat aj riadky typu:
citace:
D3D11: WARNING: Live Texture2D: Name="unnamed", Addr=0x006960B8, ExtRef=0, IntRef=2...

Co sa tyka IntRef, tak to su interne zalezitosti DX, ale ExtRef je pocet referencii, ktore vyrobil tvoj kod a musis ich vsetky vycistit...
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 13. srpen 2012, 09:10:28    Předmět: Odpovědět s citátem

Předpokládáš správně... nicméně problém je v tom, že netuším, kde jsem nabral 45 referencí. Navíc přidávám si do PrivateInfo jméno textur apod, takže "unnamed" taky nechápu, kde se bere.

to musím uvolňovat i tohle ? :
kód:

class X
{
ID3D11Device * device;
}

....
ID3D11Device * device = vytvorDevice();
X->device = device;

---> X->device->Release(); // tohle mam volat taky ?

device->Release();


_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 13. srpen 2012, 12:34:53    Předmět: Odpovědět s citátem

Třeba ty textury si drží i referenci na device.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 13. srpen 2012, 14:50:34    Předmět: Odpovědět s citátem

Ano, to je pravda, musis proste uvolnit vsetko Smile I niektore na prvy pohlad necakane volania zvysuju ref count... Ale to sa da vsetko dohladat. No a pre kazde zvysenie musi prist aj release. Tak napriklad ID3D11Device::CreateShaderResourceView(tex, &desc, &srv) zvysi ref count u "tex", preto musis niekedy zavolat i tex->Release() (a samozrejme srv->Release()). To ale este nutne neznamena, ze sa hned znizi na 0, ze.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 13. srpen 2012, 15:05:05    Předmět: Odpovědět s citátem

perry napsal:
Předpokládáš správně... nicméně problém je v tom, že netuším, kde jsem nabral 45 referencí. Navíc přidávám si do PrivateInfo jméno textur apod, takže "unnamed" taky nechápu, kde se bere.

to musím uvolňovat i tohle ? :
kód:

class X
{
ID3D11Device * device;
}

....
ID3D11Device * device = vytvorDevice();
X->device = device;

---> X->device->Release(); // tohle mam volat taky ?

device->Release();



tady ne! - doporucuju zjistit jak funguje ref-counting v COMu ....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 13. srpen 2012, 17:47:07    Předmět: Odpovědět s citátem

No uvolnit všechno... problém je, že nemůžu najít co neuvolňuju.
Na Textury mam manager - bez něj žádnou nevytvořím, a pak to celé projdu a uvolním (jak SRV, tak přímo Texture)
To samé shadery - uvolním Const buffery, RWStructuredBuffery, StructuredBuffery atd
InputLayout taky přes manager
Co mi může viset jsou ostatní věci... nicméně to nevysvětluje 45 neuvolněných textur, kde půlka má name="unnamed" a některé mají přímo jméno co jsem nastavil. Přitom u těch textur 100% vím, že jsem volal Release
Plus něco má IntRef = 0 a ExtRef = 0

citace:
tady ne! - doporucuju zjistit jak funguje ref-counting v COMu ....

To jsem napsal už jen ze zoufalosti Confused
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna