入り口に戻る

原文はこちら。

翻訳にあたって、オープンソースグループ・ジャパンの MIT ライセンスの訳を参考にした。

草案　草案　草案　草案　草案　草案　草案　草案

# Xinerama Extension to the X Protocol(日本語訳)

(X プロトコルの Xinerama 拡張)

X.org Xinerama Task Force

Last Modified
20 May 2002

X.org Standards Process Status:
Stage 4: Public Review

Draft Standard Version 0.8

Not a standard of X.Org
X11R6.?.?

### 著者：

Paul Anderson、Hewlett Packard
Jay Cotton、Sun Microsystems, Inc
Heather Lanigan、Hewlett Packard
Mark Vojkovich、The XFree86 Project, Inc

### 著作権、許諾：

Copyright (C) 2000 Hewlett-Packard, Sun Microsystems, Inc, Compaq Computer Corporation, and VA Linux Systems. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the names of Hewlett-Packard, Sun Microsystems, Inc., Compaq Computer Corporation, and VA Linux Systems shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Hewlett-Packard, Sun Microsystems, Inc., Compaq Computer Corporation, and VA Linux Systems.

(訳)

(Copyright (C) 2000 Hewlett-Packard, Sun Microsystems, Inc, Compaq Computer Corporation, and VA Linux Systems. All Rights Reserved.)

(本ソフトウェアおよび関連する文書のファイル（以下「ソフトウェア」）の複製を取得した全ての人物に対し、以下の条件に従うことを前提に、ソフトウェアを無制限に扱うことを無償で許可する。これには、ソフトウェアの複製を使用、複製、改変、結合、公開、頒布、再許諾、および/または販売する権利、およびソフトウェアを提供する人物に同様の行為を許可する権利が含まれるが、これらに限定されない。)

(上記の著作権表示および本許諾表示を、ソフトウェアの全ての複製または実質的な部分に記載するものとする。)

(ソフトウェアは「現状有姿」で提供され、明示的であるか黙示的であるかを問わず、いかなる種類の保証も行われない。ここでいう保証には、商品性、特定目的への適合性、および権利の非侵害性に関する保証も含まれるが、これらに限定されるものではない。THE XFREE86 PROJECT は、契約、不法行為、またはその他の行為であるかを問わず、ソフトウェアまたはソフトウェアの使用もしくはその他に取り扱いに起因または関連して生じるいかなる請求、損害賠償、その他の責任について、一切の責任を負わない。)

(Hewlett-Packard、Sun Microsystems, Inc.、Compaq Computer Corporation、及び VA Linux Systems の名称は、この表示に記載されている場合を除き、Hewlett-Packard、Sun Microsystems, Inc.、Compaq Computer Corporation、及び VA Linux Systems の事前の書面による承認を得ずに、宣伝であろうとその他の形であろうと、ソフトウェアの販売を促進するもの、またはソフトウェアの使用その他の扱いを奨励するものに使用してはならない。)

## 1. 概要

X プロトコルの Xinerama 拡張は、クライアント・アプリケーションに対して、X ウィンドウ・システムが管理しているグラフィクス・デバイスの特性に関する情報を取得するための機構を提供する。

X ウィンドウ・システムにおいては、X サーバは、昔から単一のホストの上で複数の物理スクリーンを同時に扱う能力を持っていた。この環境では、１つの X サーバは複数且つ別個のグラフィクス・カードへのレンダリングを制御していて、各グラフィクス・カードはヴィジュアル、カラーマップ、及びハードウェア支援に関して異なる能力を持つことが可能であった。この機能によってユーザとアプリケーションは「大きなディスプレイ」を利用することができるようになったが、同機能の下では、物理スクリーンの境界を超えてウィンドウを移動させたり、ウィンドウが複数のスクリーンに跨るようにしたりすることはできなかった。加えて、ユーザは自身のアプリケーションを特定の物理スクリーンに向かわせることに困難を覚えたものであった。

Xinerama の機能はこの X サーバの能力を拡張するものであり、これによって複数の均質なグラフィクス・デバイスを１つの大きなスクリーンとして扱うことができるようになる。こちらの環境では、ウィンドウはある物理スクリーンから別の物理スクリーンへ移動することができ、また、ウィンドウは複数の物理スクリーンに跨ることもできる。

