niedziela, 8 maja 2022

Steam Deck i FreeCAD - przenośna stacja robocza

Steam Deck to przenośny PC, pracujący domyślnie pod kontrolą SteamOS (bazujący na Arch Linux), ale mogący też uruchamiać inne systemy operacyjne.

Wydajny układ graficzny, procesor, 16 GiB szybkiego RAM-u i bardzo zaawansowane netody wejściowe sprawiają, że Steam Deck wydaje się być dobrze przystosowany do uruchamiania aplikacji 3D, w tym programów CAD. Do tego ma on możliwość podłączenia (przez hub, który trzeba dokupić osobno) dodatkowych monitorów, klawiatury, myszy, czy innych urządzeń.

FreeCAD na Steam Decku w trybie gier

 Na początek małe demo:


Steam Deck może pracować w dwóch trybach:

  • trybie gier, widocznym na filmie powyżej. Wtedy działać może tylko jedna aplikacja na raz i dostępna jest zaawansowana konfiguracja urządzeń wejściowych Steam Input.
  • trybie pulpitu, gdzie wyświetlany jest zwykły pulpit KDE, ale sterowanie jest mocno ograniczone - po prostu prawy gładzik działa jako mysz.

Uruchomienie Steam Decka w konfiguracji jak na filmie wymagało:

  1. Pobrania Appimage z programem FreeCAD.
  2. Dodania Appimage jako gry non-steam.
  3. Dostosowanie konfiguracji kontrolera/urządzeń wejściowych.
  4. Dostosowania konfiguracji FreeCAD aby współgrała z konfiguracją kontrolera. Np. ustawiłem w konfiguracji krzyżyk w dół jako klawisz W, a w FreeCAD ten sam klawisz (podwójne naciśnięcie) przypisałem do wywołania menu kołowego z wyborem środowisk.
  5. Oba zestawy konfiguracyjne można znaleźć w tym repozytorium. Konfiguracja kontrolera powinna być też widoczna w samym Steam Decku jako konfiguracja społeczności, tak długo jak plik wykonywalny (Appimage) jest nazwany po prostu "freecad".

Tryb pulpitu

Gdy podczas pracy w trybie gier podłączymy zewnętrzny monitor, to wyjście obrazu się przełączy na niego w ciągu 2-3 sekund. Niestety o ile aplikacja tego nie wymusi, to zastanie zachowana dotychczasowa rozdzielczość (1280x800).

Jeśli monitor zostanie podłączony w trybie pulpitu, to pulpit zostanie rozciągnięty, dostosowując rozdzielczość do monitora (lub monitorów).
 

Ale ja chcę swój ulubiony, profesjonalny pakiet CAD!

Żaden problem. Wystarczy wrzucić Windows na kartę SD i uruchomić z niej Steam Decka. Menu wyboru pojawia się po starcie komputera przez jednoczesne naciśnięcie przycisków zasilania i zmniejszania głośności.
Skonfigurowanie sterowania będzie nieco bardziej skomplikowane, ale wciąż możliwe dzięki trybowi Big Picture.

Wcześniejszy post o Steam Decku, jeszcze w czasie oczekiwania na premierę.

Stojaczek z miejscem na hub, plik STL do druku 3D.

 

Wydajność

35-60 kl./s przy zużyciu 8 W i bardzo skomplikowanym modelu:
 

 

 

Bonus

SteamVR tracking na Steam Decku:

 

niedziela, 22 sierpnia 2021

FreeCAD OpenXR - drugie podejście do wirtualnej rzeczywistości

Po wersji korzystającej z OpenVR przyszedł czas na stworzenie wydania na bardzie niezależnym od twórców oprogramowania i sprzętu OpenXR:

 

Link do wydania.

Dyskusja na głównym forum FreeCAD[EN]

Dyskusja na polskim forum FreeCAD

niedziela, 18 lipca 2021

Valve Steam Deck - szczegółowa analiza PC w formie przenośnej konsoli

Od zapowiedzi Steam Deck minęło kilka dni, ale nowa konsolka Valve zdąrzyła już spolaryzować opinie graczy od "To będzie Nintendo Switch killer!" po "Valve nie umie robić sprzętu, skończy się jak Steam Machines." albo "To nie ma grupy docelowej."

