Секрети Android: інженерні коди та режим розробника. Розробник Google розвіює міфи про «повне апаратне прискорення» в Ice Cream Sandwich

Вступ

Паралельно з виходом Windows 7 місяців тому виробники відеокарт представили багато моделей на нових GPU, після чого зайнялися вдосконаленням драйверів для своїх продуктів. Як нам здається, сьогодні пройшло достатньо часу, щоб вони змогли розібратися із найгострішими проблемами під свіжою операційною системою (які, чесно кажучи, були не такими критичними, як у разі появи Vista), а об'єктивні тести мають показати стан нової технології.

Звичайно, ми розуміємо, що сьогодні основна увага прикута до 3D-технологій, але ми вирішили повернутись до компоненту графіки, який сьогодні сприймається як належне – 2D-графіці. До того ж не думайте, що ми просто вирішили додати пару тестів до нашого тестовому пакету, піднявши проблеми, вирішені ще за часів, коли продуктивність RAMDAC давала істотну різницю. Але докладніше про це ми поговоримо трохи згодом.

Хоча більшість користувачів будуть цікавитись швидкістю відображення графічного інтерфейсу Windows (за яким Windows 7 отримала чимало похвал порівняно з Vista), ми виявили, що передбачуване "графічне оновлення" Windows 7 не таке свіже, як здається. У порівнянні з Windows XP (і навіть Vista) виробники графічних процесорів поки не провели повну оптимізацію 2D-графіки під Windows 7, принаймні, як показують дослідження нової реалізаціїдзвінків API GDI (Graphics Device Interface). Ми всі знаємо, що 2D-графіка складається не тільки із забавної палітри, оптичних ефектів переходів та анімованих меню з тінями; розробникам потрібно прискорювати відмальовування старих добрих пікселів, ліній, кривих, прямокутників, полігонів та всіляких графічних примітивів, як їх часто називають.

Важливе попереднє зауваження

Ми не хотіли давати статті якесь емоційне забарвлення, хоча прихильники "червоного" або "зеленого" таборів протиратимуть очі під час читання матеріалу. Оскільки ми самі не повірили у результати тестів, то витратили додатковий часна підготовку статті, щоб на користь усіх сторін результати були максимально об'єктивними та повторюваними. Ми також попрацювали над тим, щоб створити найбільш об'єктивну основу порівняння відеокарт між собою. Ми не хотіли вказувати пальцем у бік того чи іншого виробника: важливо розуміти, що ця стаття покликана допомогти тим користувачам, хто використовує комп'ютер не тільки для ігор, а й виконує на своїх ПК справжню роботу.

У цьому відношенні важливо розуміти, що сьогодні може бути дуже складно продуктивно працювати з 2D-графікою під Windows 7. Наприклад, коли ми використовували Radeon HD 5870 та останні драйвери, то з великими труднощами змогли вивести просту векторну графіку, прості або складні дизайни CAD або навіть пограти в 2D-ігри з високою якістюграфіки. Це не так критика, як спроба визначити межі проблеми, яку ми спробували проаналізувати, і зрозуміти проблему максимально глибоко.

Теорія та практика

Оскільки більшість користувачів навряд чи знають про вбудовані функції та поведінку 2D-прискорення під Windows XP або Windows 7, ми вирішили розбити нашу дуже глибоку статтю на дві частини. У першій частині ми розглянемо технічні деталі щодо 2D-графіки, щоб наші читачі змогли підготуватися до сприйняття другої частини. Ви не тільки зможете розібратися в наших тестах, але і краще їх інтерпретувати. Щоб полегшити наше тестування, ми навіть розробили власну невелику тестову програму (і відкрили до неї доступ, щоб усі зацікавлені користувачі змогли завантажити та використовувати програму самостійно – у другій частині статті). Наша мета полягала в тому, щоб зробити обидві частини статті максимально інформативними, доступними та повноцінними.

У наступному розділі ми розглянемо основи 2D графіки. Тим часом ми також вважаємо, що деякі основи в даній галузі нікому не завадять, вони можуть виявитися корисними для розуміння інших тем, а не лише наших тестів.

Windows: як усе починалося

Повернімося в 1985 рік. Цього року Михайло Горбачов став секретарем ЦК КПРС, "Амадей/Amadeus" отримав "Оскара" за кращий фільм, а Рональд Рейган був обраний на другий термін 40 президентом США. Мало хто помітив, але саме у 1985 році було випущено операційну систему Microsoft Windows 1.0.


Windows із невеликою кількістю вікон – навіть без взаємного накладання різних областей. Натисніть на зображення для збільшення.

Ідея накласти віртуальний графічний інтерфейс на операційну систему з текстовим режимом навряд чи була такою революційною, причому навіть у 1985 році. Фактично, саме такий підхід різні компанії, включаючи Microsoft і Digital Research, використовували у той час, щоб розширити свою присутність на ринку та зробити технологію ПК більш доступною для більшої частини потенційних покупців та користувачів. Ідея полягала в тому, щоб програми були досить дружні до користувачів, тобто навіть непрофесіонали у сфері ІТ могли працювати з ними без попереднього глибокого вивчення комп'ютера. Що цікаво, на відміну від навіть Windows 1.0, розрахована на багато користувачів ОС Digital Research GEM підтримувала накладання вікон вже в той час.



Тільки з версії Version 2 система Windows почала відповідати своїй назві. Натисніть на зображення для збільшення.

Якби в 1987 році не була представлена ​​операційна система Windows 2.0, де вже була підтримка безлічі вікон, що накладаються один на одного, то цілком можливо, що про Microsoft Windows сьогодні ніхто б і не знав. Фактично, Windows зобов'язана своїм виживанням довше за перші два роки після початкового оголошення тому, хто має і сьогодні величезний вплив у Microsoft - а саме Стіву Балмеру (Steve Ballmer). Його рекламу Windows 1.0 складно забути і сьогодні, оскільки він нескромно виставив ціну за Windows 1.0 на вражаючому рівні $99 (немала сума для 1985), незважаючи на відсутність підтримки реальних вікон. Стів Балмер справді міг захопити глядача – його можна назвати генієм маркетингу. Подивіться самі.

Стів Балмер продає Windows.

З випуску версії 2.0 ОС Windows змогла давати (принаймні) еволюційні, хай не революційні зміни у наступних релізах. Фактично, революційна зміна виявилася в проблемах, які ми хотіли б підняти в Windows 7, найсвіжішому випуску компанії.

Остання версія виявилася саме тією, що порушує глибокі питання, що змусили нас звернутися до самого початку Windows. Причини тому прості та наочні. Завдяки нашому порівнянню техніки роботи з вікнами ми дізналися про існування двох сторін графічного інтерфейсу Windows: графічний інтерфейс користувача або GUI(ми не враховували налаштування з боку користувача, а зосередили увагу на базовому робочому столі та роботі з ним), включаючи роботу з вікнами, а також прості графічні функціїякі використовуються для створення настільного оточення. Фактично, відображення вмісту вікон та робота з ними є двома роздільними, нехай і пов'язаними, сферами Windows. Вигляд і відчуття від роботи з інтерфейсом Windows продовжили змінюватися і еволюціонувати, але прості графічні 2D-функції, що лежать під ним, залишалися напрочуд незмінними з часом.