Xinerama が動作するには、均質なグラフィクス環境が必要である(訳註：a homogeneous graphics environment。対義語は heterogeneous 〜)。均質な環境とは、ヴィジュアル、深さ、及びスクリーン・サイズの共通集合(全グラフィクス・カードに対して共通)が存在する環境のことである。各グラフィクス・カードには、全カードで共通して使えるヴィジュアルが少なくとも１つ存在していなければならない。こうしたヴィジュアルは、８ビットの pseudo color であったり、２４ビットの true color 等であったりする。８ビットと２４ビットのヴィジュアルの寄せ集めでもかまわないが、全てのカードが少なくとも１つの共通ヴィジュアル ID に対応している必要がある。Xinerama 拡張は、ヴィジュアル ID の最小共通集合(the intersection of lowest common set)を見つけ出して使用することになる。異なるスクリーン・サイズで Xinerama を動作させるのは望ましいことではなく、スクリーン・サイズの変更はウィンドウ・マネージャを混乱させる可能性がある。

Xinerama の目的に沿うように、(１つの)スクリーンを「単一の作業平面(work surface)として論理的に接合されたフレームバッファの一群」と定義する。Xinerama では、矩形のスクリーン構成しか使用できない。

この拡張の名称は「XINERAMA」である。

## 2. 構文規約

この文書では、X ウィンドウ・システム・プロトコルの文書の中でリクエストとデータ型を記述するのに使用している構文規約と同一のものを使用している。(訳註：X ウィンドウ・システム・プロトコル 第２章　構文規約。)

## 3. データ型

この拡張で新たに定義されたデータ型は存在しない。

この文書で使用されているデータ型の記法と定義については、X ウィンドウ・システム・プロトコルの「共通の型」と題された章を見てほしい。

## 4. リクエスト

    XineramaQueryVersion
        client_major_version: CARD16
        client_minor_version: CARD16

        ==>

        server_major_version: CARD16
        server_minor_version: CARD16

client_major_version と client_minor_version が指定されている場合、この２つの引数は、クライアントがサーバに実装していてほしいと望む、本プロトコルのバージョンを表す。戻り値であるサーバの版番号は、この拡張が実際に対応している本プロトコルの版を表す。この版番号は、クライアントが送った版番号と同じでない可能性がある。１つの実装で、同時に複数の版に対応することができる(が、必ずしもそうしなければいけないわけではない)。server_major_version と server_minor_version は、将来必要になるかもしれない Xinerama 拡張プロトコルの改訂に備えた機構である。原則として、上位の版番号(major version)は互換性の無い変更があった場合に増加し、下位の版番号(minor version)は上方互換性のある小さな変更があった場合に増加する。この文書で規定されているプロトコルに対応しているサーバは、server_major_version として 1 を、server_minor_version として 2 を返す。(訳註：令和6年11月現在、下位の版番号として 2 は返ってこない？)

    XineramaActive
        window: WINDOW

        ==>

        active: BOOL

        Errors: Window

このリクエストを使用して、現在稼働しているサーバのグラフィクス・デバイスであって且つ論理スクリーンに関係するものが、window で指定されたウィンドウを含んでいるか否かを知ることができる。window のウィンドウを含んでいる論理スクリーンに対して Xinerama が有効である場合、リプライ(返答)の active フィールドには true が設定される(返る)。

window が有効なウィンドウではなかった場合、このリクエストは Window エラーを発生させる。

    XineramaGetData
        window: WINDOW

        ==>

        num_framebuffers: CARD32
        framebuffer_rects: LISTofRECTANGLE

        Errors: Alloc, Window

このリクエストは、ある Xinerama 構成(自身の論理スクリーンに window で指定されたウィンドウを含んでいるもの)の中の各物理スクリーンの平面特性(dimensional characteristics)に関する情報を返すものである。リクエストの戻り値「num_framebuffers」には、Xinerama スクリーンを構成する物理スクリーンの数が返り、「framebuffer_rects」には各物理スクリーンの情報が返る。

