poniedziałek, 28 kwietnia 2014

Ekrany o różnej gęstości w Windows 8.1

Przez lata pracowaliśmy na ekranach o ograniczonej liczbie pikseli. Dobrze pamiętam moje domowe Windows 3.1 pracujące w 640x480, Windows 95 w 800x600, Windows 98 w 1024x768, Windows 2000 w 1280x1024, Vista w 1600x900 aż po Windows 7 w 1920x1080. Wraz z rozdzielczością rosły rozmiary ekranów utrzymując w miarę stałą gęstość pikseli przed naszymi oczyma. Twórcy oprogramowania mogli więc śmiało zwymiarować wszystko w pikselach, przygotować bitmapy i zakodować reguły wyświetlania. Czasy się zmieniły i windowsy muszą sobie radzić na tabletach 8", na różnych urządzeniach pośrednich i koszmarnych ekranach 1366x768 o rozmiarze 15.6". Koniecznie rzućcie okiem na zestawienie standardowych rozdzielczości i ekranów tutaj. Aby elementy aplikacji pozostały czytelne na ekranach o różnych gęstościach konieczne jest skalowanie. Choć było ono dostępne w Windows od lat, to zawsze przysparzało problemów aplikacjom spoza stajni Microsoft.

Dzisiaj, gdy możemy już zakupić laptop o rozdzielczości nawet 3200x1800 na 14", co daje gęstość 260 pikseli na cal (ppi) i podłączyć do tradycyjnego monitora o gęstości 96ppi pojawia się problem zmiany skalowania w locie przy przejściu obiektu między wyświetlaczami. Chciałbym Wam przybliżyć to zagadnienie w oparciu o materiał nadesłany przez Konrada (dziękuję i pozdrawiam!).

Najpierw jednak namawiam Was na zapoznanie się z tym artykułem, który fantastycznie rozprawia się z tym zagadnieniem od strony technicznej.

Teraz spójrzmy na to z punktu widzenia użytkownika  - używa on do pracy dwa ekrany:
  • 3200x1800, 14", laptop Fujitsu U904, Sharp IGZO, 262 PPI, główny monitor
  • 1920x1080, 24", zewnętrzny monitor podłączony po HDMI, 92 PPI
System operacyjny Windows 8.1 dobrał rozmiar obiektów ekranu automatycznie dla każdego monitora: dla monitora 14" przypisał skalowanie ~250% (duża gęstość, mały ekran), dla większego standardowe ~100%, czyli brak skalowania (mała gęstość, duży ekran). Podana skala jest według oceny "na oko".

Przejdźmy jednak do przemieszania obiektów pomiędzy wyświetlaczami - po przesunięciu aplikacji/okna na monitor o innym PPI obserwujemy dwie możliwe reakcje:
  1. Zwiększenie lub zmniejszenie rozdzielczości okna tak, by w przybliżeniu miało podobny prawdziwy rozmiar widziany przez użytkownika. Tak działa na szczęście 99% aplikacji.
  2. Brak reakcji, okno pozostaje w takiej samej rozdzielczości. Tak działa np. Task Manager. Gdy głównym monitorem jest ekran 262 PPI i przejdę na 92 PPI, to okno Task Manager na tym pierwszym wygląda dobrze, a na tym drugim jest ogromne.
Kolejne kroki na tych zdjęciach podczas przenoszenia okna z ekranu 262PPI na 92 PPI, bardzo ciekawe zjawisko.
okno na gęstym ekranie
okno na obu ekranach wciąż w skali 2,5x
okno na obu ekranach już w skali 1x
okno na docelowym ekranie w skali 1x 

Opcja ta jest wybawieniem przy tak skrajnie różnej wartości PPI monitorów. Działa dobrze, choć autorzy algorytmu skalowania powinni jeszcze nieco popracować nad dokładnością i jakością obrazu po zmianie rozdzielczości. Na głównym ekranie wszystko zawsze wygląda idealnie, a na tym drugim jest różnie, przy powiększaniu lub zmniejszaniu obraz wydaje się tracić ostrość i dokładność.