Підковані читачі напевно знають про те, що інтерфейс користувача з вікнами вже не спирається на чисту 2D-графіку. Саме тому ми пояснимо нижче, що існує невеликий набір графічних команд 2D, які слід розглядати у світлі їх відображення на фізичному дисплеї, у більш-менш тривимірному вигляді.

Обмеження 2D: один простір з багатьма вікнами


Все, що вам потрібно – висота та ширина.

Якщо ви подивитеся на відображення у будь-якому вікні, то вам знадобляться лише дві координати: X та Y, тобто ширина та висота. Чого бракує? Будь-яка інформація про глибину.

У Windows графіка 2D відображається через GDI (Graphics Device Interface). Цей інтерфейспідтримує всі мови програмування високого рівнята містить усі важливі графічні функції, які необхідні для рендерингу графічних об'єктів 2D. Пізніші покращення, такі як GDI+ та Direct2D, не відіграють особливої ​​ролі, оскільки GDI був (і залишається) найважливішим інструментом для графічного виведення 2D у додатку. Критично важливі функції виведення пікселів, ліній, кривих, полігонів, прямокутників, еліпсів тощо – всі вони спочатку прораховувалися на CPU. Завдяки розвитку відеокарт, останнє покоління "заліза" забезпечує більш швидкі 2D-розрахунки та рендеринг. Ця рання форма прискорення 2D залишається важливою навіть сьогодні, але двомірне прискорення вже не є основною метою. Щоб отримати максимум графічної продуктивності, нам потрібна третя координата.

Початковий спосіб 2D-рендерінгу, який ховається під накладенням вікон на екрані дисплея, простий і прямолінійний. Нам потрібно знати два параметри: перший – це область на екрані всередині кожного вікна, яка змінюватиметься (тому її потрібно перемальовувати). Другий - це порядок, в якому вікна або об'єкти накладаються один на одного (чи буде об'єкт видно повністю або частково, або він буде закритий іншим вікном). Цей типінформації вимагає так званого 2,5-мірного виміру чи використання шарів графіки, коли третя координата набуває значення 0 (прихована) чи 1 (видима), тобто постає як свого роду допоміжний вимір. Саме з цієї причини багато експертів у області Windowsбагато говорять про графік 2,5D.


Величина Z показує, як накладаються чи організовуються вікна.

Після того, як з порядком або видимістю вікон все буде визначено, вміст видимих ​​вікон може виводитись за допомогою чистих двовимірних вікон. графічних функцій. У будь-якому випадку необхідно не тільки прораховувати вміст вікон дисплея повністю, але також потрібно керувати різними типамиінформації та контентом вікон. Що станеться, наприклад, якщо вікно буде переміщене? Коли інше вікно містить область, яка повністю або частково відкривається внаслідок цієї дії, то має бути викликана системна графічна функція WM_PAINT з точною інформацією про те, яку прямокутну область слід перемалювати. Оптимізовані реалізації функції реконструюватимуть або перемальовуватимуть цю область. На жаль, багато реалізацій натомість перемальовують вікно повністю, незважаючи на можливість доступу до більш точних інструкцій, незалежно від того, потрібно повністю або частково відтворити вміст вікна. Це, своєю чергою, впливає графічну продуктивність. Інший недолік добре відомий – він полягає у розмиванні або дублюванні, коли вікно починаєш швидко перетягувати по всьому екрану на системі, де немає апаратного прискорення 2D.

Але дозвольте підбити підсумок того, що ми розглянули на Наразі. На дисплеї є окремі вікна, чий двомірний контент повинен відображатись на екрані, щоб його можна було бачити. Ці вікна можна рухати як завгодно, при цьому можуть перекриватися і частково або повністю закриватися іншими вікнами. Необхідно керувати видимим змістом всіх цих вікон, його потрібно виводити на екран із мінімальною затримкою. Ми також знаємо, що сам по собі CPU, нехай навіть це буде дуже швидкий процесорможе надто сильно навантажитися при виконанні подібних складних завдань. Які є виходи, крім того щоб перекласти це навантаження на відеокарту? Що для цього потрібно? І чому все звучить простіше теоретично, ніж реалізується практично? Все це ми розглянемо трохи нижче.

2,5D: міфи апаратного прискорення 2D

Дискретні відеокарти спочатку були потрібні лише для двовимірної роботи. Не секрет, що сьогодні дискретні відеокарти дають чудову продуктивність, коли потрібно працювати зі складними графічними завданнями рендерингу. Втім, старі відеокарти вже надто повільні для повсякденної роботи, особливо коли їм доводиться виводити складні графічні ефектирендерингу, присутні в останній версії Windows. З іншого боку, це пов'язано з графічною складністю сучасних інтерфейсів Windows, а з іншого боку - з обмеженою графічною функціональністю. Але давайте розберемося з цими компонентами, з одним одним.

У цьому розділі ми розглянемо графічне прискорення 2D, пов'язане з "рідним" рендерингом графіки, від GDI до відеокарти. Сюди входять прості геометричні об'єкти, такі як пікселі, лінії, криві, полігони, прямокутники та еліпси з одного боку, а також їх масштабування, рендеринг чи операції згладжування шрифтів (таких як TrueType або OpenType) з іншого боку.

Давня підтримка апаратного прискорення так званих "2D-примітивів" у відеокартах зникла, вона вже деякий час відсутня у продуктах споживчого рівня. Сьогодні прискорення двовимірних графічних функцій реалізується як аналог тривимірного прискорення, але обробляється виключно програмним графічним драйвером, а не вбудованим на плату "залізом".

У другій частині нашого циклу ми представимо та роз'яснимо тест, який ми спеціально розробили для двовимірної графіки, який ретельно тестує ключові та фундаментальні функції 2D-графіки. Більше того, цей тест показує, що програмний драйверможе негативно та непередбачено позначатися на 2D-графіці. Ми також представимо дев'ять загальних тестових критеріїв.


Відображення тексту.


Прямокутники.


Криві.

Перетворення функцій змальовування - це лише частина двовимірного прискорення. Значне і позитивне прискорення здійснюється сучасними 3D-відеокартами, які можуть виконувати рендеринг, управління та відображення графічної інформації 2,5D апаратними засобами.


Все виводиться негайно.

Як це все працює? Як і у випадку 3D-графіки, прораховуються видимі та приховані області вікон, які зберігаються повністю у вигляді віртуальних прямокутних ділянок, у яких виводиться у реальному часі вміст усіх активних вікон. Тому нічого не потрібно перераховувати при переміщенні або зміні вікна; тільки ті області, які були приховані, а зараз стали видно, необхідно перемалювати разом із усім, що змінилося з часу останнього оновлення. Відеокарта завжди знає розмір та розташування віртуальних прямокутників, відомих як вікна. Використовуючи буфер глибини (z-буфер) відеокарта відстежує порядок та пріоритет виведення вікон чи об'єктів на екрані (він також відомий як Z-порядок). Тому відеокарта може сама визначити, які видимі об'єкти, тобто що потрібно вивести безпосередньо на сам екран.

Дозвольте підвести короткий підсумок того, що це означає.

Сучасне апаратне прискорення 2D включає як реалізацію ключових функціймалювання 2D, так і реалізацію технологій накладання шарів 2,5D для вікон і інтерфейсу користувача.

При цьому було б занадто важко дослідити кожну версію Windows, що вийшла, для пошуку додаткових деталей. Оскільки проблеми, виявлені нами, стосуються продуктивності тестів лише під Windows 7, ми обмежили наше тестування Windows XP, Vista і, природно, Windows 7.

