
- •1717 “Проектування систем реального часу” Лабораторна робота №2.
- •1. Загальні відомості про мікроядро Photon.
- •1.2. Простір подій Photon
- •1.3. Регіони
- •1.4. Події
- •1.5. Графічні драйвери
- •1.6. Кольорова модель
- •1.7. Шрифти
- •1.8. Підтримка анімації та друку
- •1.9. Менеджер вікон Photon
- •2. Бібліотека віджетів
- •2.1. Базові віджети
- •Таблиця 2. Статичні графічні об'єкти
- •Таблиця 3. Атрибути статичних графічних об'єктів
- •2.2. Віджети-контейнери
- •2.3. Складні віджети
- •2.5. Створення нових віджетів
- •3. Приклад розробки простого графічного додатку в середовищі PhAb.
- •Таблиця 4. Варіанти до завдання 1.
1.5. Графічні драйвери
Графічні драйвери реалізовані як процеси, які розміщують регіон на передньому плані простору подій. Регіон графічного драйвера є чутливим до подій рисування, які виходять з простору подій. Графічний драйвер отримує події рисування, коли вони пересікають його регіон. Можна представити собі, що цей регіон є покритим "фосфором", який світиться при попаданні "фотонів".
Оскільки API рисування Photon накопичують запити рисування в пакети, які відправляються як одна подія рисування, то кожна подія рисування, яку отримує драйвер, вміщує список графічних примітивів, які підлягають рисуванню. До моменту пересікання подією рисування регіону драйвера, список прямокутників буде вміщувати також "список відсікань", який описує, які саме частини списку рисування повинні відображатися на дисплеї. Робота драйвера полягає в тому, щоб перетворити результуючий список у візуальне зображення на графічному обладнанні.
Одна з переваг використання списку прямокутників всередині події полягає в тому, що кожна подія, яка передається драйверу, представляє собою фактично "пакет" запитів. Із вдосконаленням графічного обладнання все більше й більше такої "пакетної" роботи може передаватися безпосередньо обладнанню. Багато відеоадаптерів вже підтримують апаратно одну область відсікання, а деякі підтримують й декілька областей.
Використання механізму QNX IPC для передачі запитів рисування від додатків до графічного драйвера не є збитковим, оскільки відповідні тести показують, що в цьому випадку продуктивність системи не є гіршою, ніж у випадку, коли додатки виконують прямі виклики драйвера. Однією з причин цього є те, що при використанні подій численні запити рисування групуються, що зменшує кількість повідомлень, які відправляються, у порівнянні з кількістю прямих викликів драйвера.
З того, що графічний драйвер просто розміщує регіон в просторі подій Photon, природно випливає, що одночасно можуть бути завантажені декілька графічних драйверів для декількох відео адаптерів; при цьому кожен драйвер буде мати свій, чутливий до подій рисування, регіон.
Ці регіони можуть бути розташовані поруч або перекривати один одного довільним чином. Оскільки Photon успадковує від QNX мережеву прозорість, то додатки або драйвери Photon можуть виконуватися на довільному вузлі мережі, дозволяючи, таким чином, додатковим графічним драйверам розширювати графічний простір Photon за рахунок фізичних дисплеїв інших комп'ютерів мережі. За рахунок перекриття регіонів графічних драйверів, події рисування можуть дублюватися на декількох екранах.
Завдяки зазначеним властивостям Photon можливими є такі ситуації. Наприклад, на заводі оператор з портативним комп'ютером, який має бездротове підключення до мережі, може підійти до робочої станції й "перенести" панель керування з її монітора на екран портативного комп'ютера, а потім перейти в цех і виконати керування. В інших додатках вбудована система без графічного інтерфейсу користувача може проецирувати дисплей на довільний із вузлів мережі. Крім того, стає можливим колективний режим роботи - декілька операторів, які знаходяться за своїми комп'ютерами, можуть одночасно бачити одні й ті ж вікна та працювати з одним й тим самим додатком. З точки зору додатку, це виглядає як один єдиний графічний простір. З точки зору користувача, це виглядає як група поєднаних комп'ютерів, де можна перетаскувати вікна з одного фізичного екрану на інший.