19/12/22 21:02:55.28 TOHmtqVb.net
カーネルがGUIか?ってのは置いとくとしても
WindowsのLinuxサブシステムでUbuntu動いたりするわけだからまったく無理というわけでもない
66:login:Penguin
19/12/22 21:37:42.88 o/YB9Rkd.net
>>60
compizやDWMの仕事はレンダリング済みのウインドウを最終的に板ポリゴンとして画面に描画することに過ぎず、
そんな簡単な処理がハードウェアアクセラレーションを完全に活用できるのはcompizだろうがDWMだろうが当たり前だ
GDIのハードウェアアクセラレーション云々はその前のウインドウ内のレンダリングの話であり、レイヤが違う
Linuxではウインドウ内のレンダリングは各アプリケーションに任されており、そもそも最初からソフトウェアレンダリングしているものが多い
62も言ってるけど、compiz以前に元々遅いんだよLinuxのGUIアプリは
67:login:Penguin
19/12/22 21:37:59.04 o/YB9Rkd.net
>>60
compizやDWMの仕事はレンダリング済みのウインドウを最終的に板ポリゴンとして画面に描画することに過ぎず、
そんな簡単な処理がハードウェアアクセラレーションを完全に活用できるのはcompizだろうがDWMだろうが当たり前だ
GDIのハードウェアアクセラレーション云々はその前のウインドウ内のレンダリングの話であり、レイヤが違う
Linuxではウインドウ内のレンダリングは各アプリケーションに任されており、そもそも最初からソフトウェアレンダリングしているものが多い
62も言ってるけど、compiz以前に元々遅いんだよLinuxのGUIアプリは
68:BeOS最強伝説
19/12/22 22:16:44.21 r16puUTY.net
>>66が正確に書いているけど
>compiz以前に元々遅いんだよLinuxのGUIアプリは
結局はこれに尽きる。
考え方が古いフレームワークが基盤にあるWindowシステムだと
うわ物がどんなに良くてもだめってことを示してる。
ただもうこの辺りは何十年も進歩してないから割り切っているんだと思う。
69:login:Penguin
19/12/22 22:29:43.83 v6c47t1r.net
Direct2DがGDIやGDI+より高速なのは事実だよ
だけどGDIが主流の時代のアルゴリズムは
画面に表示されてない部分は描画を省くという
手法でその遅さをカバーしていた
今は表示されてない部分を含めてすべて描画してるので遅くなってる。
だから描画速度はDirect2Dの方が高速だけど
(そもそも描画してないから)昔のOSの方が軽く感じる。
そして今のOSでは(常に描画するので)GDIが速くなることはない。
70:login:Penguin
19/12/22 22:59:32.63 0xo2ZMbI.net
GDIはアルゴリズムイントロダクションで紹介されてるような技法で構成されてる。
実数を扱えないのでどうしようかってところから編み出された古典であり基本なんですよ。
GDI+はエクスプレッションというお絵かきソフトを買い取って作ったもの。
エクスプレッション自体は大変出来の良いソフトで、たしか二人の数学者が作ってたと思います。
僕も買いました。
愛用してたわけじゃないですが。
71:login:Penguin
19/12/22 23:12:35.41 0xo2ZMbI.net
GDIは一部の機能をハードウェアに任せることができたのも大きかったですね。
グラフィックアクセラレータというやつです。
DOSの時代には転送速度の速いET4000系列のグラフィックカードがもてはやされましたが、Windowsの時代になるとアクセラレータを搭載するS3系列に主役が変わったと思います。
72:login:Penguin
19/12/23 11:47:13.28 l8JnRNko.net
>>66
LinuxのXアプリが使うXlib(GDIに相当)もXRender(GDI+やDirect2Dに相当)もちゃんと
ハードウェアアクセラレーションが掛かるよ
Nvidiaは知らないが、IntelとAMDのグラフィックボードの場合、X Serverは以前は
XAAというグラフィックボードの2Dアクセラレーションを活用する形で、現在は
GlamorというOpenGLを使ってグラフィックボードの3Dのアクセラレーションを
活用してXlibやXRenderをハードウェアアクセラレーションしている
ちなみにFirefoxはLinuxでもWindowsでもgtk+が使うCairoというレンダリング
ライブラリを使っていて、LinuxではXRender、WindowsではDirect2Dを使うので
ちゃんとハードウェアアクセラレーションされているし、ChromeもSkia経由で
同様にアクセラレーションされる
Vista以降のWindowsでは残念ながら今も多くのアプリが使うGDIのアクセラ
レーションが不十分なのでLinuxよりWindowsのDWMの方が劣っている
73:login:Penguin
19/12/23 12:05:50.02 l8JnRNko.net
>>69
> 画面に表示されてない部分は描画を省くという
これは今でも一緒だよ
WindowsでもXでも再描画が必要な部分がどこかWM_PAINTメッセージやExposeイベントで
送られてくるので、必要な範囲だけ再描画する
実際はコントロールやウィジット単位で再描画する実装になっているけどね
> 今は表示されてない部分を含めてすべて描画してるので遅くなってる。
いいえ
DWMやcompizのようなWindowの内容を保存するbacking storeを利用するシステムでは
ウィンドウの移動やウィンドウの順番変更のときはWM_PAINTやExposeが飛ばない
ちゃんと最適化されている
ちなみにDWMでGDIに問題が生じたのと違ってcompizでXlibの描画に問題が生じないのは
X Window Systemは20年以上前からbacking storeを利用したウィンドウ管理ができるように
なっていたから
URLリンク(xjman.dsl.gr.jp)
74:login:Penguin
19/12/23 12:41:33.06 ySsXS/YG.net
>>72
やり直し
ドキュメントを見る限り、cairoのxlibによるハードウェアアクセラレーションはビットマップのコンポジションが中心であり、
CPUレンダリングを完全に排除できるものではないように見える。実際のソースコードを参照し、主要なAPIがラスタリングにCPUを用いていないことを確認せよ。
また、Linuxのcairoを利用しているアプリの多くがxlibバックエンドを使っているかどうかは自明ではない。調査せよ。
75:login:Penguin
19/12/23 14:46:34.02 l8JnRNko.net
>>74
ちゃんとソースコードみてね
現在はXlibではなくXRenderでの描画なので見るコードはcairo-xlib-render-compositor.c
76:login:Penguin
19/12/23 15:01:01.25 l8JnRNko.net
ちなみにXRender,fontconfig, Xft, carioこれらはすべてKeith Packardが作ったもの
同じ人物が作ったので効率的に動くように作られている
Keith PackardはXorgのX Serverの主要な開発者でもある
それとVistaが変なのはWin32APIを捨てて.netメインにする設計思想だったLonghornの
開発に失敗して成果の一部だけ取り込んだためだからこの辺の事情は考慮すべき
77:login:Penguin
19/12/23 15:25:53.87 HVMvZb4c.net
URLリンク(nyaruru.)はてなブログ.com/entry/20090208/p1
矩形描画系はWDDM1.1でハードウェアアクセラレーションが効く
線分や円については現在のGPUの描画の仕組みではCPUで描画した物と
寸分違わず全く同じ見た目にするのは無理だろう
78:login:Penguin
19/12/23 16:33:56.45 7uXoPuqJ.net
>>73
Vista以降はウインドウが最小化されていても
他のウインドウに隠れいても
WM_PAINTが飛んでくるんだよ
ウィンドウの移動やウィンドウの順番変更のときって
表示されてるかどうかと何の関係もないだろ
79:login:Penguin
19/12/23 16:40:20.08 OVfiG/dD.net
バッキングストアは卓上の端末と電算室のコンピュータが遅い回線でつながれていた時代の名残ですよ。
とても素晴らしいものってわけではないです。
80:login:Penguin
19/12/23 16:44:19.85 KEa7nQLo.net
同じハードウェア上で同じ仕組みを使って動いているのに、
compiz(Linux)だけ旧来のGDIアクセラレータが動いていると思っている事が間違いじゃね。
そもそもの話、今時のGPUにGDIのアクセラレータなんぞが乗っているのだろうか?
81:login:Penguin
19/12/23 16:58:41.22 OVfiG/dD.net
そもそもパソコンのハードウェアはWindows用に設計されてるので、Windowsで効率が良いのは当然なんですよ。
82:login:Penguin
19/12/23 17:50:29.36 OVfiG/dD.net
動画は超解像度がよく効くよね。
83:login:Penguin
19/12/23 19:32:26.64 l8JnRNko.net
>>78
何を言いたいのかわからないのでVistaの描画システムの解説ページを貼るね
URLリンク(www.atmarkit.co.jp)
従来のウィンドウ・システム
ウィンドウが動いたり、上下関係が変わるたびにリペイント・イベントが発生することになる。だが、たくさんの
アプリケーションで少ないメモリ(画面1枚分のメモリ)を共有するためにはしょうがないだろう。
Vistaのウィンドウ・システム
先ほど述べたように、ウィンドウの移動などに伴うリペイントが発生しないので、無駄なCPU時間の消費が抑えられる。
アプリケーションは自分自身のバッファ内にさえ描画しておけば、あとはすべてDWMが処理してくれる。
リペイント・イベント=WM_PAINTが飛ぶ
>>80
ちゃんと>>72で書いたつもりなんだけど、現行のシステムの場合compizもその上で動くアプリも
最終的にOpenGLの3Dアクセラレーションを利用する
忘れていたけどcairoは直接OpenGLをバックエンドに描画することもできます
84:login:Penguin
19/12/24 19:02:23.47 L5i1QPrG.net
さすがにGUIで窓や林檎に勝ってると思う奴は気がふれてる
85:login:Penguin
19/12/26 11:51:39.34 uVqalDy2.net
socket