Windows XP: " стара школа 2D та межі WM_PAINT

Ви можете говорити про Windows XP все, що думаєте, але апаратне прискорення GDI працює бездоганно і по сьогодні, при цьому його вистачає для більшості типів програм. Втім, чого XP зробити не може, то це перекласти техніку роботи з шарами 2,5D на сучасні 3D-відеокарти. Як ми вже описували вище, рендеринг вмісту вікон виконується самими програмами.



Типовий 2D-додаток, для якого навряд чи купуватимуть дорогу відеокарту. Натисніть на зображення для збільшення.

Це обмеження навряд чи стурбує тих користувачів, які концентрують свої зусилля на будь-якому одному вікні. настільного додатку. Найбільш типове застосування подібної технології можна побачити в оточеннях SDI (single device interface, інтерфейс одного пристрою). Але все стає незручнішим, коли на робочому столі відкрито і видно безліч вікон. Хто проти того, щоб скористатися покращеною технологією шарів, яка підтримує меню, краще працює на сучасному "залізі", а також полегшує роботу з кількома вікнами на кількох моніторах? Кому не хотілося б залишити розмивання вікон, що переміщуються, і сліди за ними в минулому, отримавши вищу графічну 2D-продуктивність?



Вікна як колода карт: ефект дублювання вікон під XP під час перетягування. Натисніть на зображення для збільшення.

Хоча чиста 2D-продуктивність у векторних графічних програмах, таких як Corel Drawабо додатків САПР досить висока, оскільки функції GDI в них підтримуються належним чином, ми вперлися в обмеження можливостей WM_PAINT. Коли графічний інтерфейс XP перевантажений анімацією, м'якими тінями, прозорими вікнамита іншими графічними елементами, він впритул наближається до меж 2D-графіки.



Коли система знаходиться під важким навантаженням, функція WM_Paint "повисає" або оновлюється лише час від часу. Події перемальовки мають дочекатися своєї черги, щоби бути виконаними. Натисніть на зображення для збільшення.

Багато користувачів виявили, що найкраще відображати вікна тільки у вигляді рамок при їх перенесенні, а анімовані меню взагалі краще вимкнути. Загалом економія графічних ресурсів виявляється цілком нормальним підходом при роботі на робочому столі XP. На жаль, багато красивих графічні темивиявилися, зрештою, у кошику після початкової ейфорії, пов'язаної із запуском нової операційної системи, оскільки ОС втрачала здатність виводити всю графіку без помилок чи без затримок.

Microsoft швидко помітила, що її графічне рішення 2D, яке було у всіх версіях Windows до цього, включаючи XP, вимагає заміни. Та й зростаюча доступність все більш швидких 3D-прискорювачів разом із цінами, що знижуються, на дискретні GPU явно вказували на те, що часи (і операційні системи) змінюються.


Типовий приклад 3D-відеокарти у 2005 році: Radeon X1800.

На даний момент важливо відзначити, що апаратне прискорення в XP спочатку не працювало з інтегрованим графічним ядром ATI 780G в "рідних" роздільних здатності взагалі. Внаслідок цього вікна відмальовувалися повільно, що погіршувало навіть базову продуктивність web-браузера. Наступні оновлення драйвера допомогли вирішити ці проблеми. Але навіть сьогодні графічне ядро ​​780G не може працювати оптимально, що дуже контрастує з 740G. Але сьогодні, коли XP вже залишається в минулому, ця думка, можливо, теж має розділити подібну долю...

Потім на ринок вийшла Windows Vista, Що є, можливо, найбільш суперечливою ОС Microsoft (разом з Windows ME). У будь-якому випадку, незалежно від вашого кохання чи ненависті до Vista, компанія вже не могла відкладати деякі технічні вдосконалення.

Короткий підсумок XP такий.

  • Апаратне прискорення 2D працювало бездоганно для GDI.
  • Апаратного прискорення для шарів 2,5D не було передбачено, що призводило до уповільнення інтерфейсу користувача.
  • Перемальовка або зміна вмісту вікна, що повторюється, забирала час, а також позначалася на продуктивності.

Windows Vista: прогрес та відмова від старого

Коли ми вперше встановили Windows Vista, ледь стримували себе. Інтригуюча, складна та покращена, Vista обіцяла дуже чимало.



Багато світла та тіней, але без апаратного прискорення 2D. Натисніть на зображення для збільшення.

Але те, що здавалося дуже революційним на перший погляд, змінювалося прикростями при запуску тієї чи іншої програми, а іноді і просто вселяло жах. Давайте розглянемо самі важливі особливостів деталях.

Апаратна реалізація шарів 2,5D

Ця технологія була вперше реалізована у Windows Vista. На її вихід знадобилося дуже довгий часАле в 2006 році технологія нарешті з'явилася. Втім, одне невелике обмеження залишалося: вона працювала лише в тому випадку, якщо активовано інтерфейс Aero. Крім того, для підтримки шарів 2,5D була потрібна відеокарта з підтримкою 3D, причому навіть якщо ви не планували запускати 3D-додатки або ігри. Якщо ви використовували тему Vista Basic, то доводилося змиритися з тими ж ефектами розмиття та роздвоєння при переміщенні вікон, які були знайомі користувачам XP, оскільки підтримка шарів 2,5D автоматично вимикалася навіть якщо в системі була встановлена ​​3D-відеокарта. Прикро.

Перехід підтримки шарів 2,5D також змусив Microsoft вирішувати кілька проблем. Vista вважалася повільною операційною системою, але здебільшого стабільною. Але що сталося? Ми вже згадували, що GDI був ключовим інтерфейсомдля програмування графіки Після введення (на жаль) дуже повільного розширення GDI+ на основі C++, яке так і не зумовило технологічного прориву через свою продуктивність, ми вже не могли заперечувати існування свого роду "хаосу інтерфейсів". Фактично, було дуже і дуже несхоже, що GDI, GDI+, DirectDraw і Direct3D можуть взагалі одночасно прискорені апаратно.

Окрім нової моделі драйверів пристроїв, Windows представила модель DWM для керування пристроями виведення на екран. Загальна концепція виявилася не такою простою, вона додала програмний рівень(і відповідне збільшення складності) між вікнами та командами малювання з одного боку, а також між драйверами та пристроями з іншого боку. Пряма взаємодія була припинена через появу DWM. Намагаючись отримати контроль над усіма, модель DWM забезпечувала координацію всіх окремих графічних інтерфейсів. Цей перехід залишив осторонь досить серйозну графічну особливість, Про яку ми вже згадували - а саме апаратне прискорення функцій відображення GDI. Зрозуміти складно, але саме так і сталося.