Tutaj chciałbym dokonać chłodniejszej analizy tego czym jest Valve Steam Deck, czyją jest konkurencją i jak przedstawia się na tle konkurencji oraz jak zmieniła się sytuacja sprzętu firmowanego przez Valve w ciągu ostatnich lat. Niezależnie od ostatecznego sukcesu, uważam że Steam Deck jest urządzeniem w pewnym stopniu przełomowym i mogącym znacznie rozszerzyć istniejącą już niszę przenośnych PC.

Dwuminutowa prezentacja:



 Główne cechy Steam Deck

  • Steam Deck to całkowicie normalny PC z procesorem x86-64, na którym można zainstalować dowolne aplikacje i systemy operacyjne znane z stacjonarnych PC. Nie ma też przeciwwskazań do podłączenia dowolnych urządzeń peryferyjnych.
  • Cechą szczególną Steam Deck jest forma, to handheld (przenośna konsolka) o bardzo dobrym stosunku osiągów do ceny, która w chwili pisania tych słów wynosi od 1900 zł za wersję z 64 GB eMMC, przez 2500 zł za 256 GB SSD, po 3100 zł za 512 GB.
  • Urządzenia wejściowe przypominają te z innych handheldów, ale są bardziej rozbudowane: oprócz typowych przycisków, d-pada, gałek analogowych, spustów czy ekranu dotykowego dostępne są też dwa gładziki z odpowiedzą haptyczną. Przypominają one sposobem działania te z Steam Controllera, ale mają mieć o 55% mniejsze opóźnienia. Do dokładnego celowania przyda się wbudowane IMU.
  • Steam Deck dostarczany jest domyślnie z systemem SteamOS 3.0 bazującym na Arch Linux. Interfejsem użytkownika jest Steam Big Picture, który jest dostosowany do ograniczeń małego wyświetlacza. Po podłączeniu do zewnętrznego monitora (jak i na wbudowanym wyświetlaczu) można używać zwykłego desktopu KDE Plasma, który nawet dla przechodzących z Windows powinien wydać się intuicyjny.
  • Gracz dostaje dostęp do całej swojej biblioteki Steam, bez dodatkowych opłat. Sam Steam ma już ponad 120 milionów użtkowników (ponad 60 dziennie).
  • Za kompatybilność z grami stworzonymi dla Windows odpowiada Proton (fork Wine), czyli niezależna od Microsoftu implementacja API Windows. Valve ma zamiar doprowadzić do tego aby w chwili dostarczenia do klientów Steam Deck (grudzień 2021) wszystkie gry z Windows działały na SteamOS.
  • Valve zdaje sobie sprawę, że wiele gier zostało stworzonych z myślą o myszy i klawiaturze. Dlatego wcześniej na potrzeby innych kontrolerów powstało Steam Input pozwalające na tworzenie i zarządzanie profilami "sygnały" z kontrolerów: od Steam Controllera po kontrolery Xboksa i Playstation a teraz i Steam Deck. 
  • Steam Deck wykorzystuje APU, czyli zintegrowany CPU i układ graficzny korzystające z wspólnej pamięci. Jest pierwszym w świecie PC APU łączącym rdzenie Zen 2 i RDNA 2. Dzięki temu pomimo niskiego TDP (4 W - 15 W) jest wystarczająco wydajny by grać w obecne gry AAA.

Nieco dłuższa prezentacja z udziałem programistów Valve:


 

Teoretyczna wydajność

 Specyfikacja Steam Deck podaje:
 
CPU: Zen 2 4 rdzenie/ 8 wątków, 2,4 - 3.5 GHz (do 448 GFLOPS FP32)
GPU: 8 jednostek obliczeniowych RDNA 2, 1,0 - 1,6 GHz (do 1,6 TFLOPS FP32)
16 GB LPDDR5 wbudowanego RAM (5500 MT/, 4 kanały po 32 bity).
Wyświetlacz 1280 x 800 pikseli, 60 Hz.
 
Nintendo Switch, gdy jest zadokowane (zegar GPU 768 MHz) ma 393,2 GFLOPS FP32, niezadokowane (384 Mhz) 193,5 GFLOPS. Źródło.
Gdyby patrzeć na tylko na tę wartość to Steam Deck jest 4 razy wydajniejszy... ale to nie całkiem precyzyjne porównanie bo Switch ma dużo starsze GPU o innej architekturze - Nvidia Maxwell.

