Android-salaisuudet: suunnittelukoodit ja kehittäjätila. Googlen kehittäjä kumoaa myytit "täydestä laitteistokiihdytyksestä" Ice Cream Sandwichissa

Johdanto

Rinnakkain kanssa Windowsin julkaisu 7 useita kuukausia sitten näytönohjainten valmistajat esittelivät monia malleja uusilla GPU:illa, minkä jälkeen he alkoivat parantaa tuotteidensa ohjaimia. Meistä näyttää siltä, ​​että tänään on kulunut tarpeeksi aikaa, jotta he pystyisivät käsittelemään kaikkein kiireellisimpiä ongelmia uusimmalla käyttöjärjestelmällä (jotka suoraan sanottuna eivät olleet niin kriittisiä kuin Vistan tapauksessa), ja objektiivisten testien pitäisi osoittaa uuden tekniikan tila.

Tietenkin ymmärrämme, että nykypäivän painopiste on 3D-tekniikoissa, mutta päätimme palata nykypäivänä itsestäänselvyytenä pidettyyn grafiikkakomponenttiin - 2D-grafiikkaan. Ja älä usko, että päätimme vain lisätä pari testiä testipaketti, mikä nosti esiin ongelmia, jotka ratkaistiin aikana, jolloin RAMDAC-suorituskyky oli merkittävä muutos. Mutta puhumme tästä lisää hieman myöhemmin.

Vaikka useimmat käyttäjät ovat kiinnostuneita Windowsin graafisen käyttöliittymän näyttönopeudesta (josta Windows 7 on saanut melko paljon kiitosta Vistaan ​​verrattuna), havaitsimme, että Windows 7:n väitetty "grafiikkapäivitys" ei ole niin tuore kuin miltä se näyttää. Windows XP:hen (ja jopa Vistaan) verrattuna GPU-valmistajat eivät ole vielä täysin optimoineet 2D-grafiikkaa Windows 7:lle, ainakaan tutkimusten mukaan. uusi toteutus GDI (Graphics Device Interface) API-kutsut. Tiedämme kaikki, että 2D-grafiikka ei ole vain hauskoja paletteja, optisia siirtymätehosteita ja animoituja valikoita, joissa on varjoja. kehittäjien täytyy nopeuttaa vanhojen hyvien pikselien, viivojen, käyrien, suorakulmioiden, polygonien ja kaikenlaisten graafisten primitiivien, kuten niitä usein kutsutaan, renderöintiä.

Tärkeä alustava huomautus

Emme halunneet antaa artikkelille tunteita, vaikka "punaisten" tai "vihreiden" leirien kannattajat hierovat silmiään lukiessaan materiaalia. Koska emme itse uskoneet testituloksiin, vietimme Lisäaika valmistella artikkeli siten, että tulokset ovat kaikkien osapuolten edun mukaisesti mahdollisimman objektiivisia ja toistettavissa. Pyrimme myös luomaan objektiivisimman pohjan näytönohjainkorttien vertailulle. Emme halunneet osoittaa sormella yhden tai toisen valmistajan suuntaan: on tärkeää ymmärtää, että tämä artikkeli on tarkoitettu auttamaan niitä käyttäjiä, jotka käyttävät tietokonettaan paitsi peleihin, myös tekevät todellista työtä tietokoneissaan.

Tältä osin on tärkeää ymmärtää, että nykyään voi olla melko vaikeaa työskennellä tuottavasti 2D-grafiikan kanssa Windows 7:ssä. Esimerkiksi kun käytimme Radeon HD 5870 ja uusimmat ajurit, pystyivät vaivoin renderöimään yksinkertaista vektorigrafiikkaa, yksinkertaisia ​​tai monimutkaisia ​​CAD-malleja tai jopa pelaamaan 2D-pelejä korkealaatuinen grafiikkaa. Tämä ei ole niinkään kritiikkiä, vaan yritystä määritellä ongelman rajat, jota olemme yrittäneet analysoida, ja ymmärtää ongelmaa mahdollisimman syvällisesti.

Teoria ja käytäntö

Koska useimmat käyttäjät eivät todennäköisesti tiedä 2D-kiihdytyksen sisäänrakennetuista ominaisuuksista ja käyttäytymisestä Windows XP:ssä tai Windows 7:ssä, päätimme jakaa erittäin syvällisen artikkelimme kahteen osaan. Ensimmäisessä osassa tarkastellaan 2D-grafiikan teknisiä yksityiskohtia, jotta lukijamme voivat valmistautua toiseen osaan. Et vain ymmärrä testejämme, vaan pystyt myös tulkitsemaan niitä paremmin. Testauksen helpottamiseksi kehitimme jopa oman pienen testiohjelmamme (ja teimme sen saataville, jotta kaikki kiinnostuneet käyttäjät voivat ladata ja käyttää ohjelmaa itse - artikkelin toisessa osassa). Tavoitteenamme oli tehdä artikkelin molemmista osista mahdollisimman informatiivinen, helposti saatavilla oleva ja täydellinen.

Seuraavassa osiossa tarkastellaan 2D-grafiikan perusteita. Sillä välin uskomme myös, että jotkin tämän alueen perusteet eivät vahingoita ketään, ne voivat olla hyödyllisiä muiden aiheiden ymmärtämisessä, ei vain testeissämme.

Windows: miten kaikki alkoi

Palataanpa vuoteen 1985. Tänä vuonna Mihail Gorbatšovista tuli NKP:n keskuskomitean sihteeri, "Amadeus" sai Oscarin paras elokuva, ja Ronald Reagan valittiin toiselle kaudelle Yhdysvaltain 40. presidentiksi. Harvat ihmiset huomasivat sen, mutta käyttöjärjestelmä julkaistiin vuonna 1985 Microsoft Windows 1.0.


Ikkunat pienellä määrällä ikkunoita - jopa ilman päällekkäisiä alueita. Klikkaa kuvaa suurentaaksesi.

Ajatus virtuaalisen graafisen käyttöliittymän sijoittamisesta tekstimuotoisen käyttöjärjestelmän päälle ei ollut vallankumouksellinen edes vuonna 1985. Itse asiassa tämä oli lähestymistapa, jonka useat yritykset, mukaan lukien Microsoft ja Digital Research, käyttivät tuolloin laajentaakseen läsnäoloaan markkinoilla ja tehdäkseen PC-tekniikasta helpommin suuremman osan potentiaalisista ostajista ja käyttäjistä. Ajatuksena oli, että sovellukset olisivat tarpeeksi käyttäjäystävällisiä, jotta myös ei-IT-ammattilaiset voisivat käyttää niitä ilman, että heidän tarvitsee ensin oppia paljon tietokoneesta. Mielenkiintoista on, että toisin kuin jopa Windows 1.0, Digital Research GEM -monikäyttäjäkäyttöjärjestelmä tuki ikkunan peittoa jo tuolloin.



Vasta version 2 myötä Windows alkoi täyttää nimensä. Klikkaa kuvaa suurentaaksesi.

Jos Windows 2.0 -käyttöjärjestelmää ei olisi otettu käyttöön vuonna 1987, jossa oli jo tuki useille päällekkäisille ikkunoille, niin on täysin mahdollista, että kukaan ei tietäisi Microsoft Windowsista tänään. Itse asiassa Windows on velkaa selviytymisensä kahden ensimmäisen vuoden jälkeen sen alkuperäisen ilmoituksen jälkeen jollekulle, jolla on edelleen valtava vaikutus Microsoftissa: Steve Ballmer. Hänen Windows 1.0:n mainostamista on edelleen vaikea unohtaa tänä päivänä, sillä hän hinnoitteli säädyttömästi Windows 1.0:n vaikuttavaan 99 dollariin (ei pieni summa vuodelle 1985), vaikka oikeita ikkunoita ei tueta. Steve Ballmer voisi todella valloittaa katsojan – häntä voidaan kutsua markkinointineroksi. Katso itse.

Steve Ballmer myy Windowsia.

Version 2.0 julkaisusta lähtien Windows on pystynyt tarjoamaan (ainakin) evoluutionaalisia, ellei vallankumouksellisia muutoksia myöhemmissä julkaisuissaan. Itse asiassa vallankumouksellinen muutos osoittautuu ongelmiksi, joita haluamme käsitellä Windows 7:ssä, yrityksen viimeisimmässä julkaisussa.

Uusin versio osoittautui juuri se, joka herättää syviä kysymyksiä, jotka pakottivat meidät kääntymään alkuun Windows. Syyt tähän ovat yksinkertaiset ja ilmeiset. Vertailemalla ikkunointitekniikoita opimme, että Windowsin graafisella käyttöliittymällä on kaksi puolta: graafinen käyttöliittymä tai GUI(emme ottaneet huomioon räätälöintiä käyttäjäpuolella, vaan keskityimme perustyöpöytään ja työskentely sen kanssa), mukaan lukien työskentely ikkunoiden kanssa sekä yksinkertaiset grafiikkatoiminnot, joita käytetään työpöytäympäristöjen luomiseen. Itse asiassa ikkunoiden sisällön näyttäminen ja niiden kanssa työskentely ovat Windows-käyttöjärjestelmän kaksi erillistä, vaikkakin toisiinsa liittyvää aluetta. Windows-käyttöliittymän ulkoasu ja tuntuma ovat jatkuvasti muuttuneet ja kehittyneet, mutta taustalla oleva yksinkertainen 2D-graafinen toiminnallisuus on pysynyt huomattavan yhtenäisenä ajan myötä.