Oto wersja filmowa przeskalowania okna:

Konrad zaobserwował dwie grupy rezultatów skalowania okien/aplikacji i czcionek ekranowych podczas pracy na głównym monitorze 262PPI z powiększeniem 250%:

A. Czcionki, ikony, okna, które przy 250% się powiększają, ale nie zwiększają gęstości bazowej obiektów
Przykłady aplikacji typu A: Konsola administracyjna Hyper-V, konsola VMware vSphere Client

B. Czcionki, ikony, okna, które przy 250% się powiększają i jednocześnie wzrasta gęstość bazowa (obiekt jest o wiele dokładniejszy, krawędzie gładkie)
Przykłady aplikacji typu B: MS Word, systemowy Explorator Plików, niemal wszystkie okna systemowe.

Aplikacje Modern/Metro UI zawsze wygląda idealnie,bo bazują na wektorach i interfejs był od początku napisany pod gęste ekrany z możliwością szybkiej zmiany gęstości i rozdzielczości obrazu.

Okna aplikacji typu A wyglądają przyzwoicie, ale nie idealnie na ekranie 14" 3200x1800 250%, tutaj gęstość bazowa obiektów nie zgadza się z PPI ekranu. Na ekranie 24" FullHD 100% wglądają za to idealnie, bo gęstość bazowa jest zgodna z PPI ekranu.

Oto przykład dla konsoli HyperV
Okno na ekranie 262PPI (zrzut z ekranu), obraz mało dokładny, po powiększeniu rozdzielczość czcionek i ikon nie zwiększyła się.
Teraz zdjęcie tego samego fragmentu obiektywem Macro, widać zmarnowane piksele, które mogły by uczynić tekst dokładniejszym.
Za to na ekranie 92 PPI jest dobrze, poniżej zrzut
 i zdjęcie makro:


Przykład MS Word na ekranie 262PPI (zrzut), aplikacja wygląda pięknie, wszystkie piksele są wykorzystane
 i zdjęcie makro

Po przeniesieniu aplikacji na monitor 92 PPI jakość okna zdecydowanie spada, czcionki są rozmyte, nie trafiają w piksele. 
Szczególnie zdjęcie obiektywem makro wygląda okropnie:

Okna aplikacji typu B wyglądają idealnie na ekranie 14" 3200x1800 ze skalowaniem 250%. Gęstość bazowa obiektów została przeskalowana (piksele zwielokrotnione), zrównane z PPI ekranu i wszystkie krawędzie są idealnie gładkie. Na ekranie 24" FullHD 100% wglądają za to przeciętnie. 
Przy przenoszeniu tych aplikacji pomiędzy ekranami prawdopodobnie zachodzą następujące operacje: gęstość bazowa ustawiana jest dla gęstego ekranu, a skalowanie na 250%. Kolejno obraz jest zmniejszany 2,5-krotnie do 100% i wyświetlany na ekranie o niskim PPI. Niestety w tym przypadku 24" ekran nie ma dokładnie 2,5x mniejszej gęstości, a jedynie ~1,6x. Zatem wiele punktów wygenerowanego obrazu nie trafi w piksele monitora o niskim PPI i zostanie przybliżona, przez co obiekty już nie będą tak ostre.Trudno powiedzieć jaka kombinacja wyświetlaczy pozwoliłaby na idealne "trafienie" punktami w piksele.

Sprawa wygląda nieco gorzej jeżeli głównym ekranem jest duży monitor o mały PPI, czyli w tym przypadku 24" i  92 PPI. Okna są generowane dla powiększenia 100% i monitora 92 PPI. Po przeniesieniu na 262PPI 14" każde okno ma rozmyte obiekty, a dodatkowe piksele gęstej matrycy nie są wykorzystywane. Co gorsze ikony pulpitu są wyświetlane w 100%, czyli są bardzo malutkie.

