Autor Wątek: Proces dwm.exe i teoretyczne przyśpieszenie gry  (Przeczytany 8800 razy)

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Październik 01, 2010, 19:18:54
jak teraz sobie o tym mysle to moze nie dac rozwiazania
probowales wylaczyc serwis ?
Cytuj
Stop Service   net stop uxsms
Start Service   net start uxsms
Disable Service   sc config uxsms start= disabled
Enable Service   sc config uxsms start= auto

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Październik 02, 2010, 22:26:36
Wszystko niby ładne, ale rozbije się o pierwszego Windows Defendera/antywirusa. Żaden sensowny AV nie pozwoli aplikacji ubić innego procesu (z inną certyfikacją EXE) - niezależnie od ustawionych uprawnień. Podobnie z wyłączeniem nieswojej usługi.

O samym fakcie wymagania praw admina (co powinno być karane zakazem publikacji pod Windows) wolę nie wspominać - taka aplikacja (jeśli nie jest jej zadaniem instalacja czegoś/oddanie userowi większej kontroli nad systemem) nigdy by nie przeszła certyfikacji pod Windows.

bs.mechanik

  • Gość
# Październik 02, 2010, 22:42:12
Ale oplaca sie to dla tych kilku fps? Jesli serio gra bedzie miala zauwazalny spadek fps na fullscreenie przy wlaczonym areo, to po prostu albo trzeba zaczac optymalizowac gre albo update sprzetu. W tle i tak chodzi masa innych procesow ;)
Wylaczenie dx'owych bajerow w interfejsie windowsa ma sens wtedy, gdy korzystamy z ogla w trybie okienkowym - wtedy ogl jest jakos smiesznie emulowany z tego co pamietam (fakt faktem, renderowanie kilku primitywow potrafilo sie dosc mocno przyciac), choc podobno w win7 juz sobie z tym poradzili (korzystam z boskiej visty ;) ).

Offline MarekKrak

  • Użytkownik

# Październik 02, 2010, 23:54:03
bs.mechanik, Asmodeusz
przekonaliście mnie, teoretyczna implementacja pozostanie teoretyczna, bo faktycznie mi się to niezbyt opłaca, pozostanę z próbą wywołania trybu eksluzywnego dx, zabijanie / stopowanie wątków/usług jest chyba zbyt ryzykowne (ryzyko że po wywaleniu gry usługa sama się nie przywróci, kombinowanie przy wersjach systemu itp..).

Dla zainteresowanych ciągnięciem tematu stopowania usług, podrzucam linki do msdn'a:
http://msdn.microsoft.com/en-us/library/ms686335(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms682108(v=VS.85).aspx


Sam FullScreen nie daje gwarancji trybu ekskluzywnego - jeśli nie włączymy fullscreen na wszystkich monitorach, kompozycje nie są wyłączane.

Rozwiązaniem jest użycie funkcji z DXGI (wersje od D3D9Ex wzwyż) - pozwalają włączenie dla D3D device trybu ekskluzywnego niezależnie od ilości monitorów. Inna sprawa, że jest to działanie wyraźnie niezalecane - jeśli user ma za słabego kompa na aero, powinien sam je wyłączyć. Ze swojej strony powiem, że na 9800GX2 (leciwa już karta) różnica między aero a jego brakiem jest kompletnie nieodczuwalna - niezależnie od gry.
Możesz rozwinąć, dlaczego włączenie tego trybu jest wyraźnie niezalecane oraz czym on tak naprawdę jest?

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Październik 03, 2010, 02:13:50
Tryb ekskluzywny przełącza DWM w tryb software'owy, wyłącza też dostęp do akceleracji dla innych aplikacji (uniemożliwa równoczesny rendering korzystający ze sprzętu). Przykładowo: mając na monitorze 1 odpaloną grę w trybie ekskluzywnym, a na drugim np. film dekodowany z użyciem PureVideoHD - ten film będzie musiał być dekodowany na CPU, ponieważ karta jest "zarezerwowana" dla aplikacji. Podobnie np. z obliczeniami w tle używającymi CUDA.

MS stanowczo odradza takie rozwiązania (i, poza uzasadnionymi przypadkami, nie certyfikuje używających ich aplikacji), ponieważ jest to coś, co ingeruje w działanie innych procesów, które z założenia powinny być niezależne. Tryb ekskluzywny miesza w całym systemie - co prawda tylko chwilowo - ale zawsze może mieć to efekt na istotny, działający w tle/na drugim ekranie program.

DX sam, automatycznie włączy tryb ekskluzywny, jeśli tylko uruchamiasz swoją aplikację na fullscreen na wszystkich aktywnych monitorach i żadna z aplikacji działających w tle nie renderuje nic z użyciem DirectX.

Offline Karol

  • Użytkownik

# Październik 03, 2010, 04:04:52
Cytat: Dziennik zdarzeń aplikacji systemu Windows
Proces MójFullscreenD3DProgam.exe zażądał wyłączenia Menedżera okien pulpitu.

Wystarczy sobie trochę ten dziennik przejrzeć i widać, że każda gra/aplikacja pracująca na pełnym ekranie powoduje wyłączenie dwm i nie trzeba samemu się tym przejmować - tak jak Asmodeusz napisał w ostatnim akapicie.

Offline MarekKrak

  • Użytkownik

# Październik 03, 2010, 09:45:39
Dzięki wam wszystkim, uzyskałem satysfakcjonującą odpowiedź.

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Październik 04, 2010, 18:44:39
ja tu czegos nie rozumiem, co jest zlym pomyslem, reczne zarzadzanie procesami i uslugami ? albo inaczej czy chodzi wam o to ze w dzisiejszych czasach do obslugi kija potrzebujemy kijmistrza-odzwiernego ?

Offline kapec94

  • Użytkownik

# Listopad 02, 2010, 20:41:24
Istnieje taka windowsowa biblioteka do zarządzania Oknami w Windowsie: DwmApi. Polecam lekturę MSDN, a w szczególności zwrócenie uwagi na funkcję DwmEnableComposition().