window が有効なウィンドウでなかった場合、このリクエストは Window エラーを発生させる。フレームバッファのリストの割り当てができなかった場合、Alloc エラーを発生させる。

## 5. イベント

この拡張で新たに定義されたイベントは存在しない。

## 6. エラー

この拡張で新たに定義されたエラーは存在しない。

## 7. 符号

この文書は X11 プロトコルの符号に関する文書(X ウィンドウ・プロトコル 附録 B、プロトコルの符号)で確立された規約を用いているので、そちらも参照してほしい。

この拡張の名称は「XINERAMA」である。

    XineramaQueryVersion
      1   CARD8                opcode
      1   0                    XINERAMA opcode
      2   2                    request length
      1   CARD16               client_major_version
      1   CARD16               client_minor_version

      ==>

      1   1                    Reply
      1                        unused
      2   CARD16               sequence number
      4   0                    length
      2   CARD16               server_major_version
      2   CARD16               server_minor_version
      20                       unused

    XineramaActive
      1   CARD8                opcode
      1   1                    XINERAMA opcode
      2   2                    request length
      4   WINDOW               window

      ==>

      1   1                    Reply
      1                        unused
      2   CARD16               sequence number
      4   0                    length
      1   BOOL                 active
      23                       unused

    XineramaGetData
      1   CARD8                opcode
      1   2                    XINERAMA opcode
      2   2                    request length
      4   WINDOW               window

      ==>

      1   1                    Reply
      1                        unused
      2   CARD16               sequence number
      4   CARD32               length
      4   CARD32               m, number of RECTANGLEs in rectangles list
      20                       unused
      8m  LISTofRECTANGLE      rectangles

## 8. 既存のリクエスト/リプライ/イベント/...に対する変更

[ここには、どのようにイベント処理が変更されたのかに関する情報、試験に関する情報、あるいは Xinerama の下で異なる振る舞いをさせる場合のシナリオに関する情報等を記述する。]

## 9. 謝辞

この拡張仕様は、PanoramiX 拡張を基礎にしている。PanoramiX 拡張は元々 Digital Equipment Corporation に在籍していた Rob Lembree と Madeline Asmus によって書かれたものである。

## 10. 参考文献

Jay Cotton、John McKernan、Rob Lembree、Yanjun Zhang、Paul Anderson、Mark Vojkovich、「Xinerama API Specification, Version 1.2.」

## Revision History:

0.7.2: 2002年5月16日

BadRequest に関する文章を削除。

0.7.1: 2002年5月8日

エラーの生成の情報を追加。

0.6.2: 2002年4月8日

XineramaGetData を削除。もはやプロトコルのリクエストを生成しない。(訳註：XineramaGetData は本文書の中に存在する。)

0.6.1: 2002年2月27日

API 文書に合わせて XineramaGetInfo を XineramaGetData に変更した。XineramaGetInfo では名前の衝突があった。

0.6: 2002年1月8日

X.Org Standards Process の記法に合わせて版番号の付け方を変更した。Mark の所属している会社の部分を更新した。

0.4: 2001年1月10日

モニターが３つの場合に限定しないように、序論部分を変更した。
引数 window に無効なウィンドウを指定した場合のエラーの適切な型に関して、内輪のコメントを削除した。
謝辞の章の中身を書いた。

0.3: 2000年12月7日

著者のリストを改めた。
一度消した XineramaGetCenterHint の記述を再び追加した。
XineramaQueryVersion の client_*_version の型を CARD16 に変更した。
スクリーンのプロトコル上の定義に基き、screen_number の型を CARD8 に変更した(訳註：現在は使われていない)。
実際の符号では変数 screen_number ではなく Window を使うように変更した。それに応じて文章も修正。
num_framebuffers を CARD32 とすることに決めた。
第９章、第１０章の中身を書いた。

0.2: 2000年12月6日

「概要」の中に、矩形の構成に関する説明を追加した。
XineramaIsActive を XineramaActive に変更した。
XineramaGetCenterHint に関する記述を削除した。

0.1: 2000年11月15日

最初の草案。

入り口に戻る