Jak widzicie problem jest realny i Microsoft włożył sporo pracy w ich rozwiązanie. Inżynierowie jabłuszka obrali inną drogę niż Apple (więcej tutaj) i postanowili używać stałej rozdzielczości wewnętrznej MacOS i stałych współczynników skalowania do matryc. Środowisko Windows jest bardzo różnorodne, więc potrzebne było bardziej uniwersalne podejście. Sądząc z obserwacji Konrada Windows 8.1 Update 1 pozwala na względnie wygodną eksploatację kilku ekranów o różnej gęstości. Rozwiązanie jest pełne kompromisów, ale jest używalne.
Warto podkreślić, że starsze wersje Windowsów miały bardzo ograniczone możliwości w tym zakresie.

Jeśli planujecie zakup gęstego monitora (np. UltraHD) lub laptopa z gęstą matrycą (np. IGZO), to miejcie na uwadze problematykę skalowania aplikacji.

piątek, 18 kwietnia 2014

Pamięć urządzeń mobilnych

Dzisiaj tutaj wyczytałem, że Toshiba wprowadzi na rynek karty pamięci zgodnie ze specyfikacją Secure Digital 4.0 o indeksie prędkości UHS-II (156 lub 312MB/s).

Zastanawiałem się, czy czytnik kart zintegrowany w moim telefonie ZOPO C2 byłby w stanie to wykorzystać. Z porównania znalezionego tutaj wnioskuję, że układ MT6589 obsługuje tylko SD 2.0, czyli prędkości kart do Class 10 (25MB/s magistrala i zapis 10MB/s na kartę). Jak widzicie nawet z kart UHS-I nie skorzystałbym w pełni.
Pomiar Androbench to potwierdza:
[UPDATE 2014-04-24]
Z ciekawości zakupiłem kosztem ~30€ kartę SanDisk SDHC Extreme UHS-I 32GB, reklamowaną jakoby z odczytem nawet do 45MB/s.
Oto wynik po wymianie:
Jak widzicie w odczycie sekwencyjnym ogranicza mnie czytnik w telefonie, ale zapis i parametry operacji losowych dramatycznie się poprawiły. Dobrze wiedzieć, że da się coś z tym zrobić.
[/UPDATE]

Rzuciłem też okiem na interfejs pamięci wewnętrznej - eMMC. Tutaj też zgaduję, że MT6589 obsługuje zaledwie eMMC 4.41, czyli do 104MB/s.
źródło: http://www.storagenewsletter.com/

Kolejny test Androbench potwierdza te smutne przypuszczenia:

Dla zbudowania kontekstu zerknijcie na wyniki z porównania SAMSUNG Galaxy S4 z czołówką w tym samym teście:
źródło: http://www.notebookcheck.net/

Odnosząc te wyniki do nawet najtańszych dysków SSD nietrudno zrozumieć, dlaczego niektóre operacje trwają zbyt długo na smartphone'ach. Na tym polu jest jeszcze wiele do zrobienia na rynku. Niestety ani producenci, ani sprzedawcy nie spieszą się z prezentacją wydajności pamięci masowej ani obsługiwanych specyfikacji interfejsów. Pozostaje nam tylko testować pamięć telefonu przed zakupem...

W artykule tutaj znajdziecie specyfikację nadchodzących SoC Qualcomm Snapdragon, które będą zgodne z eMMC 5.0 (czyli do 400MB/s) i - mam nadzieję - z Secure Digital 4.0. W połączeniu z pamięciami iNAND od SanDisk może o stanowić przełom w wydajności mobilnej.




czwartek, 17 kwietnia 2014

Rozpoznawanie liści