Maksymalna wydajność układu graficznego Steam Deck jest porównywalna do tego z Playstation 4 (1,84 TFLOPS), ale tam znów mamy do czynienia z starą architekturą GCN 2. Architektura RDNA jest wyraźnie wydajniejsza od GCN w przeliczeniu na FLOPS, i ta różnica jest tym większa z im nowszą grą mamy do czynienia. Porównanie między GCN i RDNA przeprowadził Eurogamer różnice wyniosły 30 - 60%.

Ten sam Eurogamer dokonał porównania Steam Deck z najbliższą mu konsolą pod względem architektury Xbox Series S. Obie konsole korzystają z rdzeni Zen 2 i RDNA 2. W przypadku CPU sprawa jest prosta: Steam Deck ma o połowę mniej rdzeni, a maksymalne taktowanie jest podobne (2,4 - 3.5 GHz kontra 3,6 GHz). W przypadku GPU teoretyczna wydajność Steam Deck wynosi 25% do 40% Xbox Series S.
Warto zwrócić uwagę, że Steam Deck ma wyświetlacz 1280 x 800 pikseli, czyli musi tylko renderować tylko 49% tego co konsola stacjonarna w rozdzielczości 1920 x 1080 albo 28% z 2560 x 1440. W przeliczeniu na piksel Steam Deck ma więc wydajność podobną do Series S.
Wciągając do porównania Xboksa Series X, najpotężniejszą obecnie konsolę, reklamowaną jako sprzęt do 4K i 120 Hz, rozdzielczość Steam Decka to 12% z 3840 x 2160 a wydajność 8 - 13% wydajności Xboksa Series X (12 TFLOPS).

Pozostaje kwestia przepustowości pamięci. Specyfikacja Valve podaje LPDDR5 osiągające 5500 MT/s o sumarycznej pojemności 16 GiB połączone z APU 4 kanałami po 32 bity. To daje (5500 * 32 * 4 / 8) przepustowość 88 GiB/s.

Nintendo Switch ma ledwie 4 GiB RAM LPDDR4 o transferze 25,6 GiB/s a Xbox Series S 10 GiB GDDR6 podzielone na dwie części: 8 GiB - 224 GiB/s plus 2 GiB - 56 GiB/s.
 

Wydajność rzeczywista - wstępna analiza DF 

Od 18:32 Digital Foundry przestawia analizę wydajność wykonaną przez ręczne liczenie klatek z filmu promocyjnego. Doom Eternal pracował z stałymi 60 kl./s i zaledwie kilkoma zgubionymi klatkami. Baldurs Gate 3 nie pracowało z stałą prędkością wyświetlania, a Jedi: Fallen Order pokazane w 33:57 pracowało pomiędzy 30 a 40 kl./s.
 

Pamięć masowa

Wszystkie Steam Decki mają tę samą płytę główną, ale różnią się typem i pojemnością pamięci masowej. Dla najtańszego (1899 zł) jest to 64 GB eMMC, a dla droższych (2499 zł i 3099 zł) odpowiednio 256 i 512 GB SSD NVMe. Wszystkie wersje mają wbudowane złącze 2230 M.2 co pozwala na wymianę (lub dodanie w najtańszym Decku) dysku SSD. Niestety ukryty jest on pod ekranem elektromagnetycznym i osłoną termiczną przez co próba wymiany skończy się utratą gwarancji.
 
Każdy Steam Deck ma też złącze karty SD i gniazdo USB 3.2 Gen 2 (czyli teoretycznie do 10 Gb/s).
 
Znaczącą różnicą między eMMC a SSD jest wydajność. W pierwszym wypadku można spodziewać się przepustowości do 400 MB/s, w drugim (przy połączeniu przez PCIe 3.0 x4 jak to ma miejsce w Decku) do 3500 MB/s. 
 
Co ciekawe, wszystkie gry na pokazie IGN (film na początku postu) były uruchamiane z karty SD, czyli najwolniejszej opcji. 

Gra jest automatycznie wykrywana po włożeniu karty SD. Granie offline jest możliwe.

Steam Deck na tle pecetowej konkurencji

Nisza handheldów zbudowanych na bazie procesorów x86 stała się już całkiem spora.  Strona Liliputing zestawia je w wygodnej tabeli. Steam Deck góruje nad wszystkimi wydajnością układu graficznego i jest przy tym znacznie tańsze. Najtańszy wśród nich ($925, co w Polsce dałoby pewnie 4400 zł) Aya Neo ma tylko układ graficzny Vega 6, o teoretycznej wydajność 1,1 TFLOPS i starej architekturze... Vega. Grafika w Decku powinna być ok. 1,5 - 2 x wydajniejsza (45% więcej TFLOPS i dwie generacje nowsza architektura). 