Taitavat lukijat ovat luultavasti tietoisia siitä, että ikkunalliset käyttöliittymät eivät enää ole riippuvaisia ​​puhtaasta 2D-grafiikasta. Tästä syystä selitämme alla, mitä on olemassa pieni setti grafiikkakomennot 2D, joita on tarkasteltava niiden fyysisen näytön perusteella, enemmän tai vähemmän kolmiulotteisessa muodossa.

2D-rajoitukset: Yksi tila, jossa on useita ikkunoita


Tarvitset vain korkeuden ja leveyden.

Jos katsot näyttöä missä tahansa ikkunassa, tarvitset vain kaksi koordinaattia: X ja Y, eli leveys ja korkeus. Mitä puuttuu? Kaikki tiedot syvyydestä.

Windowsissa 2D-grafiikka näytetään GDI:n (Graphics Device Interface) kautta. Tämä käyttöliittymä tukee kaikkia ohjelmointikieliä korkeatasoinen ja sisältää kaikki tärkeät grafiikkatoiminnot, joita tarvitaan 2D-grafiikkaobjektien hahmontamiseen. Myöhemmät parannukset, kuten GDI+ ja Direct2D, eivät ole erityisen tärkeitä, koska GDI oli (ja on edelleen) sovelluksen 2D-grafiikan tärkein työkalu. Kriittiset toiminnot pikselien, viivojen, käyrien, polygonien, suorakulmioiden, ellipsien ja niin edelleen näyttämiseen - ne kaikki laskettiin alun perin suorittimella. Näytönohjainten kehityksen ansiosta uusimman sukupolven laitteisto tarjoaa nopeammat 2D-laskelmat ja renderöinnit. Tämä 2D-kiihdytyksen varhainen muoto on edelleen tärkeä, mutta 2D-kiihdytys ei ole enää ensisijainen tavoite. Tarvitsemme kolmannen koordinaatin saadaksemme kaiken irti graafisesta suorituskyvystä.

Alkuperäinen 2D-renderöintimenetelmä, joka on piilotettu näytön ikkunoiden päälle, on yksinkertainen ja suoraviivainen. Meidän on tiedettävä kaksi parametria: ensimmäinen on kunkin ikkunan sisällä oleva näytön alue, joka muuttuu (siis se on piirrettävä uudelleen). Toinen on järjestys, jossa ikkunat tai objektit menevät päällekkäin (näkyykö objekti kokonaan vai osittain vai peittääkö se toisen ikkunan). Tämä tyyppi informaatio vaatii ns. 2,5-ulotteisen ulottuvuuden tai grafiikkakerrosten käyttöä, kun kolmas koordinaatti saa arvon 0 (piilotettu) tai 1 (näkyvä), eli toimii eräänlaisena apuulotteisena. Tästä syystä monet asiantuntijat Ikkuna-alueet 2.5D-grafiikasta puhutaan paljon.


Z-arvo näyttää, kuinka ikkunat on asetettu päälle tai järjestetty.

Kun ikkunoiden järjestys tai näkyvyys on määritetty, voidaan näkyvien ikkunoiden sisältö näyttää puhtaalla kaksiulotteisella graafiset toiminnot. Joka tapauksessa on välttämätöntä paitsi laskea näyttöikkunoiden sisältö kokonaan, myös ohjata erilaisia ​​tyyppejä tiedot ja ikkunan sisältö. Mitä tapahtuu esimerkiksi jos ikkunaa siirretään? Kun toinen ikkuna sisältää alueen, joka avautuu kokonaan tai osittain tämän toiminnon seurauksena, järjestelmän grafiikkatoiminto WM_PAINT on kutsuttava tarkalla tiedolla siitä, mikä suorakaiteen muotoinen alue on piirrettävä uudelleen. Toiminnon optimoidut toteutukset rekonstruoivat tai piirtävät tämän alueen uudelleen. Valitettavasti monet toteutukset sen sijaan piirtävät koko ikkunan uudelleen, vaikka niillä on pääsy tarkempiin ohjeisiin, onko ikkunan sisältö renderöitävä kokonaan vai osittain. Tämä puolestaan ​​vaikuttaa grafiikan suorituskykyyn. Toinen tunnettu haittapuoli on hämärtyminen tai päällekkäisyys, kun ikkuna vedetään nopeasti näytön poikki järjestelmässä, jossa ei ole 2D-laitteistokiihdytystä.

Mutta anna minun tehdä yhteenveto siitä, mitä käsittelimme Tämä hetki. Näytössä on erilliset ikkunat, joiden 2D-sisältö on esitettävä näytöllä, jotta se näkyy. Näitä ikkunoita voidaan siirtää halutulla tavalla ja ne voivat mennä päällekkäin ja peittää osittain tai kokonaan muilla ikkunoilla. Kaikkien näiden ikkunoiden näkyvää sisältöä on ohjattava ja näytettävä mahdollisimman pienellä viiveellä. Tiedämme myös, että CPU itse, vaikka se on hyvin nopea prosessori, voi tulla liian stressaantunut suoritettaessa tällaisia ​​monimutkaisia ​​tehtäviä. Mitä muita ratkaisuja on olemassa kuin tämän kuorman siirtäminen näytönohjainkortille? Mitä tämä vaatii? Ja miksi kaikki kuulostaa teoriassa yksinkertaisemmalta kuin käytännössä? Tarkastelemme tätä kaikkea alla.

2.5D: 2D-laitteistokiihdytyksen myyttejä

Aluksi erilliset näytönohjaimet tarvittiin vain 2D-työhön. Ei ole mikään salaisuus, että nykypäivän erilliset näytönohjaimet tarjoavat erinomaisen suorituskyvyn monimutkaisissa grafiikan renderöintitehtävissä. Vanhemmat näytönohjaimet ovat kuitenkin jo liian hitaita päivittäiseen työhön, varsinkin kun niiden on näytettävä monimutkaisia graafisia tehosteita jälkimmäisessä esiintyvät renderöinnit Windows-versiot. Toisaalta tämä johtuu nykyaikaisten Windows-käyttöliittymien graafisesta monimutkaisuudesta ja toisaalta rajoitetusta graafisesta toimivuudesta. Mutta ymmärretään nämä komponentit yksitellen.

Tässä osiossa tarkastelemme grafiikan kiihdytys 2D liittyy alkuperäiseen grafiikan renderöintiin, GDI:stä itse näytönohjaimeen. Tämä sisältää toisaalta yksinkertaiset geometriset objektit, kuten pikselit, viivat, käyrät, polygonit, suorakulmiot ja ellipsit, ja toisaalta niiden skaalaus-, renderöinti- tai kirjasimien anti-aliasointitoiminnot (kuten TrueType tai OpenType).

Pitkäaikainen tuki niin sanottujen "2D-primitiivien" laitteistokiihdytykseen näytönohjainkorteissa on kadonnut, ja se on ollut poissa kuluttajatason tuotteista jonkin aikaa. Nykyään 2D-grafiikkatoimintojen kiihdytys toteutetaan 3D-kiihdytyksen analogina, mutta sitä käsittelee yksinomaan ja kokonaan ohjelmiston grafiikkaohjain, ei levyyn sisäänrakennetun laitteiston avulla.

Sarjamme toisessa osassa esittelemme ja selitämme erityisesti 2D-grafiikkaa varten kehittämämme vertailuarvon, joka testaa perusteellisesti 2D-grafiikan tärkeimmät ja perusominaisuudet. Lisäksi tämä testi osoittaa sen ohjelmiston ohjain sillä voi olla negatiivinen ja arvaamaton vaikutus 2D-grafiikkaan. Esittelemme myös yhdeksän yleistä testikriteeriä.


Näytä teksti.


Suorakulmiot.


Käyrät.

Renderöintifunktioiden muuntaminen on vain osa 2D-kiihdytystä. Merkittävää ja erittäin positiivista kiihtyvyyttä tarjoavat nykyaikaiset 3D-näytönohjaimet, jotka voivat renderöidä, ohjata ja näyttää 2.5D-grafiikkainformaatiota laitteistossa.


Kaikki näkyy heti.

Miten se kaikki toimii? Kuten 3D-grafiikassa, ikkunoiden näkyvät ja piilotetut alueet lasketaan, jotka tallennetaan kokonaan virtuaalisten suorakaiteen muotoisten alueiden muodossa ja niissä näytetään kaikkien aktiivisten ikkunoiden sisältö reaaliajassa. Siksi mitään ei tarvitse laskea uudelleen, kun siirrät tai vaihdat ikkunaa; vain ne alueet, jotka olivat piilossa ja ovat nyt näkyvissä, on piirrettävä uudelleen yhdessä kaiken sen jälkeen muuttuneen Viimeisin päivitys. Näytönohjain tietää aina ikkunoiksi kutsuttujen virtuaalisten suorakulmioiden koon ja sijainnin. Syvyyspuskuria (z-puskuria) käyttämällä näytönohjain seuraa ikkunoiden tai objektien järjestystä ja prioriteettia näytöllä (tunnetaan myös nimellä Z-järjestys). Siksi näytönohjain voi itse määrittää, mitkä kohteet ovat näkyvissä, eli mitä on näytettävä suoraan näytöllä.