Більшість додаткової пам'яті, яку споживає Vista, зазвичай відносять до технології SuperFetch. На жаль, це лише частково описує ситуацію насправді. Відсутність апаратного 2D-прискорення призвела до того, що весь тягар викликів GDI щодо виведення вмісту вікон лягає на CPU. Все це призводить до великого буфера всередині DWM. Повні відображення вікон повинні передаватися на відеокарту. Але це швидко призвело до появи серйозного "вузького місця", оскільки тільки одне вікно одночасно може відсилати команди GDI на DWM. Асинхронні завданняне дозволяються, що призводить до тривалої черги очікуваних запитів на обслуговування. Все це не тільки вимагає суттєвого процесорного часу на виконання, а й споживає чималий обсяг пам'яті, оскільки всі активні вікна знаходяться усередині буфера DWM. Окремі вікна можуть займати 100 Мбайт, тому цілком зрозуміло, що споживання пам'яті буде збільшуватися. У найекстремальніших випадках Vista може просто "зависнути" - наприклад, коли шкідлива програма відкриватиме одне вікно за іншим у нескінченному циклі. Звичайно, такий цикл не може продовжуватися нескінченно, тому вам доведеться виконати примусове вимкненнякомп'ютера, щоб відновити контроль за системою.



Подвоєння споживання пам'яті не подвоює насолоду від роботи (джерело: Microsoft). Натисніть на зображення для збільшення.

Підіб'ємо короткий підсумок по Vista.

  • Vista вперше використовує апаратне прискорення для моделі 2,5D шарів.
  • З активною технологією Aero повільне перемальовування вікон Windowsзалишається у минулому.
  • Microsoft відмовляється від апаратного прискорення функцій 2D-малювання GDI.
  • DWM не може працювати з вікнами в асинхронному режимі, що негативно впливає на графічну продуктивність.
  • Черга очікування команд GDI всередині DWM може забрати великий обсяг пам'яті.

Windows 7: повернення "блудного сина"


Логотип Windows 7, який зацікавив багатьох користувачів.

Багато користувачів вважали Vista невдалою ОС - вона сприймалася як монстр, що буквально "зжирає" пам'ять. У будь-якому випадку, на цю операційну систему потрібно було поглянути ще раз, у світлі випуску Windows 7. Разом із фундаментальними змінами самої системи, графіка Windows 7 дала те, що забрала Vista – необмежене прискорення 2D-графіки у всіх сферах, включаючи функції відтворення GDI.

Завдяки переходу на WDDM 1.1, Windows 7 запобігла подвійному використанню пам'яті (перший раз для буферів окремих, вдруге для кожного активного вікнав DWM). Це дозволило зробити систему простішою, з більш скромними вимогами до ресурсів. У Windows Vista подвійне споживання пам'яті для вікон може пояснити, чому пам'ять системи "з'їдалася" настільки нещадно.


У випадку Vista ОС "з'їдає" всю пам'ять, яку може отримати... (Джерело: Microsoft).



…але у разі Windows 7 вимоги скромніші (джерело: Microsoft).

Для доповнення GDI під Windows 7 було оголошено і Direct2D. Цей інтерфейс використовує перетворення команд, аналогічне Direct3D, щоб і реалізувати апаратне прискорення, і підтримати складніший набір графічних функцій. Direct2D дає перевагу за швидкістю GDI разом із розширеними можливостями GDI+, доля якого не склалася. Втім, ми ще маємо побачити, чи зможе Direct2D отримати підтримку з боку розробників.

Навіть сьогодні переважна більшість програм, як і раніше, використовують GDI API для рендерингу та роботи з графічними елементами 2D. Нам сподобалося, що Windows 7 повернула апаратне прискорення цих команд, від яких відмовилася Vista.



Асинхронний GDI під Windows 7 (джерело: Microsoft). Натисніть на зображення для збільшення.


Майже ідеальне масштабування при одночасної роботиз кількома вікнами (джерело: Microsoft)

Підіб'ємо короткий підсумок по Windows 7.

  • Пряме перенаправлення команд відображення GDI до графічному драйверучерез DWM.
  • Асинхронна та одночасна обробка команд GDI для кількох вікон.
  • Стратегії, що уникають надмірного використання пам'яті для створення черги графічних запитів.
  • Нові та покращені драйвери WDDM 1.1.

Вимоги виробників графічних процесорів

Повернення апаратного прискорення 2D-графіки повернуло у гру виробників графічних процесорів. Драйвери під Windows 7 повинні бути спеціально зібрані, щоб вони могли дати апаратне прискорення для двовимірних команд прискорення GDI, а також підтримувати роботу в 2,5D шарах окремих вікон.

Для деяких відеокарт це виявилося дуже непростим. Наприклад, поточне покоління відеокарт ATI, мабуть, страждає через труднощі, пов'язані з драйвером, у всіх цих областях прискорення 2D-графіки. Нижче ви прочитаєте про те, як ми виявили ці проблеми, і які ми зробили висновки.

Windows 7: у лінійки відеокарт Radeon HD 5000 немає 2D-прискорення

AMD доклала багато зусиль до розробки відеокарт DirectX 11 останнього покоління; цілком природно, що для доопрацювання програмної сторони потрібен деякий час (навряд чи для кого є секретом, що подальші випуски драйверів покращують продуктивність і стабільність багатьма різними способами). Ми не можемо обійти в цьому питанні і nVidia, оскільки ми виявили схожі проблеми у драйвера GeForceкомпанії під час використання 2D-графіки на мобільних процесорах компанії. Для нашої статті ми використали найсвіжішу версію драйвера Catalyst на момент тестів – 9.12.



Catalyst та Windows 7 плавають у неспокійних морях. Натисніть на зображення для збільшення.

Проблема 1: ATIKMDAG припиняв відповідати, потім відновлювався

Якщо ви стикалися з подібним повідомленням про помилку, то, напевно, це відбувалося після переходу назад до 2D-режиму після виходу з 3D-програми. Нам нічого не залишалося, крім припустити, що це результат якої-небудь помилки в драйвері.

Дозвольте нагадати: коли інтерфейс Aero вимкнений, то DWM відключається, тому 2D-прискорення більше не відбувається (тобто ми отримуємо те саме під Windows 7, що і під Vista). Оскільки ми стикалися з цією помилкою знову і знову на системах з встановленими відеокартами Radeon HD 5750 і Radeon HD 5870 (у двох різних тестових конфігураціях) нам довелося навмисно відключити інтерфейс Aero в обох випадках. Після такого маневру помилки вже не з'являлися. Що цікаво, таку саму ситуацію (і її вирішення) ми виявили на ноутбуках з відеокартами GeForce. Звичайно, тільки час покаже, чи це просто збіг або вказує на конфлікт між DWM, драйверами і апаратним прискоренням 2D-графіки.

Нашим наступним головним підозрюваним виявились відносно низькі частоти відеокарт AMDза замовчуванням у 2D-режимі, а також деякі проблеми в ранніх BIOS відеокартах. Втім, щоб підтвердити чи спростувати їхній вплив, нам знадобляться довгострокові спостереження – або після виходу нової версії драйвера має змінитися поведінка.

Ми уперлися в цю проблему, оскільки у нас відразу виникли труднощі з тим, щоб змусити Radeon HD 5870 підтримувати 2D-графіку. Багато хто може, звичайно, додати щодо цього, що 3D-карти створюються для ігор, а не для 2D-додатків. Але якщо ви читали попередні розділи статті, то маємо визнати, що ця проблема стала серйозною лише з виходом Windows 7 (а не Windows Vista). Якщо бути більш конкретним, більшість 3D-відеокарт без проблем здатні впоратися з 2D-графікою в наші дні. Але пряме порівнянняпідтримки 2D-прискорення між GeForce GTX 285 і Radeon HD 5870 призвело до того, що відеокарта AMD опинилася в аутсайдерах. Фактично, порівняно з інтегрованим графічним рішенням nVidia GeForce 7050 (nForce 610i), яке не має власної пам'яті, нові Radeonвстають лише друге місце.