Steam i SteamOS

Cechą wyróżniająca Steam Deck na tle przenośnych konsol jest możliwość uruchomienia biblioteki gier Steam, tej samej co na stacjonarnym PC, bez jakichkolwiek dodatkowych kosztów. Postęp gry jest zapisywany w Steam Cloud (uwaga: nie wszystkie gry korzystają z Steam Cloud), czyli można przerwać grę na PC i kontynuować ją na Steam Deck lub odwrotnie. Dodatkowo konsolę można uśpić podczas gry i wrócić do tego samego momentu po wybudzeniu. 
Co oczywiste Steam na Steam Deck ma tę samą funkcjonalność co na PC, czyli możliwe jest np. wgrywanie modów przez Steam Workshop. I co równie oczywiste dla PC (ale nie dla konsol) rozgrywka wieloosobowa jest bezpłatna.

W przeciwieństwie do innych PC w formie przenośnych konsolek Steam Deck domyślnie nie jest dostarczany z Windows a dystrybucją Linuksa SteamOS 3.0.
To odważny krok ze względu na kompatybilność gier. To też konieczny krok by zapewnić graczowi wygodę użytkowania. Powinien mieć on rozrywkę niezakłóconą przez instalacje sterowników, aktualizację systemu czy wyskakujące dymki. Tego wszystkiego da się uniknąć tworząc skrojony na miarę system operacyjny, niezależny od firm trzecich.  

Pozostał problem do rozwiązania: kompatybilność gier z Windows, bo przecież większość tytułów nie została przeniesiona na Linuksa. Steam OS w celu uruchamiania gier z Windows z Protona. Obecnie baza protondb podaje:
18875 zgłoszonych gier, 15315 działających gier. Udział procentowy działających gier ciągle rośnie, ale jest jeden powód dla którego wiele gier wciąć nie działa: oprogramowanie anti-cheat. Valve ogłosiło, że współpracuje z jego twórcami by umożliwić działanie przed rozpoczęciem dostaw Steam Deck. 
 
Ciekawostki: 
  1. Steam Deck korzysta z Waylanda i kompozytora gamescope.
  2. Wyświetlacz nie obsługuje adaptatywnej częstotliwości odświeżania (VRR, Freesync).

Różnica między sytuacją Steam Deck a Steam Machines

Steam Machines było od razu skazane na porażkę:
  • było ich zbyt wiele,
  • projekty były nieprzemyślane, niezależni producenci nie przyłożyli się - sensownie (np. pod względem obiegu powietrza czy wyboru komponentów) wyglądał tylko prototyp od samego Valve,
  • były zbyt drogie,
  • tańsze były zbyt wolne,
  • gier na Linuksa było niewiele,
  • Proton nie istniał,
  • trudno było o grupę docelową, każdy miał już PC,
  • jakość sterowników była znacznie gorsza niż dziś,
  • brakowało dobrego marketingu, a urządzenie nieprzenośne trudno spopularyzować przez samych użytkowników.
Steam Deck nie ma żadnego z tych problemów. Istnieje tylko jeden model, najwydajniejszy w swojej klasie, rozsądnie wyceniony. Oferuje znacznie więcej niż konkurent o zamkniętej architekturze (Nintendo Switch) i jest znacznie tańszy niż pecetowe handheldy (Aya Neo, GPD Win). 

Wygląda, że wysiłek włożony w Linuksa i inne projekty jak Steam Input i Steam Controller czy Steam Big Picture może w końcu przynieść efekty.

"Każdy sprzęt Valve to porażka"

Teraz patrzę na mój Valve Index. Ma 3 wady: cenę, cenę... Nie! Ma 3 wady: cenę, nieklikające gałki analogowe w niektórych pozycjach i jeden skrzypiący spust. I tyle przez 2 lata użytkowania.
Po upływie 2 lat od premiery to wciąż najbardziej dopracowany HMD, z doskonałym śledzeniem, fenomenalnymi kontrolerami, odswieżaniem 144 Hz, bardzo dobrym audio i wsparciem oprogramowania. Do tego na tyle wygodny, ze po 3h w swiecie wirtualnym nie boli ani głowa, ani oczy... a nogi.
Konkurencja potrafiła zrobić zestaw VR lepszy w którejś z kategorii, np. bezprzewodowy lub z wyższą rozdzielczością. Albo tańszy. Ale jako całość uważam, że Index jest wciąż numerem jeden. I pomimo niezmiennie zaporowej ceny jego udział rynkowy wg Steam Stats wciąż powolutku rośnie.
 