Kerron lyhyesti, mitä tämä kaikki tarkoittaa.

Nykyaikainen 2D-laitteistokiihdytys sisältää molemmat toteutuksen avaintoiminnot 2D renderöinti ja 2.5D kerrostustekniikoiden käyttöönotto ikkunoihin ja käyttöliittymään.

Olisi kuitenkin liian hankalaa tutkia jokaista julkaistua Windows-versiota lisätietojen löytämiseksi. Koska havaitsemamme ongelmat vaikuttivat vain testin suorituskykyyn Windows 7:ssä, rajoitimme toimintaamme Windowsin testaus XP, Vista ja aivan luonnollisesti Windows 7.

Windows XP: " vanha koulukunta" 2D- ja WM_PAINT-rajoitukset

Voit sanoa, mitä mieltä olet Windows XP:stä, mutta GDI-laitteistokiihdytys toimii moitteettomasti tähän päivään asti ja riittää useimpiin sovelluksiin. XP ei kuitenkaan voi siirtää 2.5D-tasojen kanssa työskentelytekniikkaa nykyaikaisille 3D-näytönkorteille. Kuten yllä kuvasimme, ikkunan sisällön renderöinnin tekevät sovellukset itse.



Tyypillinen 2D-sovellus, jota varten he eivät todennäköisesti osta kallista näytönohjainta. Klikkaa kuvaa suurentaaksesi.

Tämä rajoitus ei todennäköisesti häiritse käyttäjiä, jotka keskittyvät yhteen ikkunaan työpöytäsovellus. Tämän tekniikan tyypillisin sovellus on nähtävissä SDI (single device interface) -ympäristöissä. Mutta asiat muuttuvat epämukavammiksi, kun sinulla on useita ikkunoita auki ja näkyvissä työpöydälläsi. Kukapa ei haittaisi hyödyntää parannettua kerrostekniikkaa, joka tukee valikoita, toimii paremmin nykyaikaisilla laitteistoilla ja helpottaa useiden ikkunoiden käyttöä useilla näytöillä? Kukapa ei haluaisi tehdä liikkuvista ikkunoista ja ikkunoiden jälkiä menneisyydestä nauttien paremmasta 2D-grafiikkasuorituskyvystä?



Ikkunat ovat kuin korttipakka: ikkunoiden monistaminen XP:ssä vedettäessä. Klikkaa kuvaa suurentaaksesi.

Vaikka puhdas 2D-suorituskyky vektorissa grafiikkaohjelmat, kuten Corel Draw tai CAD-sovelluksissa on melko korkea, koska GDI-toiminnot ovat niissä kunnolla tuetut, osuimme WM_PAINTin rajoituksiin. Kun XP:n käyttöliittymä on ylikuormitettu animaatioilla, pehmeillä varjoilla, läpinäkyvät ikkunat ja muut graafiset elementit, se on lähellä 2D-grafiikka rajoja.



Kun järjestelmä on raskaan kuormituksen alaisena, WM_Paint-toiminto jumiutuu tai päivittyy vain ajoittain. Uudelleenpiirtotapahtumien on odotettava vuoroaan toteuttaakseen. Klikkaa kuvaa suurentaaksesi.

Monet käyttäjät ovat havainneet, että on parasta näyttää ikkunat vain kehyksinä niitä siirrettäessä ja poistaa animoidut valikot kokonaan käytöstä. Yleensä graafisten resurssien säästäminen osoittautuu täysin normaaliksi tapaksi työskennellessään XP-työpöydällä. Valitettavasti monet ovat kauniita graafisia teemoja päätyi roskakoriin uuden käyttöjärjestelmän lanseerauksen alun euforian jälkeen, koska käyttöjärjestelmä menetti kyvyn renderoida kaikkea grafiikkaa ilman virheitä tai viiveitä.

Microsoft huomasi nopeasti, että sen 2D-grafiikkaratkaisu, joka oli olemassa kaikissa Windows-versioissa ennen sitä, mukaan lukien XP, oli vaihdettava. Ja yhä nopeampien 3D-kiihdyttimien kasvava saatavuus yhdistettynä erillisten GPU:iden hintojen laskuun osoitti selvästi, että ajat (ja käyttöjärjestelmät) olivat muuttumassa.


Tyypillinen esimerkki 3D-näytönohjaimesta vuonna 2005: Radeon X1800.

Tässä vaiheessa on tärkeää huomata, että XP:n laitteistokiihdytys ei aluksi toiminut ATI 780G:n integroidun näytönohjaimen kanssa alkuperäisillä resoluutioilla. Tämän seurauksena ikkunat renderöitiin hitaasti, mikä vaikuttaa jopa perusverkkoselaimen suorituskykyyn. Myöhemmät ohjainpäivitykset auttoivat ratkaisemaan nämä ongelmat. Mutta vielä nykyäänkään 780G:n grafiikkaydin ei toimi optimaalisesti, mikä on jyrkästi 740G:n vastakohta. Mutta tänään, kun XP on jo menneisyyttä, tämä tuomio saattaa joutua jakamaan samanlaisen kohtalon...

Sitten se tuli markkinoille Windows Vista, joka on ehkä Microsoftin kiistanalaisin käyttöjärjestelmä (yhdessä Windows ME:n kanssa). Joka tapauksessa, riippumatta rakkaudestasi tai vihastasi Vistaa kohtaan, yritys ei voinut enää lykätä joitain teknisiä parannuksia.

Lyhyt yhteenveto XP:stä on tämä.

  • 2D-laitteistokiihdytys toimi moitteettomasti GDI-komennoilla.
  • 2,5D-tasoilla ei ollut laitteistokiihdytystä, mikä johti hitaampaan käyttöliittymään.
  • Ikkunan sisällön toistuva uudelleenpiirtäminen tai muuttaminen vei aikaa ja vaikutti myös suorituskykyyn.

Windows Vista: edistyminen ja vanhasta luopuminen

Kun asensimme Windows Vistan ensimmäisen kerran, emme pystyneet hillitsemään itseämme. Kiehtova, haastava ja paranneltu Vista lupasi paljon.



Paljon valoa ja varjoja, mutta ei 2D-laitteistokiihdytystä. Klikkaa kuvaa suurentaaksesi.

Mutta se, mikä vaikutti ensi silmäyksellä hyvin vallankumoukselta, johti pettymykseen käynnistettäessä tämän tai toisen sovelluksen, ja joskus yksinkertaisesti inspiroi kauhua. Katsotaanpa eniten tärkeitä ominaisuuksia yksityiskohtaisesti.

2.5D-tasojen laitteistototeutus

Tämä tekniikka otettiin ensimmäisen kerran käyttöön Windows Vistassa. Kesti paljon saada se ulos pitkään aikaan, mutta vuonna 2006 tekniikka vihdoin ilmestyi. Yksi pieni rajoitus kuitenkin jäi: se toimi vain, jos Aero-liitäntä oli aktivoitu. Lisäksi 2,5D-tasojen tukemiseen tarvitsit 3D-yhteensopivan näytönohjaimen, vaikka et aikonut käyttää 3D-sovelluksia tai -pelejä. Jos käytit Vista Basic -teemaa, jouduit sietämään samoja hämärtymis- ja haamukuvia ikkunoita siirrettäessä, jotka XP-käyttäjät olivat tuttuja, koska 2.5D-tasojen tuki poistettiin automaattisesti - vaikka järjestelmässä olisi 3D-näytönohjain. asennettu. Harmi.

Siirtyminen 2.5D-tasojen tukemiseen pakotti myös Microsoftin käsittelemään useita ongelmia. Vistaa pidettiin hitaana käyttöjärjestelmänä, mutta suurimmaksi osaksi vakaana. Mutta mitä tapahtui? Mainitsimme jo, että GDI oli avaimen käyttöliittymä graafiseen ohjelmointiin. Sen jälkeen kun (valitettavasti) erittäin hidas C++-pohjainen GDI+-laajennus, joka ei koskaan tehnyt teknologista läpimurtoa suorituskyvyssään, emme voineet enää kiistää eräänlaisen "rajapinnan kaaoksen" olemassaoloa. Itse asiassa oli hyvin, hyvin epätodennäköistä, että GDI, GDI+, DirectDraw ja Direct3D olisivat laitteistokiihdytettyjä samaan aikaan.

Uuden laiteohjainmallin lisäksi Windows esitteli DWM-mallin näyttölaitteiden ohjaamiseen. Kokonaiskonsepti ei ollut niin yksinkertainen, hän lisäsi ohjelmataso(ja vastaava monimutkaisuuden lisääntyminen) toisaalta ikkunoiden ja renderöintikomentojen välillä ja toisaalta ohjainten ja laitteiden välillä. Suora vuorovaikutus lopetettiin DWM:n ilmaantumisen vuoksi. Pyrkiessään hallitsemaan kaikkea, DWM-malli varmisti kaikkien yksittäisten graafisten käyttöliittymien koordinoinnin. Tämä siirtymä jätti sivuun melko vakavan graafinen ominaisuus, jonka jo mainitsimme - nimittäin GDI-näyttötoimintojen laitteistokiihdytystä. Sitä on vaikea ymmärtää, mutta juuri niin tapahtui.

