Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Xとかオワコンじゃね… っていう男の人って
自己紹介
青田直大 (あおた なおひろ)@naota344
Software DesignでLinuxカーネルについて連載してます
あとGentooとか
デモ       X上でWayland Compositorの     Westonを       動かす
デモ自作Waylandクライアント
WaylandWaylandはプロトコルオブジェクト wl_display   コアオブジェクト wl_shm   クライアントとのメモリ共有 などなどメッセージ UNIXドメインソケットで送られる
Waylandのメッセージ32bit: オブジェクトのID16bit: オペレーションコード16bit: メッセージ長 (byte数)残り: 引数 32bitにalign 文字列は   32bit:文字列長   残り: 文字列+0+padding
Waylandクライアントの流れサーバに接続必要なオブジェクトを「作る」メモリ領域をサーバと共有する画像データを書く更新したよ、とリクエストを送る
Compositorに接続UNIXドメインソケット: wayland-0wl_display globalイベント サーバ側のオブジェクトが教えてもらえる    オブジェクトID    インタフェース名    バージョン
オブジェクトの「作成」クライアント側にオブジェクトを作るwl_display bindリクエスト globalイベントで教えてもらったID インタフェース名 バージョン クライアント側で割り当てるID
wl_surface画面に描画されるデータwl_compositor create_surfaceリクエストで作成
wl_shell_surfacewl_shell get_shell_surfaceリクエストで wl_surfaceと結びつけるpopupとかmoveとかresizeとかできるように
wl_shm_poolクライアントとサーバで共有するメモリのプールここからbufferを確保してくwl_shm create_poolリクエスト wl_shm_poolに当てるID ファイルデスクリプタ サイズ
wl_bufferピクセルデータが入るbufferwl_shm_pool create_bufferリクエストで作成 wl_bufferに割り当てるID offset width height stride: 次のrowまでのbyte数 for...
画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く                    wl_shm_po                         ol                      ...
画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く                      wl_shm_po                           ol           wl_buff...
画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く                          wl_shm_po                               ol          ...
画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く                          wl_shm_po                               ol          ...
buffer更新メッセージwl_surface damageリクエスト x y width height描画してくれる!
実装Haskell  ghc-7.4.1  conduit-0.4.0.1  network-conduit-0.4.0  codec-image-devil-0.2.3
問題点好きなIDを指定してね! サーバがSEGVintがうまく渡せてない時がある? 変な数字になるHaskellだけど実装がアレFdをメッセージと一緒に渡すためにnetworkにpatchが必要なんか最初に画像が乱れる
自分も書きたい… !weston/clients/ にいろんなデモがwayland/protocol/wayland.xmlにプロトコルの定義が
Xとかオワコン?
Xとかオワコン?
Xとかオワコン?
Xとかオワコン?
Xとかオワコン?
Upcoming SlideShare
Loading in …5
×

Xとかオワコン?

3,203 views

Published on

  • Be the first to comment

Xとかオワコン?

  1. 1. Xとかオワコンじゃね… っていう男の人って
  2. 2. 自己紹介
  3. 3. 青田直大 (あおた なおひろ)@naota344
  4. 4. Software DesignでLinuxカーネルについて連載してます
  5. 5. あとGentooとか
  6. 6. デモ X上でWayland Compositorの Westonを 動かす
  7. 7. デモ自作Waylandクライアント
  8. 8. WaylandWaylandはプロトコルオブジェクト wl_display コアオブジェクト wl_shm クライアントとのメモリ共有 などなどメッセージ UNIXドメインソケットで送られる
  9. 9. Waylandのメッセージ32bit: オブジェクトのID16bit: オペレーションコード16bit: メッセージ長 (byte数)残り: 引数 32bitにalign 文字列は 32bit:文字列長 残り: 文字列+0+padding
  10. 10. Waylandクライアントの流れサーバに接続必要なオブジェクトを「作る」メモリ領域をサーバと共有する画像データを書く更新したよ、とリクエストを送る
  11. 11. Compositorに接続UNIXドメインソケット: wayland-0wl_display globalイベント サーバ側のオブジェクトが教えてもらえる オブジェクトID インタフェース名 バージョン
  12. 12. オブジェクトの「作成」クライアント側にオブジェクトを作るwl_display bindリクエスト globalイベントで教えてもらったID インタフェース名 バージョン クライアント側で割り当てるID
  13. 13. wl_surface画面に描画されるデータwl_compositor create_surfaceリクエストで作成
  14. 14. wl_shell_surfacewl_shell get_shell_surfaceリクエストで wl_surfaceと結びつけるpopupとかmoveとかresizeとかできるように
  15. 15. wl_shm_poolクライアントとサーバで共有するメモリのプールここからbufferを確保してくwl_shm create_poolリクエスト wl_shm_poolに当てるID ファイルデスクリプタ サイズ
  16. 16. wl_bufferピクセルデータが入るbufferwl_shm_pool create_bufferリクエストで作成 wl_bufferに割り当てるID offset width height stride: 次のrowまでのbyte数 format 0: ARGB8888
  17. 17. 画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く wl_shm_po ol File
  18. 18. 画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く wl_shm_po ol wl_buffe r File
  19. 19. 画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く wl_shm_po ol wl_buffe wl_surface File r
  20. 20. 画像データを書くpng画像をARGB8888形式でwl_shmで共有してるファイルに書く wl_shm_po ol wl_buffe wl_surface File r ここにデータ書く
  21. 21. buffer更新メッセージwl_surface damageリクエスト x y width height描画してくれる!
  22. 22. 実装Haskell ghc-7.4.1 conduit-0.4.0.1 network-conduit-0.4.0 codec-image-devil-0.2.3
  23. 23. 問題点好きなIDを指定してね! サーバがSEGVintがうまく渡せてない時がある? 変な数字になるHaskellだけど実装がアレFdをメッセージと一緒に渡すためにnetworkにpatchが必要なんか最初に画像が乱れる
  24. 24. 自分も書きたい… !weston/clients/ にいろんなデモがwayland/protocol/wayland.xmlにプロトコルの定義が

×