Все стає цікавішим, коли DWM вимкнено. Навіть якщо в даному випадку 2D-прискорення вже неможливо, відеокарти AMD дають приріст за продуктивністю. Порівняно з Nvidia GeForceЗапуск відеокарти AMD з відключеним DWM дає їй приріст продуктивності. Навіть CorelDraw та AutoCAD працюють на Radeon HD 5870 помітно швидше при вимкненому DWM. Це виставляє nVidia у вигідному світлі та суперечить як логіці, так і попередньому досвіду тестування даних GPU.


Апаратне прискорення 2D з інтерфейсом Aero та включеним DWM дає перевагу відеокарт GeForce.


Без Aero та апаратного прискорення 2D відеокарти AMD працюють аж до п'яти разів швидше. Шокує!

Саме тому ми кілька разів повторили тести PassMark на цих відеокартах.


Інтерфейс Aero та DWM вимкнені – відеокарти AMD помітно прискорюються. Натисніть на зображення для збільшення.

На жаль, жоден із цих тестів не зміг знайти точну причину проблем, з якими ми зіткнулися, або пролити світло на дивні результати продуктивності. Саме тому ми вирішили створити власний тест, який дозволив краще дати раду причинам виявлених проблем.

Tom2D Benchmark: Radeon HD 5870 проти GeForce GTX 285 під Windows 7

За допомогою нового тесту ми сподіваємося глибше розібратися в справжніх причинах такого падіння продуктивності 2D, які ми нещодавно виявили з відеокартами Radeon HD 5870, 5850 і 5750 у нашому розпорядженні. Почнемо з того, що 2D-прискорення функцій GDI під Windows 7 явно не працювало на жодній з моделей лінійки Radeon HD 5000, тобто перед нами не просто серйозне уповільнення. У чому проблема: у драйвері чи "залізі"? У випадку з nVidia теж все виявилося благополучно: на відеокартах цієї компанії прискорювалися не всі можливі функції.

Тестова конфігурація
Процесор Intel Core 2 Quad Q6600, 2,4 ГГц @ 3,2 ГГц, степінг G0, кеш L2 8 Мбайт, LGA 775
Пам'ять 4 Гбайт DDR2-1066 CL5
Материнська плата A-Data Vitesta Extreme
Операційна система Windows 7 Ultimate x64
Відеокарти Radeon HD 5870, GeForce GTX 285
Графічний драйвер Catalyst 9.12, GeForce 195.62
Відеокарти Тактова частота при увімкнених Aero/DWM Тактова частота без прискорення
ATI Radeon HD 5870 850 МГц 157 МГц
Nvidia GeForce GTX 285 648 МГц 300 МГц