Suurin osa Vistan kuluttamasta lisämuistista johtuu yleensä SuperFetch-tekniikasta. Valitettavasti tämä kuvaa vain osittain todellista tilannetta. Laitteiston 2D-kiihdytyksen puute tarkoittaa, että koko GDI-kutsujen taakka ikkunan sisällön näyttämiseksi lankeaa CPU:lle. Kaikki tämä johtaa valtavaan puskuriin DWM:n sisällä. Täydelliset ikkunanäytöt on sitten siirrettävä näytönohjaimelle. Mutta tämä loi nopeasti vakavan pullonkaulan, koska vain yksi ikkuna kerrallaan saattoi lähettää GDI-komentoja DWM:lle. Asynkroniset tehtävät ei ole ratkaistu, mikä johtaa pitkän jonon odottavia palvelupyyntöjä. Kaikki tämä ei ainoastaan ​​vaadi huomattavaa CPU-aikaa suorittaakseen, vaan kuluttaa myös huomattavan määrän muistia, koska kaikki aktiiviset ikkunat sijaitsevat DWM-puskurissa. Yksittäiset ikkunat voivat viedä 100 MB, joten on ymmärrettävää, että muistin kulutus kasvaa. Äärimmäisissä tapauksissa Vista voi yksinkertaisesti jumiutua, esimerkiksi kun haittaohjelma avaa ikkunan toisensa jälkeen loputtomana silmukana. Tällainen silmukka ei tietenkään voi jatkua loputtomiin, joten sinun on tehtävä pakotettu sammutus tietokoneeseen saadaksesi järjestelmän hallinnan takaisin.



Muistin kulutuksen kaksinkertaistaminen ei kaksinkertaista nautintoa (lähde: Microsoft). Klikkaa kuvaa suurentaaksesi.

Tehdään yhteenveto Vistasta.

  • Vista käyttää laitteistokiihdytystä ensimmäistä kertaa 2.5D-kerrosmallissa.
  • Hidas piirtäminen aktiivisella Aero-tekniikalla Windows ikkunat jää menneisyyteen.
  • Microsoft on siirtymässä pois GDI:n 2D-renderöintiominaisuuksien laitteistokiihdytyksestä.
  • DWM ei voi toimia ikkunoiden kanssa asynkronisessa tilassa, mikä vaikuttaa negatiivisesti grafiikan suorituskykyyn.
  • DWM:n sisällä oleva GDI-komentojono voi kuluttaa paljon muistia.

Windows 7: Tuhlaajapojan paluu


Windows 7 -logo, joka on kiinnostanut monia käyttäjiä.

Monet käyttäjät pitivät Vistaa epäonnistuneena käyttöjärjestelmänä - sitä pidettiin hirviönä, joka kirjaimellisesti "nieli" muistia. Joka tapauksessa tätä käyttöjärjestelmää piti tarkastella uudelleen, sen valossa Windowsin julkaisu 7. Itse järjestelmässä tapahtuvien perustavanlaatuisten muutosten ohella Windows-grafiikka 7 antoi sen, minkä Vista otti – rajattoman 2D-grafiikkakiihdytyksen kaikilla alueilla, mukaan lukien GDI-renderöintitoiminnot.

WDDM 1.1:een siirtymisen ansiosta Windows 7 esti kaksinkertaisen muistin käytön (ensimmäisen kerran yksittäisille puskureille, toisen kerran jokaiselle aktiivinen ikkuna DWM:ssä). Tämä mahdollisti järjestelmän yksinkertaistamisen vaatimattommilla resurssivaatimuksilla. Windows Vistassa Windowsin kaksinkertainen muistinkulutus saattaa selittää, miksi järjestelmän muistia kulutettiin niin armottomasti.


Vistan tapauksessa käyttöjärjestelmä "syö" kaiken muistin, jonka se voi saada... (lähde: Microsoft).



...mutta Windows 7:n tapauksessa vaatimukset ovat vaatimattomammat (lähde: Microsoft).

Windows 7:n GDI:n täydennykseksi julkistettiin myös Direct2D. Tämä käyttöliittymä käyttää Direct3D:n kaltaista komentokäännöstä sekä laitteistokiihdytyksen toteuttamiseen että monimutkaisempien grafiikkatoimintojen tukemiseen. Direct2D tarjoaa GDI:n nopeusedun yhdessä GDI+:n edistyneiden ominaisuuksien kanssa, mikä ei toiminut sillä tavalla. Emme kuitenkaan saa vielä nähdä, pystyykö Direct2D saamaan tukea kehittäjiltä.

Vielä nykyäänkin suurin osa ohjelmista käyttää edelleen GDI-sovellusliittymää 2D-grafiikkaelementtien hahmontamiseen ja käsittelemiseen. Pidimme siitä, että Windows 7 toi takaisin laitteistokiihdytyksen näille komentoille, joista Vista hylkäsi.



Asynkroninen GDI Windows 7:ssä (lähde: Microsoft). Klikkaa kuvaa suurentaaksesi.


Lähes täydellinen skaalaus samanaikainen työ useilla ikkunoilla (lähde: Microsoft)

Tehdään lyhyesti yhteenveto Windows 7:stä.

  • GDI-renderöintikomentojen suora uudelleenohjaus kohteeseen näytönohjain DWM:n kautta.
  • GDI-komentojen asynkroninen ja samanaikainen käsittely useille ikkunoille.
  • Strategiat liiallisen muistin käytön välttämiseksi grafiikkapyyntöjen jonottamiseksi.
  • Uudet ja parannetut WDDM 1.1 -ajurit.

GPU-valmistajien vaatimukset

2D-grafiikan laitteistokiihdytyksen paluu on tuonut GPU-valmistajat takaisin peliin. Windows 7 -ajurit on rakennettava erityisesti tarjoamaan laitteistokiihdytystä 2D-GDI-kiihdytyskomennoille sekä tukemaan yksittäisten ikkunoiden 2,5D-kerrostoimintoa.

Joillekin näytönohjaimille tämä osoittautui melko vaikeaksi. Esimerkiksi nykyisen sukupolven ATI-näytönohjaimet näyttävät kärsivän kuljettajiin liittyvistä ongelmista kaikilla näillä 2D-grafiikkakiihdytyksen alueilla. Alla kerromme, kuinka löysimme nämä ongelmat ja mihin johtopäätöksiin teimme.

Windows 7: Radeon HD 5000 -näytönohjainsarjasta puuttuu 2D-kiihdytys

AMD on panostanut paljon DirectX 11 -näytönohjainkorttien kehittämiseen uusin sukupolvi; On aivan luonnollista, että ohjelmistopuolen viimeistely kesti jonkin aikaa (tuskin on salaisuus, että myöhemmät ohjainjulkaisut parantavat suorituskykyä ja vakautta monien mielestä eri tavoilla). Emme voi sivuuttaa nVidiaa tässä asiassa, koska löysimme samanlaisia ​​​​ongelmia GeForce ajurit yrityksille käytettäessä 2D-grafiikkaa yrityksen mobiiliprosessoreissa. Artikkelissamme käytimme Catalyst-ohjaimen uusinta versiota testaushetkellä - 9.12.



Catalyst ja Windows 7 navigoivat vaihtelevalla merellä. Klikkaa kuvaa suurentaaksesi.

Ongelma 1: ATIKMDAG lakkasi vastaamasta ja palautui sitten

Jos olet nähnyt tämänkaltaisen virheilmoituksen, se johtuu luultavasti siitä, että vaihdoit takaisin 2D-tilaan poistuttuasi 3D-sovelluksesta. Meillä ei ollut muuta vaihtoehtoa kuin olettaa, että tämä johtui jostain ajurin virheestä.

Muistutan teitä: kun Aero-liitäntä on kytketty pois päältä, DWM poistetaan käytöstä, joten 2D-kiihdytystä ei enää tapahdu (eli saamme saman asian Windows 7:ssä kuin Vistassa). Koska olemme kohdanneet tämän virheen kerta toisensa jälkeen järjestelmissä, joissa on asennettu näytönohjain Radeon HD 5750 ja Radeon HD 5870 (kahdessa eri testikokoonpanossa), meidän piti tarkoituksella poistaa Aero-liitäntä käytöstä molemmissa tapauksissa. Tällaisen liikkeen jälkeen virheitä ei enää ilmennyt. Mielenkiintoista kyllä, löysimme täsmälleen saman tilanteen (ja sen ratkaisun) kannettavissa tietokoneissa, joissa on GeForce-näytönohjain. Tietysti vain aika näyttää, onko tämä vain sattumaa vai onko kyseessä ristiriita DWM:n, ohjainten ja 2D-grafiikkalaitteiston kiihdytyksen välillä.

Seuraava pääepäiltymme osoittautuu suhteellisen mataliksi taajuuksiksi. AMD näytönohjain oletuksena 2D-tilassa, samoin kuin joitakin ongelmia näytönohjainkorttien varhaisessa BIOSissa. Niiden vaikutuksen vahvistamiseksi tai kumoamiseksi tarvitsemme kuitenkin pitkän aikavälin havaintoja - tai ajurin uuden version julkaisun jälkeen käyttäytymisen pitäisi muuttua.

