GNOMEシェル、GPUアクセラレーション必須でなくなる 11
ストーリー by hylom
そもそもLinuxデスクトップに派手なエフェクトは必要なの? 部門より
そもそもLinuxデスクトップに派手なエフェクトは必要なの? 部門より
あるAnonymous Coward 曰く、
GNOME 3.0では「Mutter」というウィンドウマネージャや、Mutterと連携する「GNOME Shell」というUIが採用されている。しかし、Mutterの利用にGPUアクセラレーションが必須であったため、利用できない環境もあった。しかしこのたび、Gallium3Dプロジェクトの「LLVMpipe」というLLVMを活用したソフトウェアラスタライザを導入することで、GPUアクセラレーションを用いずにMutterやGNOME Shellを利用できるようになったという(phoronix、本家/.)。
本家/.ではGObjectの使いづらさとコンパイルされたバイナリの遅さ、非効率的な動作や、GPUアクセラレーションの必須化、その後のLLVMにまつわるあれこれはすべて誤った判断の結果であり欠陥であると指摘、GNOMEが「ソフトウェア設計の反面教師」であるとのコメントに5点がついている。
LLVMpipeは3D画像処理をGPUの代わりにCPUで実行させるというものだそうで、Phoronixの記事によるとGPUアクセラレーションが利用できない環境でも問題なくMutterやGNOME Shellが使えたそうだ。
GObject (スコア:2)
そんなに使いづらいかな。
Cでオブジェクト指向をやるってのは面白いアプローチだと思った。
Re:GObject (スコア:2)
タレコミに
> 本家/.ではGObjectの使いづらさ
とありますが,これ誤読です.
元のコメント(の前半)は,大雑把にまとめると
c++とか objective-c 等の言語がすでにあるのに,わざわざCでオブジェクト指向な実装を行う方針がそもそもの間違い.
なぜなら,Cで無理やりオブジェクト指向な実装を行うとGObjectのようなマクロを駆使した変態的実装が不可避になり,次の2つの問題が発生するから.
- コーディングが大変.苦痛でしかない
- コンパイラによる最適化が期待できない.ビルドしたバイナリの質は低く,動作速度も遅い.
GNOMEの開発陣って,センスないよね.
という感じです.もっともな指摘です.
GNOMEが誕生した1998年頃だと,まだc++は言語仕様もコンパイラの実装も共にイマイチでした.当時なら,仕方なくCを選択し,gobject というか glib というライブラリを整備するという方針はかなり妥当でしたし,実際成功しています.
ただ10年経った今もなおその古い思想をズルズル引き継いでしまっている点は「ソフトウェア設計の悪い例」なのかも知れません.
Re:GObject (スコア:2)
> - コンパイラによる最適化が期待できない.ビルドしたバイナリの質は低く,動作速度も遅い.
むかし COBOL のプログラムを C に変換してから
コンパイルする処理系で出来上がった実行ファイルが
激おそだったときがあった。
このシステムは某日本メーカの UNIX だったけど
同じ処理系の Solaris 版で同じ COBOL プログラムを
コンパイルすると某日本メーカの UNIX と比べて
はるかに早くなった。
普通の C プログラムだとどっこいの性能がでたので
原因は某日本メーカ製 UNIX の C コンパイラの
最適化が機械生成されたプログラムに対応して
なかったのだろうと思う。
何がいいたいのかというと、C コンパイラ側が
GObject を考慮した最適化を行うようにしたら
性能が改善する余地があるんだろうか?という話。
Re:GObject (スコア:1)
GNOMEより先に出たKDEは当初からC++/Qt使ってたので、C++使うって選択がそんなにありえなかったわけでもないと思うけどなぁ。。。
# Qtも変態マクロがそこそこある気がするが。。。
1を聞いて0を知れ!
Re: (スコア:0)
>わざわざCでオブジェクト指向な実装を行う方針がそもそもの間違い.
逆に、わざわざオブジェクト指向な実装を行う方針がそもそもの間違いだと思うけど。
Re: (スコア:0)
その続きにこんなのが。
> Nonsense. GObject gives you multi-language bindings for free and if you're just an application developer it only makes your life easier. You can develop GNOME programs in C++, Python, Java or whatever suits your tastes.
s/GObject/COM(or .NET)/g
s/GNOME/WIN32(or Windows)/g
してもとても自然に読めたり。むしろいつまでこんな低水準な規約でクロス言語してないといけないんだとかWindows界隈の人に笑われるんじゃなかろうか。
Re: (スコア:0)
.NETは余計。
LLVMすげーGPLv3を窓から投げ捨てろ (スコア:0)
フレームの元付ける奴は頭悪いと思う。
Re:LLVMすげーGPLv3を窓から投げ捨てろ (スコア:1)
× GPLv3 △ GCC
もしくは
× LLVM △ University of Illinois Open Source License [opensource.org]
需要はVNC環境くらい? (スコア:0)
やっぱり相応のパフォーマンスダウン? (スコア:0)
結局CPUにその分の負担をかけるので古いマシンだったりすると重くなるんでしょうか。
新しけりゃそこそこのGPU載ってるからね。