Щоб закласти міцнішу основу для порівняння включеного/вимкненого 2D-прискорення, ми також провели всі наші тести на старому чіпсеті nForce 610i з інтегрованим графічним ядром GeForce 7050 (без виділеної пам'яті). Ми встановили той же процесор і 4 Гбайт пам'яті, після чого використовували ту ж саму операційну систему Windows 7. Ми також перевірили продуктивність попередниці Radeon HD5870, відеокарти ATI Radeon HD 4870, у нашій тестовій платформі.


У даному тестіУсі тестові відеокарти знаходяться у вузькому діапазоні продуктивності.

Цікаво було б почути від nVidia коментарі щодо того, чому інтегрований графічний процесорвідображає 2D-графіку швидше, ніж GeForce GTX 285, хай навіть різниця дуже скромна.

Відеокарта Radeon HD 4870, взята нами для порівняння, розташувалася третьою знизу, хоча жодних особливих недоліків вона не демонструє.


Дивно, але відеокарта Radeon HD 5870 просто не здатна виводити лінії з апаратним прискоренням із прийнятною продуктивністю.

Якщо обидві тестові відеокарти nVidia і AMD дали видали прийнятні та близькі результати з вимкненим 2D-прискоренням, коли всю роботу виконував CPU, між двома відеокартами відкривається суттєвий розрив після включення Aero. GeForce GTX 285 працює в 11 разів швидше за ATI Radeon HD 5870. Що ще гірше, інтегрований графічний процесор з материнської платиза $50 дворічної давності на порядок оминає відеокарту за $400.

Отримані нами дані для Radeon HD 4870 показують невелику різницю між активним режимом Aero і простим режимом (без прискорення графіки) під Windows 7, що змушує припустити про відсутність прискорення з відтворення ліній під Windows 7. Дана відеокарта відмовилася помітно повільніше GeForce GTX 28 рішення, проте вона все ж таки обходить Radeon HD 5870 з включеним і вимкненим прискоренням.


Цей тест дає приблизно таку ж картину, що й тест малювання ліній. Відеокарта Radeon HD 5870 знаходиться в кінці, підтверджуючи наше припущення про те, що вона не здатна правильно працювати з 2D-додатками. Це навряд чи можна назвати толерантним навіть для споживчого ринку.

З увімкненим інтерфейсом Aero та активним DWM, відеокарта GeForce GTX 285 дає в дев'ять разів більше високу продуктивність. Так само навіть старе інтегроване ядро ​​чіпсету значно оминає нову відеокарту AMD. До речі, продуктивність Radeon HD 4870 виявилася дуже цікавою: відеокарта здатна апаратно прискорювати виведення кривих, нехай навіть продуктивність знижується в порівнянні з обома рішеннями nVidia.


Оскільки наша Radeon HD 5870 спостерігала явні проблеми з рендерингом ліній (особливо при насичених штрихах), ми бачимо, що половина результатів нашого тесту прямокутників відповідає попереднім знахідкам, і це не дивує.

У будь-якому випадку, дуже цікаво бачити, як продуктивність Radeon HD 5870 подвоюється після включення апаратного прискорення (порівняно з вимкненим прискоренням), нехай навіть продуктивність виявляється трохи гіршою за GPU GeForce 7050.

Тест прямокутників виявився єдиним, де ми виявили помітний ефект увімкнення апаратного прискорення на відеокартах ATI, і де апаратне прискорення гідне своєї назви. Відеокарта Radeon HD 4870 виграла від цього ефекту сильніше, ніж 5870, нехай навіть вона відстала від інших відеокарт у цьому тесті без прискорення.


У разі перемога присуджується старому інтегрованому графічному ядру. Nvidia nForce 610i обходить всі інші дискретні відеокарти з напрочуд великим відривом, причому неважливо, з активним 2D-прискоренням ми їх беремо або з неактивним. Цікаво відзначити, що для обох топових 3D-відеокарт прискорення виведення полігонів не працює взагалі.

Інтегроване графічне ядро ​​з увімкненим Aero працює в 10 разів швидше, ніж Radeon HD 5870. Без прискорення Radeon HD 4870 працює трохи повільніше, ніж 5870. Але після включення Aero продуктивність 4870 більш ніж удвічі перевищує 5870.


Результати схожі на ті, що ми бачили вище. Обидві high-end відеокарти не забезпечують 2D-прискорення, на відміну інтегрованого чіпсету. Відеокарта Radeon HD 5870 стає аутсайдером, а стара Radeon HD 4870 розташовується десь посередині.

Доповнення

Ми отримали схожі результати, коли ми використовували Radeon HD 5750, де згладжені деякі дефекти, що стосуються 5870. Ми також порівнювали драйвери Catalyst 9.11 і 9.12 і виявили помітний приріст продуктивності при переході зі старої версії на нову або незалежно від того, було включено апарат ні. Нашим наступним порівняннямбуде вимір продуктивності Windows 7 і Vista, але ми залишимо його до другої частини статті. Досить сказати, що навіть тут ми виявили багато сюрпризів під час проведення тестів.

Висновок

Якщо судити з нашого аналізу поточної ситуаціїУ нових відеокарт лінійки ATI Radeon HD 5000 спостерігаються проблеми з 2D-графікою. Також нас дуже турбує і те, що старий інтегрований чіпсет виявився швидше у деяких областях (проти обох дискретних відеокарт AMD та nVidia). Крім того, ми не змогли знайти будь-якого прийнятного рішення для роботи з програмами, які використовують векторну графіку. До того ж це стосується не лише нашого тестування; це стосується всіх, хто регулярно працює з 2D-графікою. Чесно кажучи, досить складно уявити, як стара відеокарта Radeon HD 4870 змогла впритул підійти або навіть перемогти нові відеокарти у великій кількості тестів.

Хоча 2D-прискорення (включаючи шари 2,5D) працює добре, AMD поки що не реалізувала деякі базові функції GDI у лінійці відеокарт Radeon HD 5000. Після початкової появи Windows 7 пройшло вже кілька випусків драйверів, тому ситуацію буде складно зрозуміти тим, хто витратив кілька сотень доларів на нову відеокарту, але при цьому отримав "гальма" у 2D-додатках. Ми також змушені нагадати, що все це стосується не тільки нашого синтетичного 2D-тесту, але й різних реальних програм, які ми використовуємо в наших тестах, включаючи AutoCAD, Corel Draw, Adobe Illustrator, Photoshop CS3/CS4, Microsoft Publisher, PowerPoint і так далі. Це вимагає термінового та серйозного доопрацювання драйверів з боку AMD, особливо у зв'язку з тим, що наші результати під Vista демонструють набагато вищу продуктивність, ніж під Windows 7 (у другій частині статті ми якраз про це й поговоримо).

Під час підготовки статті та проведення тестів ми кілька разів телефонували Анталю Танглеру (Antal Tungler), технічному PR-менеджеру AMD, обговорюючи з ним 2D-продуктивність лінійки Radeon HD 5000 під Windows 7. Коли ми довели собі, що ці проблеми продуктивності пов'язані безпосередньо з проблемами GDI, які зазнає майже будь-яка програма, що працює з вікнами на робочому столі, подібна ситуація вже не видалася нам терпимою, особливо для домашніх та офісних користувачів. Тим більше, що інтегрований графічний GPU у конкурента справлявся з 2D-графікою більш ефективно.

Ми можемо тільки припускати (і сподіватися), що причина та можливе рішення криються у драйверах Catalyst. Якщо так, що AMD зможе виправити проблеми досить легко. Враховуючи недавній вихід недорогих відеокартМожна припустити, що проблеми стосуються всієї лінійки. Але що нас турбує більше, враховуючи результати тестів – прямокутники одержують помітне прискорення, а всі інші графічні примітиви (особливо лінії та криві) – ні. Ми спостерігаємо серйозне падіння продуктивності при активації апаратного прискорення GPU – а це говорить про те, що нічого хорошого тут не відбувається. Дискретна відеокарта nVidiaтакож відстає при рендерингу еліпсів та полігонів, і нам дуже цікаво дізнатися, чому це відбувається.

Поки що ми рекомендуємо користувачам відеокарт лінійки Radeon HD 5000 відключати інтерфейс Aero під час роботи з програмами, що інтенсивно використовують 2D-графіку. У такому разі приріст продуктивності може становити до 300%, що легко компенсує відсутність гарних та прозорих віконних рамок. Крім того, ви можете відключити Aero тільки для програм, що запускаються, щоб не відмовлятися від інтерфейсу Aero взагалі.

Натисніть правою клавішею на іконку програми, потім виберіть "Властивості/Properties" з меню. Виберіть закладку "Сумісність/Compatibility" у вікні властивостей, після чого позначте галочкою пункт "Вимкнути композицію робочого столу".


Під час вибору пункту "Вимкнути композицію робочого столу" підтримка DWM деактивується.

У другій частині ми знову протестуємо можливості відеокарт AMD і порівняємо їх із прямими і непрямими конкурентами від nVidia. Тим часом ми поспілкуємося з представниками AMD та nVidia та обговоримо результати нашого початкового тесту. Нам дуже цікаво дізнатися, що вони дадуть відповідь.

Після інтенсивного обговорення цієї теми з нашими колегами ми вирішили, що проведемо глибші тести на різному залізі під XP, Vista і Windows 7. Нашою метою буде знайти глибше розуміння графічних можливостей 2D всіх цих операційних систем. Ми плануємо подивитись на старі відеокарти S3, Voodoo, численні старі моделі GeForce та повну лінійку відеокарт AMD/ATI. Загалом ми хочемо нічого не залишити осторонь, включивши в тести навіть інтегровані графічні ядра з нашого великого набору материнських плат.

Ми вже знаємо, що під час цього процесу ми виявимо кілька цікавих моментів, а також ряд розчарувань. У другій частині статті ми наведемо більш точний опис тестів, рейтингів тестових результатів, а також дамо можливість завантажити Tom2D Benchmark самостійно. Ми впевнені, що ви знайдете цей матеріал дуже цікавим, особливо коли ми виявимо, які відеокарти споживчого рівня дадуть вищу графічну продуктивність 2D під конкретні версії Windows. На вас чекають сюрпризи, так що залишайтеся з нами!

Оновлення. Поглянувши на попередні результати 2D-продуктивності, представники AMD висунули такі припущення.

  • Фахівці Tom's Hardware для вимірювання взяли область (2D-лінії тощо), яка ще не була оптимізована.
  • До цього нового тесту ми не спостерігали будь-яких інших додатків, які б упиралися у "вузьке місце" таким же чином, тому й не фокусували на цьому увагу раніше.
  • Наш початковий аналіз показує, що у цій сфері немає апаратних обмежень.
  • Ми попросимо нашу команду розробників драйверів оптимізувати їх і під цю область, і постараємося уявити новий драйвер для вирішення проблеми якнайшвидше.
  • Ми вже знайшли простий спосіб серйозно збільшити нашу продуктивність і ми спробуємо реалізувати його в майбутніх версіях драйвера Catalyst (нам потрібно написати код, валідувати його, переконатися, що він не зіпсує нічого іншого тощо).

Доброго ранку, Хабре!

Виявив на xda-developers.com цікаву для себе новину, яка є переказом свіжого посту «Руйнуємо міфи про повне апаратне прискорення в ICS» з Google+ профілю розробника Google Діани Hackborn. Взяв він сміливість зробити короткий переклад-переказ за мотивами цих двох публікацій, який і наводжу нижче під хабракатом. Перший варіант цієї публікації вже був опублікований мною цієї ночі в блозі R2-D2: Android з користю , але тема здалася мені гідною освітлення і на Хабрахабрі (я сподіваюся тут не потрібно піднімати повторно обговорення того факту, що розділ «Посилання» після осіннього брабра оновлення практично та фактично помер).

Розробник із Google Діана Hackborn на своїй сторінці в Google+ поділилася інформацією щодо апаратного прискорення інтерфейсу в Android 4.0 Ice Cream Sandwich. Ажіотаж, який піднявся навколо цієї функції, виник не просто так - занадто багато докорів звучало на адресу плавності малювання 2D-елементів в Android у порівнянні з іншими мобільними ОС.

Безумовно, апаратне прискорення в Android це позитивна річ, але є багато неправильних уявлень про те, що насправді являє собою цю можливість. По-перше, Android вже багато років підтримує апаратне прискорення для завдань малювання безлічі вікон (йдеться про композицію вікон - панель завдань, оповіщення, панель меню, поява та приховування елементів інтерфейсу). Це означає, що вся анімація елементів інтерфейсу в Android завжди використовувала апаратне прискорення.

На відміну від зображення композиції вікон, рендеринг зображення всередині вікна традиційно здійснювався за допомогою процесора в Android 2.X і нижче. Однак, в Android 3.0 Honeycomb, ці функції можуть бути перекладені на графічний прискорювач, але тільки в тому випадку, якщо в маніфесті програми це прямо вказано опцією android:hardwareAccelerated=”true”. Єдине відмінність Android 4.0 ICS у тому, що при розробці, використовуючи останнє доступне API level 14 (і у всіх майбутніх), ця опція для програм включена за замовчуванням.
Здавалося б, тепер у нас є можливість «змусити» працювати усі додатки в Android 4.0 ICS з увімкненим апаратним прискоренням незалежно від його маніфесту, хіба це не чудово? Насправді, це не зовсім так. У випадку, наприклад, з відеоприскорювачем PowerVR драйвера, що використовуються в Nexus S і навіть Galaxy Nexus, «від'їдають» по 8Мб оперативної пам'ятіза кожний процес, який використовує апаратне прискорення. Начебто не так багато? Не тут було, адже таке активне споживання оперативної пам'яті відразу безліччю процесів значно підвищує споживання пам'яті в цілому, що відразу позначається на швидкості мультизадачності - аж до значного її уповільнення. В результаті, команда розробників Google зараз витрачає значні зусилля на тонке налаштування того, які саме частини інтерфейсу користувача потребують апаратного прискорення на Nexus S.

Що ж у результаті? У порівнянні з Android 2.X, Ice Cream Sandwich має більше можливостей, у тому числі завдяки ширшому використанню апаратного прискорення. Проте, крім наявності опції включеного прискорення «за умовчанням», використання апаратного прискорення в ICS нітрохи не «повне», ніж раніше. І, крім усього іншого, не варто забувати, що апаратне прискорення це не магія і не диво, як вважають багато хто, але його присутність це звичайно плюс, а не мінус.

Наявність потужного "заліза" не завжди означають швидку роботупристрої. У деяких випадках оптимізація залишає бажати кращого та користувач може спробувати самостійно прискорити роботу свого смартфона або планшета. Є кілька методів, які можуть допомогти у здійсненні поставленого завдання. Про ці методи – у нашій статті.

Видаліть усі непотрібні програми

Існують програми, які можуть задіяти зайві ресурси. Якщо ці програми не використовуються, варто видалити їх.

Йдеться, зокрема, про програми, які встановлені на смартфоні при покупці. Деякі з них видалити не можна, вони вбудовані в прошивку, інші, якщо вони вам не потрібні, краще видалити.

Не використовуйте живі шпалери

Живі шпалери, як не дивно, потребують додаткових ресурсів. Звичайно, вони красиво виглядають і радують око, проте якщо вам потрібна швидкість роботи, з ними все ж таки варто попрощатися.

Не використовуйте сторонні лаунчери

Не використовуйте додаткові віджети

Приблизно те саме можна сказати і про віджети, які вдосталь можна розмістити на робочому столі. Постарайтеся залишити тільки ті віджети, без яких ви дійсно не можете обійтися, наприклад, годинник або прогноз погоди. Інші віджети варто прибрати з робочого столу, оскільки вони нехай і небагато, але все ж таки «з'їдають» пам'ять.

Вимкніть непотрібні програми

Є програми, які працюють у фоновому режимі, але потреба у них рідкісна. У даному випадку йдеться про сторонні програми, а не про системні, відключати які не рекомендується, оскільки це може призвести до збою в системі.

Вимкнути програму просто. Зайдіть в налаштування, знайдіть розділ з програмами, виберіть потрібну програму, зайдіть в нього і натисніть «Зупинити».

Вимкніть GPS та геолокацію

Налаштування геолокації дуже важливі, проте їх можна використовувати тільки в той момент, коли це потреба.

Це, до речі, допоможе навіть збільшити автономність пристрою.

Виконайте очищення за допомогою інших програм

Не забувайте видаляти кеш та інші часові дані, які можуть вплинути на швидкість роботи системи. Як правило, це сторонні програмина кшталт Clean Master, які дозволяють видаляти тимчасові файли, але на деяких пристроях вони вже вшиті у прошивку.

Використовуйте прискорення GPU

Зайдіть в меню, знайдіть розділ "Для розробників" або "Параметри розробників".

Якщо ви не спостерігаєте такий розділ, його потрібно включити. Знайдіть розділ "Про телефон", "Про планшет" або "Про пристрій", зайдіть у нього і 7 разів натисніть по пункту "Номер складання" (іноді натискати потрібно трохи більше разів, система скаже вам про це).

У параметрах розробника увімкніть примусову обробку GPU (прискорення апаратного 2D у програмах).

Заодно можна вимкнути анімацію. Знайдіть пункти на кшталт "Масштаб анімації вікна".

Вимкніть анімацію. Тільки будьте обережні під час редагування параметрів, деякі з них можуть призвести до проблем у роботі системи.

Оновіть прошивку

Іноді проблеми з працездатністю пов'язані з самою прошивкою, які вирішуються оновленням цієї прошивки. Тому (і не тільки) так важливо вчасно оновлювати програмне забезпечення свого смартфона або планшета.

У вас є ідеї, відмінні від наших? Будемо раді, якщо ви повідомите нам про них за допомогою коментарів до статті.

Покажу, як прискорити планшет на Android. За замовчуванням планшет налаштований виробником не так на швидкість роботи, але в стабільну роботу, До того ж виробник часто встановлює в планшет багато своїх програм, які мало кому потрібні, але за це виробник отримує гроші з тих чиї програми він вшив у планшет.

1. Відключення системних служб та додатків

Заходимо в налаштування – диспетчер додатків. Проводимо пальцем праворуч наліво, щоб відкрити всі програми.

Перейшовши до всіх програм, ми побачимо список усіх програм, які встановлені на вашому планшеті.

Внизу списку відображаються всі вимкнені програми. Я відключив на своєму планшеті перегляд вулиць, синтезатор мови Google, яндекс кіноафіша, яндекс новини, яндекс пробки, яндекс таксі.

Також я відключив диспетчер додатків, карти, світовий час, мобільний друк, налаштування Google Partner, обмін даними через Wi-Fi Direct.

Вимкнув Play ігри, Play музика, Polaris Office 5, S Voice, Samsung apps, Samsung print Service.

Відключено на моєму планшеті також Google play книги, Google play фільми, Google play пошук, Google+, Hangouts.

Всі ці програми мені не потрібні і я ними не користуватимуся, але якщо вони включені, то вони будуть оновлюватися, займати місце, пропонувати мені свої послуги, візуально мені заважати своїм марним нагромадженням.

Ви також можете відключити у себе на планшеті програми, якими ви не користуєтесь.

Щоб вимкнути програму, натискаємо на неї в списку програм. І тут бачимо кнопку Зупинити, натиснувши яку програму зупинить свою роботу, але не відключиться. При перезавантаженні планшета воно знову розпочне свою роботу.

Не всі системні програмиу планшеті можна вимкнути, деякі можна лише зупинити.

Покажу як вимкнути вбудовану програму на прикладі програми повідомлення.

Наприклад, додаток повідомлення, яке дозволяє надсилати та приймати смс з планшета можна зупинити та вимкнути, якщо ви не надсилаєте та не приймаєте смс зі свого планшета.

Натискаємо зупинити.

Видається сповіщення: Примусово зупинити. Примусове зупинення програми може призвести до помилок. Тобто додаток повідомлення зараз працює. Натискаємо так.

Програма повідомлення зупинена. Тепер відключаємо програму повідомлення. Натискаємо вимкнути.

Виходить попереджувальне питання: Вимкнути вбудовану програму?

Вимкнення вбудованих програм може спричинити помилки інших програм.

Натискаємо так.

Тепер програму повідомлення вимкнено.

У списку програм можна побачити, що його вимкнено.

Якщо вимкнена вбудована програма вам знову знадобиться, то її можна ввімкнути. Відкриваємо вимкнений додаток у списку програм і натискаємо увімкнути.

Вбудована програма повідомлення знову працює.

2. Зупинення працюючих додатків

Заходимо в налаштування – диспетчер додатків. Проводимо пальцем праворуч наліво, щоб відкрити список «виконується», у цьому списку відображені програми, які працюють в даний момент.

Допустимо зупинимо працюючий додаток на планшеті дитячий диктофон (ця програма дозволяє записувати звуки та голос, коли в дитячому режимі вона запущена).

Натискаємо зупинити, щоб зупинити роботу програми, щоб вивантажити програму з оперативної пам'яті (вона займає 2,5 Мб. оперативної пам'яті) і зупинити його фонову роботу, яка також навантажує іноді процесор.