Törmäsimme tähän ongelmaan, koska meillä oli heti vaikeuksia saada Radeon HD 5870 tukemaan 2D-grafiikkaa. Monet voivat tietysti lisätä tässä yhteydessä, että 3D-kartat luodaan peleihin, ei 2D-sovelluksiin. Mutta jos luet artikkelin aiemmat osat, sinun on myönnettävä, että tämä ongelma tuli vakavaksi vasta Windows 7:n (eikä Windows Vistan) julkaisun myötä. Tarkemmin sanottuna useimmat 3D-näytönohjaimet pystyvät käsittelemään 2D-grafiikkaa nykyään ilman ongelmia. Mutta suora vertailu 2D-kiihdytyksen tuki välillä GeForce GTX 285 ja Radeon HD 5870 johtivat siihen, että AMD-näytönohjain oli ulkopuolinen. Itse asiassa verrattuna integroituun grafiikkaratkaisuun nVidia GeForce 7050 (nForce 610i), jolla ei ole omaa muistia, uudet Radeonit vasta toiselle sijalle.

Asiat muuttuvat mielenkiintoisemmiksi, kun DWM on kytketty pois päältä. Vaikka sisään tässä tapauksessa 2D-kiihdytys ei ole enää mahdollista; AMD-näytönohjain lisää suorituskykyä. Verrattuna Nvidia GeForce, AMD-näytönohjaimen käyttäminen DWM:n ollessa pois käytöstä parantaa suorituskykyä. Jopa CorelDraw ja AutoCAD toimivat huomattavasti nopeammin Radeon HD 5870:ssä DWM:n ollessa pois päältä. Tämä asettaa nVidian suotuisaan valoon ja uhmaa sekä logiikkaa että aiempaa kokemusta GPU-tietojen testaamisesta.


2D-laitteistokiihdytys Aero-liitännän ja DWM:n kanssa antaa etua GeForce-näytönkorteille.


Ilman Aeroa ja laitteistokiihdytystä AMD 2D -näytönohjaimet ovat jopa viisi kertaa nopeampia. Järkyttävä!

Tästä syystä toistimme PassMark-testit useita kertoja näillä näytönohjaimilla.


Aero-liitäntä ja DWM on poistettu käytöstä - AMD-näytönohjaimet ovat huomattavasti nopeampia. Klikkaa kuvaa suurentaaksesi.

Valitettavasti mikään näistä testeistä ei pystynyt löytämään kohtaamiemme ongelmien tarkkaa syytä tai valaisemaan outoja suorituskykytuloksia. Siksi päätimme luoda oman testin, jonka avulla pystyimme ymmärtämään paremmin havaittujen ongelmien syitä.

Tom2D Benchmark: Radeon HD 5870 vs GeForce GTX 285 Windows 7:ssä

Uuden testimme avulla toivomme kaivautuvamme syvemmälle näiden 2D-suorituskyvyn heikkenemisen perimmäisiin syihin, jotka löysimme äskettäin käytettävissämme olevista Radeon HD 5870-, 5850- ja 5750 -näytönohjainkorteista. Aloitetaan siitä, että GDI-toimintojen 2D-kiihdytys Windows 7:ssä ei selvästikään toiminut missään Radeon HD 5000 -sarjan malleissa, eli kohtaamme enemmän kuin vain vakavan hidastumisen. Mikä on ongelma: ohjaimessa vai laitteistossa? Myös nVidian tapauksessa kaikki ei mennyt hyvin: kaikkia mahdollisia toimintoja ei kiihdytetty tämän yrityksen näytönohjaimilla.

Testaa kokoonpano
prosessori Intel Core 2 Quad Q6600, 2,4 GHz @ 3,2 GHz, G0 stepping, 8 Mt L2-välimuisti, LGA 775
Muisti 4 Gt DDR2-1066 CL5
Emolevy A-Data Vitesta Extreme
käyttöjärjestelmä Windows 7 Ultimate x64
Videokortit Radeon HD 5870, GeForce GTX 285
Grafiikkaohjain Katalysaattori 9.12, GeForce 195.62
Videokortit Kellonopeus, kun Aero/DWM on käytössä Kellonopeus ilman kiihdytystä
ATI Radeon HD 5870 850 MHz 157 MHz
Nvidia GeForce GTX 285 648 MHz 300 MHz

Luodaksemme vahvemman perustan 2D-kiihdytyksen päälle/pois -vertailulle suoritimme myös kaikki testimme vanhemmalla nForce 610i -piirisarjalla, jossa oli integroitu GeForce 7050 -grafiikka (ilman erillistä muistia). Asensimme saman prosessorin ja 4 Gt muistia ja käytimme sitten samaa Windows 7 -käyttöjärjestelmää. Testasimme myös Radeon HD5870:n edeltäjän, ATI Radeon HD 4870:n, suorituskykyä testialustallamme.


SISÄÄN tämä testi Kaikki testinäytönohjaimet ovat kapealla suorituskykyalueella.

Olisi mielenkiintoista kuulla nVidia kommentteja siitä, miksi integroitu GPU näyttää 2D-grafiikkaa nopeammin kuin GeForce GTX 285, vaikka ero on hyvin vaatimaton.

Vertailun vuoksi ottamamme Radeon HD 4870 -näytönohjain sijaitsee kolmannella pohjalla, vaikka siinä ei olekaan erityisiä puutteita.


Yllättäen Radeon HD 5870 -näytönohjain ei yksinkertaisesti pysty tuottamaan laitteistokiihdytettyjä linjoja hyväksyttävällä suorituskyvyllä.

Vaikka sekä nVidia- että AMD-testikortit tuottivat hyväksyttäviä ja suhteellisen läheisiä tuloksia, kun 2D-kiihdytys oli pois päältä ja prosessori teki kaiken työn, kahden kortin väliin avautuu merkittävä aukko, kun Aero otetaan käyttöön. GeForce GTX 285 on 11 kertaa nopeampi kuin ATI Radeon HD 5870. Mikä pahinta, integroitu GPU emolevy 50 dollarilla kaksi vuotta sitten on suuruusluokkaa parempi kuin 400 dollarin näytönohjain.

Radeon HD 4870:stä saamamme tiedot osoittavat pienen eron aktiivisen Aero-tilan ja yksinkertaisen tilan (ilman grafiikkakiihdytystä) välillä Windows 7:ssä, mikä viittaa siihen, että viivojen piirtämisessä ei ole kiihdytystä Windows 7:ssä. Tämä näytönohjain oli huomattava. hitaampi kuin GeForce GTX 285 ja integroidut grafiikkaratkaisut, mutta se on silti parempi kuin Radeon HD 5870 kiihdytyksen ollessa päällä ja pois päältä.


Tämä testi antaa suunnilleen saman kuvan kuin viivapiirtotesti. Radeon HD 5870 tulee alareunasta, mikä vahvistaa epäilyksemme, ettei se pysty käsittelemään 2D-sovelluksia kunnolla. Tätä tuskin voi kutsua siedettäväksi edes kuluttajamarkkinoiden kannalta.

Kun Aero-liitäntä on käytössä ja DWM aktiivinen, GeForce GTX 285 -näytönohjain tarjoaa yhdeksän kertaa enemmän korkea suorituskyky. Samoin jopa vanha integroitu piirisarjan ydin on huomattavasti parempi uusi näytönohjain AMD. Muuten, Radeon HD 4870:n suorituskyky osoittautui erittäin mielenkiintoiseksi: näytönohjain pystyy nopeuttamaan käyrien lähtöä laitteistossa, vaikka suorituskyky on heikompi verrattuna molempiin nVidia-ratkaisuihin.


Koska Radeon HD 5870:ssämme oli selkeitä ongelmia viivojen renderöinnissa (etenkin täyteläisillä viivoilla), näemme, että puolet suorakulmiotestituloksistamme vastaa aikaisempia havaintoja, mikä ei ole yllättävää.

Joka tapauksessa on varsin mielenkiintoista nähdä, kuinka Radeon HD 5870 kaksinkertaistaa suorituskyvyn laitteistokiihdytyksen ollessa käytössä (verrattuna laitteistokiihdytykseen pois päältä), vaikka suorituskyky olisikin hieman huonompi kuin GeForce 7050 GPU:n.

Suorakaidetesti oli ainoa, jossa havaitsimme laitteistokiihdytyksen mahdollistavan huomattavan vaikutuksen ATI näytönohjain, ja missä laitteistokiihdytys on nimensä arvoinen. Radeon HD 4870 hyötyi tästä vaikutuksesta enemmän kuin 5870, vaikka se jäikin jälkeen muista korteista tässä tehostamattomassa testissä.


Tässä tapauksessa voitto myönnetään vanhalle integroidulle grafiikkaytimelle. Nvidia nForce 610i ylittää kaikki muut erilliset näytönohjaimet yllättävän suurella marginaalilla, eikä sillä ole väliä, käytämmekö niitä aktiivisella 2D-kiihdytyksellä vai ei-aktiivisina. On mielenkiintoista huomata, että molemmilla parhailla 3D-näytönkorteilla monikulmion lähtökiihdytys ei toimi ollenkaan.

Integroitu näytönohjain, jossa Aero on käytössä, on 10 kertaa nopeampi kuin Radeon HD 5870. Ilman kiihdytystä Radeon HD 4870 on hieman hitaampi kuin 5870. Mutta kun Aero on käytössä, 4870 toimii yli kaksi kertaa nopeammin kuin 5870.


Tulokset ovat samanlaisia ​​kuin yllä näimme. Molemmat huippuluokan näytönohjaimet eivät tarjoa 2D-kiihdytystä, toisin kuin integroitu piirisarja. Radeon HD 5870 -näytönohjain muuttuu ulkopuoliseksi, ja vanha Radeon HD 4870 sijoittuu jonnekin keskelle.

Lisäys

Näimme samanlaisia ​​tuloksia, kun käytimme Radeon HD 5750:tä, mikä tasoitti osan 5870:een vaikuttavista ongelmista. Verrasimme myös Catalyst 9.11- ja 9.12-ajureita ja havaitsimme huomattavia suorituskyvyn parannuksia siirryttäessä vanhasta versiosta uuteen versioon riippumatta siitä, onko laitteistokiihdytys oli käytössä tai Ei. Meidän seuraavalla vertailulla Windows 7:n ja Vistan suorituskykyä mitataan, mutta jätämme sen artikkelin toiseen osaan. Riittää, kun totean, että täälläkin löysimme testeissämme monia yllätyksiä.

Johtopäätös

Analyysimme perusteella Nykyinen tilanne, niin ATI Radeon HD 5000 -sarjan uusissa näytönohjaimissa on ongelmia 2D-grafiikan kanssa. Olemme myös melko huolissamme siitä, että vanhempi integroitu piirisarja oli joillakin alueilla nopeampi (sekä AMD- että nVidia-erillisiä näytönohjaimia vastaan). Emme myöskään löytäneet mitään hyväksyttävää ratkaisua työskentelyyn vektorigrafiikkaa käyttävien ohjelmien kanssa. Ja tämä ei koske vain meidän testausta; tämä koskee kaikkia, jotka työskentelevät säännöllisesti 2D-grafiikan kanssa. Rehellisesti sanottuna on melko vaikea kuvitella, kuinka vanha Radeon HD 4870 -näytönohjain voisi päästä lähelle tai jopa päihittää uudet näytönohjaimet niin monissa testeissä.

Vaikka 2D-kiihdytys (mukaan lukien 2,5D-kerrokset) toimii hyvin, AMD ei ole vielä ottanut käyttöön joitain perustoiminnot GDI Radeon HD 5000 -näytönohjainsarjassa Windows 7:n alkuperäisestä julkaisusta on jo kulunut useita ajureja, joten tilanne on vaikea ymmärtää niille, jotka käyttivät useita satoja dollareita upouuteen näytönohjainkorttiin. Samaan aikaan sai "jarrut" 2D-sovelluksissa. Meidän on myös muistutettava, että tämä kaikki ei koske vain synteettistä 2D-testiä vaan myös erilaisia ​​reaalimaailman sovelluksia, joita käytämme testeissämme, mukaan lukien AutoCAD, Corel Draw, Adobe Illustrator, Photoshop CS3/CS4, Microsoft Publisher, PowerPoint ja niin edelleen. Tämä vaatii AMD:ltä kiireellisiä ja vakavia parannuksia ohjaimiin, varsinkin kun tulokset Vistassa osoittavat paljon parempaa suorituskykyä kuin Windows 7:ssä (puhumme tästä artikkelin toisessa osassa).

Tämän artikkelin valmistelun ja testauksen aikana soitimme useita kertoja Antal Tunglerille, AMD:n tekniselle PR-päällikölle keskustellaksemme Radeon HD 5000 -sarjan 2D-suorituskyvystä Windows 7:ssä. Kun vahvistimme itsellemme, että nämä suorituskykyongelmat liittyivät erityisesti GDI-ongelmien vuoksi, joita melkein kaikki työpöydän ikkunoiden kanssa toimivat ohjelmat kokevat, tämä tilanne ei enää näyttänyt meistä siedettävältä, etenkään koti- ja toimistokäyttäjille. Lisäksi kilpailijan integroitu grafiikkasuoritin käsitteli 2D-grafiikkaa tehokkaammin.

Voimme vain olettaa (ja toivoa), että syy ja mahdollinen ratkaisu on Catalyst-ajureissa. Jos näin on, AMD pystyy korjaamaan ongelmat melko helposti. Ottaen huomioon äskettäin julkaistu edullisia näytönohjaimia, voimme olettaa, että ongelmat vaikuttavat koko linjaan. Mutta mikä meitä huolestuttaa enemmän, kun otetaan huomioon testitulokset, on se, että suorakulmiot saavat huomattavaa nopeutta, kun taas kaikki muut graafiset primitiivit (etenkin viivat ja käyrät) eivät. Näemme vakavan suorituskyvyn heikkenemisen, kun GPU-laitteistokiihdytys on käytössä - mikä viittaa siihen, että täällä ei tapahdu mitään hyvää. Diskreetti nVidia näytönohjain viiveellä myös ellipsien ja polygonien renderöinnissa, ja olemme erittäin kiinnostuneita tietämään, miksi näin tapahtuu.

Toistaiseksi suosittelemme, että Radeon HD 5000 -näytönohjainsarjan käyttäjät poistavat Aero-liitännän käytöstä, kun he työskentelevät intensiivisesti 2D-grafiikkaa käyttävien ohjelmien kanssa. Tässä tapauksessa tuottavuuden kasvu voi olla jopa 300%, mikä kompensoi helposti kauniiden ja läpinäkyvien ikkunakehysten puutteen. Lisäksi voit poistaa Aeron käytöstä vain käynnistysohjelmia varten, joten sinun ei tarvitse luopua Aero-liittymästä kokonaan.

Napsauta hiiren kakkospainikkeella ohjelman kuvaketta ja valitse näkyviin tulevasta valikosta "Ominaisuudet". Valitse "Yhteensopivuus"-välilehti ominaisuusikkunassa ja valitse sitten "Poista työpöydän kokoonpano" -valintaruutu.


"Disable Desktop Composition" -vaihtoehdon valitseminen poistaa DWM-tuen käytöstä.

Toisessa osassa testaamme jälleen AMD-näytönohjainten ominaisuuksia ja vertaamme niitä suoriin ja epäsuoriin kilpailijoihin nVidiasta. Sillä välin keskustelemme AMD:n ja nVidian kanssa keskustellaksemme ensimmäisen testimme tuloksista. Olemme erittäin kiinnostuneita tietämään, mitä he sanovat.

Keskusteltuamme tästä aiheesta intensiivisesti kollegojemme kanssa päätimme tehdä syvällisempiä testejä erilaisille laitteistoille XP:ssä, Vistassa ja Windows 7:ssä. Tavoitteenamme on löytää syvempää ymmärrystä graafiset ominaisuudet 2D kaikista näistä käyttöjärjestelmistä. Aiomme tarkastella vanhempia S3-näytönohjainkortteja, Voodoota, lukuisia vanhempia GeForce-malleja ja koko AMD/ATI-näytönohjainvalikoimaa. Kaiken kaikkiaan emme halua jättää mitään pois ottamalla mukaan jopa integroidut grafiikkaytimet laajasta emolevyvalikoimastamme testeissämme.

Tiedämme jo, että tämän prosessin aikana löydämme mielenkiintoisia asioita sekä joitain pettymyksiä. Artikkelin toisessa osassa annamme myös tarkemman kuvauksen testeistä, testitulosten arvioinnista ja annamme myös mahdollisuuden ladata Tom2D Benchmark itse. Olemme varmoja, että löydät tämän erittäin mielenkiintoisena, varsinkin kun huomaamme, mitkä kuluttajatason näytönohjaimet tarjoavat paremman 2D-grafiikan suorituskyvyn tietyissä Windows-versioissa. Yllätyksiä odottaa, joten pysy kuulolla!

Päivittää. Tarkastellessaan alustavia 2D-suorituskykytuloksiamme AMD teki seuraavat oletukset.

  • Tom's Hardware mittasi alueen (2D-viivat jne.), jota ei ollut vielä optimoitu.
  • Ennen tätä uutta testiä emme olleet nähneet muiden sovellusten pullonkauloja samalla tavalla, joten emme keskittyneet siihen aiemmin.
  • Alkuperäinen analyysimme osoittaa, että tällä alueella ei ole laitteistorajoituksia.
  • Pyydämme kuljettajien kehitystiimiämme optimoimaan myös tälle alueelle ja yritämme ottaa käyttöön uuden ajurin, joka ratkaisee ongelman mahdollisimman nopeasti.
  • Olemme jo löytäneet yksinkertaisen tavan parantaa suorituskykyämme vakavasti, ja yritämme ottaa sen käyttöön tulevissa Catalyst-ohjaimen versioissa (meidän täytyy kirjoittaa koodi, vahvistaa se, varmistaa, ettei se riko mitään muuta, jne.).

Hyvää huomenta, Habr!

Löysin mielenkiintoisia uutisia osoitteesta xda-developers.com, joka on uusin julkaisu Google-kehittäjä Diana Hackbornin Google+ -profiilin "Myyttien tuhoaminen täydestä laitteistokiihdytyksestä ICS:ssä". Otin vapauden tehdä lyhyen käännös-uudelleenkerronta näiden kahden julkaisun pohjalta, jotka esitän alla yhteenvedon alla. Tämän julkaisun ensimmäisen version julkaisin jo tänä iltana blogissa R2-D2: Android hyödyllä, mutta aihe vaikutti Habrahabrissa käsittelemisen arvoiselta (toivottavasti ei ole tarvetta herättää uudelleen keskustelua siitä, että "Linkit" -osio syksyn Habra-päivityksen jälkeen on käytännössä kuollut).

Googlen kehittäjä Diana Hackborn jakoi Google+ -sivullaan tietoja Android 4.0 Ice Cream Sandwichin käyttöliittymän laitteistokiihdytyksestä. Tämän toiminnon ympärillä syntynyt jännitys ei syntynyt ilman syytä - liikaa moitteita tehtiin 2D-elementtien toiston sujuvuudesta Androidissa verrattuna muihin mobiilikäyttöjärjestelmiin.

Tietenkin laitteistokiihdytys Androidissa on myönteinen asia, mutta on monia väärinkäsityksiä siitä, mikä tämä ominaisuus itse asiassa on. Ensinnäkin Android on tukenut laitteistokiihdytystä monien vuosien ajan useiden ikkunoiden hahmontamiseen (puhumme ikkunoiden koostumuksesta - tehtäväpalkista, ilmoituksista, valikkopalkista, käyttöliittymäelementtien näyttämisestä ja piilottamisesta). Tämä tarkoittaa, että kaikissa Androidin käyttöliittymäelementtien animaatioissa on aina käytetty laitteistokiihdytystä.

Toisin kuin ikkunoiden koostumuksen renderöinti, ikkunan sisäinen kuvien renderöinti on perinteisesti tehty prosessorilla Android 2.X:ssä ja sitä vanhemmissa. Android 3.0 Honeycombissa nämä toiminnot voidaan kuitenkin siirtää näytönohjaimeen, mutta vain, jos tämä on erikseen määritelty sovelluksen luettelossa android:hardwareAccelerated=”true”-vaihtoehdolla. Ainoa asia Androidin ero 4.0 ICS tarkoittaa, että kun kehitetään käyttämällä viimeisintä saatavilla olevaa API-tasoa 14 (ja kaikkia tulevia), tämä vaihtoehto sovelluksille on käytössä "oletuksena".
Näyttää siltä, ​​​​että meillä on nyt mahdollisuus "pakottaa" kaikki Android 4.0 ICS:n sovellukset toimimaan laitteistokiihdytyksen ollessa käytössä sen manifestista riippumatta, eikö olekin hienoa? Itse asiassa tämä ei ole totta. Jos esimerkiksi PowerVR-videokiihdytin, Nexus S:ssä ja jopa Galaxy Nexuksessa käytetyt ajurit syövät kukin 8 Mt. RAM-muisti jokaiselle prosessille, joka käyttää laitteistokiihdytystä. Ei näytä paljolta? Näin ei ollut, koska tällainen monien prosessien aktiivinen RAM-muistin kulutus kerralla lisää merkittävästi muistin kulutusta yleisesti, mikä vaikuttaa välittömästi moniajon nopeuteen - jopa hidastaen sitä merkittävästi. Tämän seurauksena Googlen suunnittelutiimi käyttää nyt paljon vaivaa hienosäätääkseen, mitkä käyttöliittymän osat todella tarvitsevat laitteistokiihdytystä Nexus S:ssä.

Mikä on lopputulos? Verrattuna Android 2.X:ään, Ice Cream Sandwichillä on lisää mahdollisuuksia, mukaan lukien laitteistokiihdytyksen lisääntynyt käyttö. Kuitenkin paitsi, että kiihdytys on käytössä "oletusarvoisesti", laitteistokiihdytyksen käyttö ICS:ssä ei ole sen "täydellistä" kuin se oli aiemmin. Ja muun muassa, älä unohda, että laitteistokiihdytys ei ole taikuutta tai ihmettä, kuten monet uskovat, mutta sen läsnäolo on varmasti plussa, ei miinus.

Tehokkaan laitteiston läsnäolo ei aina tarkoita nopeaa työtä laitteet. Joissain tapauksissa optimointi jättää paljon toivomisen varaa ja käyttäjä voi itse yrittää nopeuttaa älypuhelimen tai tabletin toimintaa. On olemassa useita menetelmiä, jotka voivat auttaa tämän tehtävän suorittamisessa. Näitä menetelmiä käsitellään artikkelissamme.

Poista kaikki tarpeettomat sovellukset

On sovelluksia, jotka voivat käyttää ylimääräisiä resursseja. Jos näitä sovelluksia ei käytetä, ne kannattaa poistaa.

Tämä sisältää sovellukset, jotka asennetaan älypuhelimeen oston yhteydessä. Joitakin niistä ei voi poistaa, ne on sisäänrakennettu laiteohjelmistoon, kun taas toiset, jos et tarvitse niitä, on parempi poistaa.

Älä käytä live-taustakuvia

Live-taustakuvat vaativat kummallista kyllä ​​lisäresursseja. Tietysti ne näyttävät kauniilta ja miellyttävät silmää, mutta jos kaipaat nopeutta, kannattaa silti sanoa hyvästit niille.

Älä käytä kolmannen osapuolen kantoraketteja

Älä käytä lisäwidgetejä

Paljon samaa voidaan sanoa widgeteistä, joita voidaan sijoittaa runsaasti työpöydälle. Yritä säilyttää vain ne widgetit, joita et todellakaan voi elää ilman, kuten kello tai sääennuste. Muut widgetit tulisi poistaa työpöydältä, koska ne, vaikkakin vähän, silti "syövät" muistia.

Poista tarpeettomat sovellukset käytöstä

On sovelluksia, jotka toimivat tausta, mutta tarve niille on harvinainen. Tässä tapauksessa puhumme kolmansien osapuolien sovelluksista, emme järjestelmän sovelluksista, joita ei suositella poistamaan käytöstä, koska tämä voi johtaa järjestelmävirheeseen.

Sovelluksen poistaminen käytöstä on helppoa. Siirry asetuksiin, etsi sovellusten osio, valitse haluamasi sovellus, mene siihen ja napsauta "Pysäytä".

Poista GPS ja geolocation käytöstä

Geolocation-asetukset ovat erittäin tärkeitä, mutta niitä voidaan käyttää vain tarvittaessa.

Tämä muuten auttaa myös lisäämään laitteen autonomiaa.

Suorita puhdistus kolmannen osapuolen sovelluksilla

Älä unohda poistaa välimuistia ja muita väliaikaisia ​​tietoja, jotka voivat myös vaikuttaa järjestelmän nopeuteen. Tyypillisesti tämä on kolmannen osapuolen sovelluksia kuten Clean Master, jonka avulla voit poistaa väliaikaisia ​​tiedostoja, mutta joissakin laitteissa ne on jo sisäänrakennettu laiteohjelmistoon.

Käytä GPU-kiihdytystä

Siirry valikkoon ja etsi "Kehittäjille"- tai "Kehittäjän asetukset" -osio.

Jos et näe tällaista osiota, sinun on otettava se käyttöön. Etsi "Tietoja puhelimesta", "Tietoja tabletista" tai "Tietoja laitteesta" -osio, mene siihen ja napsauta "Koontinumero" 7 kertaa (joskus sinun on napsautettava hieman enemmän kertoja, järjestelmä kertoo sinulle siitä).

Ota kehittäjäasetuksissa käyttöön pakotettu GPU-käsittely (2D-laitteistokiihdytys sovelluksissa).

Samalla voit kytkeä animaation pois päältä. Etsi kohteita, kuten "Ikkunan animaatioasteikko".

Poista animaatio käytöstä. Ole vain varovainen muokkaaessasi parametreja, jotkut niistä voivat aiheuttaa ongelmia järjestelmässä.

Päivitä laiteohjelmisto

Joskus suorituskykyongelmat liittyvät itse laiteohjelmistoon, ja ne voidaan ratkaista päivittämällä sama laiteohjelmisto. Tästä syystä (eikä vain) on niin tärkeää päivittää älypuhelimesi tai tablettisi ohjelmisto ajoissa.

Onko sinulla erilaisia ​​ideoita kuin meillä? Olemme iloisia, jos ilmoitat meille niistä käyttämällä artikkelin kommentteja.

Näytän sinulle, kuinka voit nopeuttaa Android-tablettiasi. Oletusarvoisesti valmistaja ei ole määrittänyt tablettia käyttönopeuden, vaan nopeuden mukaan vakaata työtä, lisäksi valmistaja asentaa tablettiin usein monia omia ohjelmiaan, joita harva tarvitsee, mutta tätä varten valmistaja saa rahaa niiltä, ​​joiden sovellukset hän asensi tablettiin.

1. Järjestelmäpalvelujen ja sovellusten poistaminen käytöstä

Siirry asetuksiin - sovellusten hallinta. Avaa kaikki sovellukset pyyhkäisemällä oikealta vasemmalle.

Kun siirryt kaikkiin sovelluksiin, näemme luettelon kaikista tablet-laitteeseen asennetuista sovelluksista.

Luettelon alaosassa näkyvät kaikki käytöstä poistetut sovellukset. Poistin katunäkymän, Googlen puhesyntetisaattorin, Yandex-elokuvajulisteen, Yandex-uutiset, Yandexin liikenneruuhkat, Yandex-taksin tabletistani.

Poistin myös sovellushallinnan, kartat, maailman aika, mobiilitulostus, Googlen asetukset Kumppani, tiedonvaihto Wi-Fi Directin kautta.

Poistetut Play-pelit Soita musiikkia, Polaris Office 5, S Voice, Samsung-sovellukset, Samsung-tulostuspalvelu.

Google Play -kirjat, Google Play -elokuvat, Google Play -haku, Google+ ja Hangouts ovat myös poissa käytöstä tabletissani.