"no to Steam Link to była porażka" - Steam Link robił to dokładnie co miał robić. Do czasu powstania aplikacji na Androida, Smart TV czy Raspberry Pi. Wtedy mógł odejść na emeryturę, bo dodatkowy sprzęt do streamingu nie był już potrzebny.
 
"no to Steam Controller" - to okazał się całkiem niezły ale niszowy produkt. Wymagał zmiany przyzwyczajeń i opierał się chyba nieco zbyt mocno na społeczności (profile gier).
 
"no to Steam Machines" - no dobra, to było porażka. Od dnia 1 było wiadomo że to będzie porażka i nawet było wiadomo dlaczego. Ale to też cenna nauka dla Valve. I jej efekty widać podczas premiery Steam Deck. 

Valve zarzeka się, że nie gałki analogowe w Steam Deck nie będą sprawiać problemów z driftem, co się dzieje praktycznie we wszystkick kontrolerach konsol ostatnich generacji na skalę tak dużą, że dochodzi do procesów sądowych. Samo Valve miało też z tym problem w kontrolerach Index i prowadziło ich darmową wymianę w ramach RMA.
 

Wkład Valve w Linuksa i gry na Linuksie

Valve Software wspiera rozwój linuksowgo gamingu na wielu frontach:

  • stworzenie klienta Steam dla Linuksa (oczywiste) i stworzenie linuksowych wersji własnych gier,
  • stworzenie steam-runtime znoszącego konieczność budowania różnych wydań gier dla różnych dystrybucji,
  • stworzenie forka Wine o nazwie Proton umożliwiającego wygodne uruchamianie gier z Windows,
  • rozwój DXVK, czyli translatora Direct3D 9/10/11 na Vulkan z zachowaniem wysokiej wydajności, bliskiej wydajności na Windows, a czasami wyższej (niektóre tytuły na AMD),
  • udział w rozwoju API Vulkan, będącego niskopoziomowym API nowej generacji i wielosystemową konkurencją dla Direct3D 12,
  • rozwój VKD3D-Proton, czyli translatora Direct3D12 na Vulkan,
  • stworzenie kompilatora shaderów ACO dla AMD, który skrócił czasy ładowania i zwiększył wydajność,
  • stworzenie wywołań systemowych futex2, które jeszcze odrobinę zwiększają wydajność przez poprawę synchronizacji wątków, gdy uruchamiana jest gra przez Proton,
  • redystrybucja i kompilacja shaderów przed uruchomieniem gry (w tym projekt Fossilize),
  • przeniesienie SteamVR na Linuksa,
  • rozwój bibliotek SDL jako odpowiednika niektórych elementów DirectX.

Zastosowania użytkowe

Steam Deck to w pełni funkcjonalny, poręczny i całkiem wydajny komputer. Wzięcie na prezentację zamiast notebooka? Wyświetlenie sceny 3D w Blenderze? Albo modelu CAD? Żaden problem. Podłączenie do sterownika samochodu czy motocykla? To x86, więc większość narzędzi będzie działać. Tam gdzie notebook jest zbyt nieporęczny, telefon na Androidzie nie ma odpowiedniego narzędzia, a Raspberry Pi jest zbyt wolne lub trzeba sobie radzić z oprogramowaniem x86, tam jest miejsce dla Steam Deck.

Raytracing? RTX, DXR?

VK3D-Proton (dla tytułów DX12) jak i sam układ graficzny Steam Deck (architekrura RDNA 2) obsługuje raytracing. Zbudowana w tej samej architekturze karta Radeon 6700XT osiaga w Doomie Eternal 120 klatek/s przy rozdzielczości 1920 x 1080 i właczonym raytracingu. Gra zwalnia niemalże dokładnie o połowę. Po przeliczeniu na moc obliczeniową Steam Deck i jego rozdzielczość, w najlepszym wypadku jest szansa na 25 kl./s... 
I tym smutnym akcentem kończę ten post. 
Prawdopodobnie będzie on w przyszłości aktualizowany.