3. Увімкнення параметрів розробника

Заходимо в налаштування – параметри розробника.

Якщо у вас немає пункту параметри розробника, його можна включити.

Щоб увімкнути параметри розробника, заходимо в пункт про пристрій і натискаємо 7 разів на рядок номер складання, після цього у вас повинен з'явитися пункт параметри розробника.

У мене параметри розробника на планшеті вже є, тому коли я натискаю на номер збірки мені пишеться повідомлення: не потрібно, режим розробника вже включений.

4. Вимкнення анімації

Заходимо в налаштування - параметри розробника, знаходимо пункт масштаб анімації вікна та натискаємо на цей пункт.

Тепер натискаємо на анімацію вимкнена, щоб вимкнути анімацію переходу вікна, щоб не навантажувати відеопроцесор та процесор цією процедурою.

Також вимикаємо масштаб анімації переходу, шкала тривалості аніматора.

Також включаємо примусове оброблення GPU, щоб використовувати апаратне прискорення в 2D додатках. Таким чином, відеоприскорювач візьме на себе обробку графіки в 2D додатках і звільнить трохи процесор від цього завдання.

5. Заборонити фонові процеси.

Заходимо в налаштування – параметри розробника. Знаходимо пункт фонових процесів, за замовчуванням стоїть стандартне обмеження.

Натискаємо на пункт фонові процеси, щоб редагувати пункт і змінюємо фонові процеси нанівець фонових процесівЩоб додаток не на екрані і ми ним прямо зараз не користуємося, то воно фоново не працювало і не витрачало заряд і не навантажувало процесор своєю фоновою роботою.

Таким чином буде працювати тільки та програма, яка запущена в даний момент і на екрані і ніщо не буде фоново «з'їдати» ресурси планшета.

Ось відео урок на тему, як прискорити Android.

Я знаю пристойну кількість С++ і тепер я хотів дослідити створення гри. Мені було цікаво, який найкращий підхід буде в плані написання прискореної апаратної гри, яка як і раніше крос-платформна (Windows/OSX/Linux). Це буде гра 2d, але досить інтенсивна, щоб рендеринг CPU, мабуть, не скоротив би її.

Нарешті, я бачив такі бібліотеки, як http://www.sfml-dev.org/, які, можливо, спростили, чи слід мені спуститися цим маршрутом?

Ще раз дякую.

6 відповідей

Це нонсенс хлопці

OpenGL ISкрос-платформний. Немає потреби в Qt або такій. Необхідно адаптувати лише кілька частин: API вікон та API введення, які є єдиними функціями, що залежать від підпрограм, специфічних для ОС.

У вас є кілька можливостей:

Перехресна платформа з апаратним прискоренням 2d C++ app?

Я знаю, що OpenGL, але я не можу знайти будь-яких підручників про те, як використовувати його в крос-платформній манері, всі вони зосереджені на одній платформі.

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);//disable vsync if (SDL_SetVideoMode(scrWidth, scrHeight, 32, SDL_OPENGL) == 0) ), SDL_Quit(); return -1; ) glewInit(); (); SDL_GL_SwapBuffers(); ) SDL_Quit();

Докладніше див. у документації з sdl.

Використання SDL також можливе, але я боюся, що гра може не працювати, якщо я її використовую. Це обов'язково вірно?

Якщо vsync вимкнено, ви можете отримати від кількох сотень до тисячі кадрів за секунду. Точна продуктивність залежить від складності вашого обладнання та складності сцени. У мене було 300 кадрів на секунду для простого 3D-шукача підземель, в якому використовувався "RAW" opengl без відображення списків/об'єктів буфера вершин. Крім того, якщо ви використовуєте механізм із фіксованою частотою кадрів або таймером, ви не отримуватимете більше кадрів за секунду, ніж ви просили.

SDL використовувався для перенесення Unreal 2004 на Linux. Він також використовувався в порту Linux Doom 3/Quake 4. Тому ретельно протестований і добре відомий.

Для мене питання не в тому, чи варто використовувати бібліотеки чи ні. Це бібліотека, яку ви маєте використовувати. Якщо ви хочете написати гру, знайдіть бібліотеки, які будуть вирішувати більшість проблем із переносимістю для вас. Це дозволить вам зосередитись на тому, що важливо найбільше: самій грі. Інші дали більше пропозицій бібліотеки, які я міг би дати вам.

Я думаю, що помилково турбуватися про продуктивність, перш ніж ви навіть почали свій проект. Працюйте над проблемами продуктивності, як-от будь-яка інша проблема, з якою ви стикаєтеся під час розробки. Створіть свою програму, щоб ізолювати бібліотеки на одному рівні, відмінному від решти вашої логіки. За потреби буде простіше перемикати реалізацію. Це навіть дозволить експериментувати із різними реалізаціями.

// separate files class LowLevelGraphicStuff ( // abstract ); class LowLevelGraphicStuff_SFML: public LowLevelGraphicsStuff (// actual SFML implementation); class LowLevelGraphicsStuff_OGL: public LowLevelGraphicsStuff (// actual OpenGL implementation); // main // Run the game with the SFML implementation. gameLoop(new LowLevelGraphicsStuff_SFML()); // Run the game with the OpenGL implementation. gameLoop(new LowLevelGraphicsStuff_OGL());