En tarvitse kaikkia näitä sovelluksia enkä käytä niitä, mutta jos ne ovat päällä, ne päivittyvät, vievät tilaa, tarjoavat minulle palvelujaan ja häiritsevät minua visuaalisesti turhalla sotkullaan.

Voit myös poistaa käytöstä tablet-laitteellasi sovellukset, joita et käytä.

Voit poistaa sovelluksen käytöstä napsauttamalla sitä sovellusluettelossa. Ja tässä näemme Stop-painikkeen, jonka napsauttaminen sovellus lopettaa toimintansa, mutta ei sammu. Kun käynnistät tabletin uudelleen, se alkaa toimia uudelleen.

Ei kaikki järjestelmäsovelluksia Tabletissa sen voi sammuttaa, osan voi vain pysäyttää.

Näytän sinulle, kuinka sisäänrakennettu sovellus poistetaan käytöstä käyttämällä esimerkkinä viestisovellusta.

Esimerkiksi viestisovellus, jonka avulla voit lähettää ja vastaanottaa tekstiviestejä tablet-laitteesta, voidaan pysäyttää ja poistaa käytöstä, jos et lähetä tai vastaanota tekstiviestejä tablet-laitteeltasi.

Napsauta stop.

Näkyviin tulee ilmoitus: Pakota pysäytys. Sovelluksen pakottaminen pysähtymään voi aiheuttaa virheitä. Eli viestisovellus on parhaillaan käynnissä. Napsauta kyllä.

Viestisovellus on pysähtynyt. Poista nyt viestisovellus käytöstä. Napsauta Poista käytöstä.

Näkyviin tulee varoituskysymys: Poistetaanko sisäänrakennettu sovellus käytöstä?

Sisäänrakennettujen sovellusten poistaminen käytöstä voi aiheuttaa virheitä muissa sovelluksissa.

Napsauta kyllä.

Viestisovellus on nyt poistettu käytöstä.

Sovellusluettelosta näet, että se on poistettu käytöstä.

Jos tarvitset käytöstä poistetun sisäänrakennetun sovelluksen uudelleen, voit ottaa sen käyttöön. Avaa käytöstä poistettu sovellus sovellusluettelosta ja napsauta Ota käyttöön.

Sisäänrakennettu viestisovellus toimii taas.

2. Lopeta sovellusten suorittaminen

Siirry asetuksiin - sovellusten hallinta. Pyyhkäise oikealta vasemmalle avataksesi käynnissä olevan luettelon. Tämä luettelo näyttää käynnissä olevat sovellukset.

Oletetaan, että lopetamme lasten ääninauhurisovelluksen käytön tabletissa (tämän sovelluksen avulla voit tallentaa ääniä ja ääniä, kun se on käynnissä lasten tilassa).

Napsauta pysäytyspainiketta pysäyttääksesi sovelluksen, poistaaksesi sovelluksen RAM-muistista (se vie 2,5 Mt RAM-muistia) ja lopettaaksesi sen taustatyön, joka myös joskus lataa prosessorin.

3. Kehittäjäasetusten ottaminen käyttöön

Siirry asetuksiin - kehittäjävaihtoehdot.

Jos sinulla ei ole kehittäjäasetuksia, voit ottaa ne käyttöön.

Ota kehittäjäasetukset käyttöön siirtymällä laitekohtaan ja napsauttamalla koontiversion numeroriviä 7 kertaa, minkä jälkeen sinun pitäisi nähdä kehittäjäasetukset.

Minulla on jo kehittäjävaihtoehtoja tabletissani, joten kun napsautan koontiversiota, saan ilmoituksen: ei vaadita, kehittäjätila on jo käytössä.

4. Poista animaatio käytöstä

Siirry asetuksiin - kehittäjäasetukset, etsi ikkunaanimaatiomittakaava ja napsauta tätä kohdetta.

Napsauta nyt animaatio pois käytöstä poistaaksesi ikkunasiirtymän animaation käytöstä, jotta videoprosessoria ja prosessoria ei ladata tällä menettelyllä.

Poistamme myös siirtymäanimaatio- ja animaattorin kestoasteikon käytöstä.

Otamme myös käyttöön pakotetun GPU-käsittelyn hyödyntääksemme laitteistokiihdytystä 2D-sovelluksissa. Siten videokiihdytin ottaa haltuunsa grafiikan käsittelyn 2D-sovelluksissa ja vapauttaa prosessorin hieman tästä tehtävästä.

5. Poista taustaprosessit käytöstä.

Siirry asetuksiin - kehittäjävaihtoehdot. Löydämme kohteen taustaprosessit, oletuksena on vakioraja.

Napsauta taustaprosessien kohdetta muokataksesi kohdetta ja muuttaaksesi taustaprosesseja ei ole taustaprosesseja, joten jos sovellus ei ole näytöllä emmekä käytä sitä juuri nyt, niin se ei toimi taustalla eikä tuhlaa virtaa eikä kuormita prosessoria taustatyöllään.

Näin vain näytöllä parhaillaan käynnissä oleva sovellus toimii, eikä mikään "syö" tabletin resursseja taustalla.

Tässä on video-opastus Androidin nopeuttamiseen.

Osaan kohtuullisen määrän C++:aa ja nyt halusin tutkia pelin tekemistä. Mietin, mikä olisi paras tapa kirjoittaa laitteistokiihdytetty peli, joka on edelleen monialustainen (Windows/OSX/Linux). Se olisi 2d-peli, mutta riittävän intensiivinen, jotta suorittimen renderöinti ei todennäköisesti katkaisisi sitä.

Lopuksi olen nähnyt kirjastoja, kuten http://www.sfml-dev.org/, jotka ovat saattaneet helpottaa sitä, pitäisikö minun mennä tälle tielle?

Kiitos taas.

6 vastausta

Tämä on hölynpölyä kaverit

OpenGL ON cross-platform. Ei tarvita Qt:tä tai vastaavaa. Vain muutama osa on mukautettava: windows API ja input API, jotka ovat ainoat toiminnot, jotka riippuvat käyttöjärjestelmäkohtaisista rutiineista.

Sinulla on useita vaihtoehtoja:

Eri alustojen laitteistokiihdytetty 2d C++ -sovellus?

Tiedän OpenGL:n, mutta en löydä opetusohjelmia sen käyttämisestä eri alustoilla, ne kaikki keskittyvät yhteen alustaan.

SDL_Init(SDL_INIT_VIDEO); SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);//poista vsync käytöstä if (SDL_SetVideoMode(scrWidth, scrHeight, 32, SDL_OPENGL) == 0)( fprintf(stderr, "couldn"t set mode\0, 6 8 SDL_Quit(); SDL_GL_SwapBuffers() SDL_Quit();

Katso lisätietoja sdl-dokumentaatiosta.

SDL:n käyttö on myös mahdollista, mutta pelkään, että peli ei ehkä toimi, jos käytän sitä. Onko tämä välttämättä totta?

Jos vsync on poistettu käytöstä, voit saada missä tahansa muutamasta sadasta tuhanteen kuvaa sekunnissa. Tarkka suorituskyky riippuu laitteistosi monimutkaisuudesta ja kohtauksen monimutkaisuudesta. Sain 300 kuvaa sekunnissa yksinkertaiselle 3D Dungeon-indeksointirobotille, joka käytti opengl:n "RAW:ta" näyttämättä vertex-puskuriluetteloita/objekteja. Lisäksi, jos käytät kiinteää kuvanopeutta tai ajastinmoottoria, et saa enempää kuvia sekunnissa kuin pyysit.

SDL:ää käytettiin Unreal 2004:n siirtämiseen Linuxiin. Sitä käytettiin myös Doom 3/Quake 4:n Linux-portissa. Siksi se on perusteellisesti testattu ja tunnettu.

Minulle kysymys ei ole siitä, pitäisikö sinun käyttää kirjastoja vai ei. Tämä on kirjasto, jota sinun tulee käyttää. Jos haluat kirjoittaa pelin, etsi kirjastoja, jotka ratkaisevat suurimman osan siirrettävyysongelmista puolestasi. Näin voit keskittyä tärkeimpään: itse peliin. Muut ovat antaneet lisää kirjastoehdotuksia, joita voisin antaa sinulle.

Mielestäni on virhe murehtia suorituskyvystä ennen kuin olet edes aloittanut projektisi. Työskentele suorituskykyongelmien parissa kuten minkä tahansa muun kehityksen aikana kohtaamasi ongelman parissa. Luo ohjelmasi eristääksesi kirjastot muusta logiikasta eroavalle tasolle. Toteutusten vaihtaminen on tarvittaessa helpompaa. Sen avulla voit jopa kokeilla erilaisia ​​toteutuksia.

// erilliset tiedostot luokka LowLevelGraphicStuff ( // abstrakti ); luokka LowLevelGraphicStuff_SFML: julkinen LowLevelGraphicsStuff ( // todellinen SFML-toteutus ); luokka LowLevelGraphicsStuff_OGL: julkinen LowLevelGraphicsStuff ( // todellinen OpenGL-toteutus ); // pää // Suorita peli SFML-toteutuksen kanssa. gameLoop(new LowLevelGraphicsStuff_SFML()); // Suorita peli OpenGL-toteutuksen kanssa. gameLoop(new LowLevelGraphicsStuff_OGL());