Byłem dziś na spacerze w pobliskim ośrodku sportowym i po raz kolejny ubolewałem nad zapomnianym już dawno kluczem, jakiego uczono mnie w podstawówce, aby móc rozpoznawać rośliny po ich liściach, kształcie korony czy korze.
Pomyślałem sobie, że powinna istnieć aplikacja, która służy rozpoznaniem kształtu liścia i odsyła do odpowiedniego artykułu Wikipedii. Co prawda nie znalazłem nic takiego w Google Play Store, ale była taka aplikacja pod iOS - leafsnap.
Szkoda, bo chętnie bym skorzystał...

niedziela, 13 kwietnia 2014

Koncentrat

Uff... ostatnie tygodnie mnie przytłoczyły, ale już nadrabiam:
  • Windows 8.1 update zadomowił się już na naszym laptopie i desktopie przynosząc falę drobnych udogodnień dla "niemacanych" ekranów. Miło mi też donieść, że IE11 po tej aktualizacji jest diabelnie szybki. Bez porównania szybszy od bieżącego Chrome na stronach, które czytuję.
      
     
  • Microsoft ogłosił Direct3D XII, które wydaje się być odpowiedzią na AMD Mantle. Wszystko fajnie, ale produkt nie istnieje i najwcześniej za rok będzie dostępna we wstępnej formie. Takie tam marketingowe zagranie...
  • nVidia wprowadziła do sprzedaży kartę graficzną kolejnej generacji - GeForce GTX 750 / Ti, czyli GM107 z rodziny Maxwell. Z uwagi na opóźnienia nadchodzących procesów produkcyjnych jest ona wykonana nadal w litografii 28nm. Nie mamy więc rewolucyjnych zmian w wydajności czy zużyciu energii z tego tytułu. Układ obliczeniowy jest jednak zoptymalizowany pod kątem poboru energii i wykonany inaczej niż jej poprzednicy (taka ewolucja). Niestety brak jej sprzętowego dekodowania / kodowania H.265 / HEVC, które wkrótce zagości na naszych ekranach.
  • Ubiegły miesiąc obrodził w premiery SoC opartych na architekturze ARM-8A. Najczęściej były to domyślne konfiguracje Cortex-A53, które zapowiadają się fantastycznie. Dla przykładu Qualcomm zaserwuje nam Snapdragon 610 (4c) i Snapdragon 615 (8c). Mediatek już zapowiedział MT6732 (4c) i MT6752(8c), które mają znaleźć się w sprzedawanych telefonach już na jesieni tego roku./
  • W temacie architektury ARM-7a: Pojawiają się już doniesienia na temat pierwszych prototypów aparatów opartych na MediaTek MT6595 (4c A17 + 4c A7, LTE), więc powinny być do kupienia w trakcie wakacji letnich tego roku. Moją uwagę przykuł jednak MT6591 (2c A17 + 4c A7). Jeśli również obsłuży LTE, to może być najlepszym rozwiązaniem. Niestety obsłuży tylko HSPA+.
Więcej szczegółów znajdziecie na roadmapie poniżej:

źródło: gsmarena.com
  • RockChip sprzedaje już RK3288 oparte o 4c Cortex-A17 - strzeżcie się tablety i pudełka telewizyjne ;-)
  • Polecam Wam artykuł na temat projektu Google Ara tutaj.
  • Powinniście też zobaczyć materiał wideo przedstawiający Google Tango tutaj. Odlot!
  • Pamiętacie odpowiedź AMD na G-Sync od nVidia? Otóż AMD FreeSync może trafić do specyfikacji DisplayPort 1.2a jako opcja. Jeśli producenci monitorów zdecydują się to implementować, to może to być najlepszy sposób taniej proliferacji zmiennej częstotliwości odświeżania matryc wyświetlaczy.
  • Amazon wprowadził do sprzedaży własne pudełko do telewizora - Amazon FireTV. Ku memu zdziwieniu dołączony gamepad i dostosowane przez Amazon gry sprawiają, że użytkownicy pakietu Prime mogą cieszyć się fajnym centrum rozrywki.
  • Warto rzucić okiem na demo techniczne Watch Dogs na PC (sponsorowane przez nVidia) - robi wrażenie: