(57)【特許請求の範囲】
【請求項１】
現在のバッファと、第１のバックバッファと、第２のバックバッファとを含む少なくとも３つのバッファを備えるスワップバッファチェーンを有するメモリを用いることと、
前記現在のバッファがディスプレイ制御装置によって最後に読み出されてから、レンダリングエンジンが前記第１のバックバッファの第１のフレームの第１の部分にいつ書き込みを行ったのか判断することと、
前記現在のバッファが前記ディスプレイ制御装置によって最後に読み出されてから、前記レンダリングエンジンが前記第２のバックバッファの第２のフレームの第１の部分にいつ書き込みを行ったのか判断することと、
前記現在のバッファが前記ディスプレイ制御装置によって最後に読み出されてから、前記現在のバッファの現在のフレーム、前記第１のバックバッファの前記第１のフレーム及び前記第２のバックバッファの前記第２のフレームのうちどの部分が変化したのかを追跡することによって、前記現在のバッファの前記現在のフレームの第１の部分が変化したのを判断することと、
前記現在のバッファの前記現在のフレームの第１の部分が変化したのを判断したことに応じて、変化した前記現在のフレームの第１の部分を、前記第１のフレーム及び前記第２のフレームに対して変化した前記現在のフレームの他の部分とともに、変化していない前記第１のフレーム及び前記第２のフレームの部分を出力することなく、出力することと、を含み、
前記追跡することは、前記第１のバックバッファ及び前記第２のバックバッファの少なくとも１つからのコピー動作によって生じる一時的変化を検出することと、前記レンダリングエンジンが実行する前記現在のバッファへの書き込み動作によって生じた前記現在のバッファにおける現在の変化を検出することと、を含む、
画像フレームを提供する方法。
【請求項２】
前記第１のフレームは、複数の部分に細分されている、請求項１に記載の方法。
【請求項３】
各部分は、隣接する多角形である、請求項２に記載の方法。
【請求項４】
前記レンダリングエンジンは、フレームバッファへの最後の書込み後に変化した部分についての前記フレームバッファの部分の書き込みのみ行う、請求項１に記載の方法。
【請求項５】
前記第１のフレームは、スワップバッファチェーンのバックバッファである前記第１のバックバッファに少なくとも一部書き込まれ、出力することは、前記第１のバックバッファがスワップバッファチェーンの画面バッファである場合に、前記第１のバックバッファから部分を読み取る、請求項１に記載の方法。
【請求項６】
第１のフレームのうち１つ以上の他のフレームに対して変化した１つ以上の部分を、前記第１のフレームのうち前記１つ以上の他のフレームに対して変化していない部分を出力することなく、出力することであって、各部分は、レンダリングエンジンが当該部分の境界内の位置についてフレームバッファに書き込んだ場合に、変化したと判断される、ことと、
前記部分を出力する前に、前記変化した部分に後処理を適用することをさらに含み、前記後処理は、前記変化した部分に隣接した部分を読み取ることと、受信した復号画像に従う処理と、前記変化した部分に隣接した読み取り部分に基づいて画質を改良する処理と、を含む、
画像フレームを提供する方法。
【請求項７】
前記後処理はスケーリングである、請求項６に記載の方法。
【請求項８】
前記変化した部分に隣接した読み取り部分は、選択された後処理技術を実施するのに必要なものである、請求項６に記載の方法。
【請求項９】
画像情報を１つ以上のメモリバッファに書き込む動作をするレンダリングエンジンと、
複数の部分をそれぞれ有する複数のメモリバッファと、
前記複数のメモリバッファの各々の前記複数の部分ごとの状態の変化のインジケータであって、各部分は、レンダリングエンジンが前記メモリバッファの前記部分内の画素に書き込んだ場合に、変化したと判断される、インジケータと、
復号画像の部分を受信し、前記部分を出力する前に、変化した部分に後処理を適用する動作をする後処理装置であって、前記後処理は、画質の改良を提供するものであって、前記変化した部分に隣接した部分を読み取ることを含み、前記画質の改良は、前記変化した部分に隣接した読み取り部分に基づいて実行される、後処理装置と、
前記インジケータを解釈して、前記複数のメモリバッファのうち第１のバッファから選択的に部分を読み出す動作をするディスプレイ制御装置と、
を含む、表示更新装置。
【請求項１０】
前記ディスプレイ制御装置は、前記部分が変化したことを示す関連したインジケータを有する部分のみを読み取る動作をする、請求項９に記載の表示更新装置。
【請求項１１】
前記ディスプレイ制御装置は、前記メモリバッファが最後に使用された後に、前記部分が変化したことを示す関連したインジケータを有する部分のみを読み取る動作をする、請求項１０に記載の表示更新装置。
【請求項１２】
前記複数のメモリバッファは、スワップバッファチェーンの一部である、請求項９に記載の表示更新装置。
【請求項１３】
各メモリバッファは、同様に配置された同一のサイズの対応する部分を有する、請求項９に記載の表示更新装置。
【請求項１４】
前記複数のメモリバッファの各々に対して変化の前記インジケータを設定する動作をする変化判定器をさらに含む、請求項９に記載の表示更新装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権）
本願は、２０１２年９月５日に出願された「ＭＥＴＨＯＤ  ＡＮＤ  ＤＥＶＩＣＥ  ＦＯＲ  ＳＥＬＥＣＴＩＶＥ  ＤＩＳＰＬＡＹ  ＲＥＦＲＥＳＨ」という名称の米国仮特許出願第６１／６９７，２６１号と、２０１３年９月５日に出願された「ＭＥＴＨＯＤ  ＡＮＤ  ＤＥＶＩＣＥ  ＦＯＲ  ＳＥＬＥＣＴＩＶＥ  ＤＩＳＰＬＡＹ  ＲＥＦＲＥＳＨ」という名称の米国特許出願第１４／０１８，８６９号との優先権を主張し、これらの開示が参照により本明細書に組み込まれる。
【０００２】
本開示は、表示用の視覚データのフレーム（例えば、グラフィックス（ビデオを含む）データのフレーム）の処理中に効率性を提供するための方法および装置に関する。本開示は、より詳細には、更新されるフレームのピースを選択的に更新するための方法および装置に関する。
【背景技術】
【０００３】
ダブルバッファまたはスワップチェーンベースのＯＳグラフィックスインタフェースは、表示される最終的なフレームバッファを生成するために、ソフトウェアおよび／またはハードウェア加速合成と、フレームバッファスワップチェーンとの組合せを使用する。スワップチェーンは、ユーザーに対してフレームを表示するために使用されるバッファの集合である。アプリケーションが表示用の新たなフレームを提示するごとに、スワップチェーン内の次のバッファは、現在表示されているバッファ（画面／フロントバッファ）に取って代わる。このプロセスは、スワッピングまたはフリッピングと呼ばれる。バックバッファをフロントバッファに移動するプロセスは、表面フリッピング（surface flipping）と呼ばれる。グラフィックスプロセッサは、フロントバッファを表すために表面へのポインタを単に使用するので、バックバッファをフロントバッファとして設定するために必要な全ては、単純なポインタ変更である。各バッファフリップに対して、バッファ全体が出力または表示のためにディスプレイ制御装置に渡される。
【０００４】
しかし、多くの場合、画面の大部分は連続するフレーム間で変わらない。従って、この大部分に対して、フレームの読み取り、処理、および、公開／出力は、ディスプレイ装置（パネル）上で提示されるものにおいて変更のない結果となる。従って、ディスプレイ装置へのフレームの提供において費やされる処理能力およびエネルギー（電力）の一部は、そのエフォート（effort）に対して認知できる恩恵をもたらさない。
【０００５】
２００４年に公表されたビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ）デジタルパケットビデオリンク（ＤＶＰＬ）規格は、変更のない部分が更新されないという部分的な画面更新を有する可能性について言及しているが、この規格では、この部分的な画面更新がどのようにして実現され得るかに関して、詳細または説明を提供していない。
【０００６】
このため、完全なフレームの伝送を必要とすることなく、ディスプレイ装置への新たなフレームデータの伝送を提供する改善された方法および装置に対する必要性が存在する。
【図面の簡単な説明】
【０００７】
【図１】本発明の一態様の実施形態におけるスワップチェーンベースのグラフィックインタフェースのアーキテクチャを示す図である。
【図２】本発明の一態様の実施形態において、グリッドシステムおよび書込み検出機能を採用するスワップチェーンベースのグラフィックインタフェースを示す図である。
【図３】本発明の一態様の実施形態における例示的なバッファおよびそれによって保持されるフレーム、ならびに、グラフィックインタフェースによるこれらの処理を示す図である。
【図４】本発明の一態様の実施形態における図１のアーキテクチャによって実行されるプロセスを示すフロー図である。
【発明を実施するための形態】
【０００８】
例示的且つ限定されない実施形態では、本態様は、画像フレームを提供する方法で実現される。方法は、第１のフレームのうち１つ以上の他のフレームに対して変化した部分を、前記第１のフレームのうち前記１つ以上の他のフレームに対して変化していない部分を出力することなく、出力することを含む。各部分は、レンダリングエンジンが当該部分の境界内の位置についてフレームバッファに書き込んだ場合に、変化したと判断される。この出力は、第１のフレームのうち１つ以上の他のフレームに対して変化している１つ以上の部分に応じて行われる。
【０００９】
簡単に言えば、別の例示的な実施形態では、表示更新装置が提供される。表示更新装置は、１つ以上のメモリバッファに画像情報を書き込む動作をするレンダリングエンジンと、複数の部分をそれぞれ有する複数のメモリバッファと、複数のメモリバッファの各々の複数の部分ごとの状態の変化のインジケータであって、各部分は、レンダリングエンジンが当該部分の境界内の位置についてフレームメモリバッファに書き込んだ場合に、変化したと判断される、インジケータと、インジケータを解釈して、複数のメモリバッファのうち第１のメモリバッファから部分を選択的に読み出す動作をするディスプレイ制御装置と、を含む。
【００１０】
別の例示的な実施形態では、持続性（non-transitory）命令を有するコンピュータ可読媒体が提供される。命令がプロセッサによって解釈される場合に、命令は、プロセッサに対して、第１のフレームのうち１つ以上の部分が１つ以上の他のフレームに対して変化しているかを判断することと、第１のフレームの１つ以上の部分が１つ以上の他のフレームに対して変化していないかを判断することであって、各部分は、レンダリングエンジンが当該部分の境界内の位置についてフレームメモリバッファに書き込んだ場合に、変化したと判断される、ことと、第１のフレームのうち１つ以上の他のフレームに対して変化している部分を、第１のフレームのうち１つ以上の他のフレームに対して変化していない部分を出力することなく、出力することと、を行わせる。
【００１１】
さらに別の例示的な実施形態では、コンテンツを表示する方法が提供される。本方法は、部分フレームを含むビデオ信号データを、インタフェースから受信することであって、部分フレームは、レンダリングエンジンが当該部分の境界内の位置について書き込んだフレームバッファ内のフレームの部分である、ことと、部分フレームを別のフレームの部分に追加して、組み立てられたフレームを生成することと、を含む。
【００１２】
図１は、ビデオ情報をディスプレイ（パネル１８）に提供するためのアーキテクチャを示す図である。このアーキテクチャは、スワップチェーンベースのグラフィックインタフェースを示している。インタフェースは、変化判定器（ｃｈａｎｇｅ  ｄｅｔｅｒｍｉｎｅｒ）１０と、レンダリングエンジン１２と、メモリ１４と、ディスプレイ制御装置１６と、パネル１８と、を含む。
【００１３】
レンダリングエンジン１２は、画像の仕様を、画素を表すデータに変換するソフトウェアまたはハードウェアである。一例では、レンダリングエンジン１２は、メモリコントローラとは異なる。別の実施形態では、レンダリングエンジン１２は、メモリコントローラを含む集積回路のサブシステムである。ディスプレイ制御装置１６は、コンピューティングシステムまたはゲームシステム内でビデオ信号の生成を担当する集積回路である。「ディスプレイ制御装置」という用語の使用は、ディスプレイプロセッサおよびグラフィック処理装置を除外することを意図していない。実際、ディスプレイ制御装置１６は、画像情報をバッファ２０から読み取り、画像情報をパネル１８上に表示させるように命令することの可能な任意のソフトウェアおよび／またはハードウェアを包含することを意図している。パネル１８は、ユーザによる画像の画素の認知を可能にする任意のディスプレイ装置である。
【００１４】
スワップチェーンは、メモリ１４内に配置された複数の仮想フレームバッファ２０を指す。一連の仮想フレームバッファ２０は、フレームレートの安定化およびいくつかの他の機能のために利用される。スワップチェーンは、グラフィックスメモリ内に存在するものとして示されているが、システムメモリ内に存在し得る。スワップチェーンがなければ、スタッタリング（stuttering）および／または不完全な画像更新レンダリングが生じ得る。スワップチェーンの存在および利用は、多くのグラフィックスアプリケーションプログラミングインタフェース（ＡＰＩ）によって必要とされる。
【００１５】
フレームバッファ２０の１つは、画面バッファと呼ばれ、パネル１８に出力するためにディスプレイ制御装置１６によって読み取られるバッファ２０である。新たなフレームが表示されるごとに、スワップチェーン内の第１のバックバッファが画面バッファに取って代わる。これは、提示またはスワッピングと呼ばれる。画面バッファは、一旦提示されると、さらなる処理のためにスワップチェーンの後ろに戻される。バッファ２０のこの移動は、空間的な移動ではなく、概念的な移動であって指定による移動である。フレームバッファ２０の画面バッファとしての指定は、ディスプレイ制御装置１６内での参照によって達成される。どのバッファ２０が画面バッファとして指定されているかにおける変更は、ディスプレイ制御装置１６内でのプログラミングによって達成される。ディスプレイ制御装置１６は、画面バッファとして指定するフレームバッファ２０を変更し、そのバッファ２０を、パネル１８に提示される次のフレームにしようとする。一旦、フレームが画面バッファ２０から取得されて、レンダリングエンジン１２が、スワップチェーン内の次のバッファ２０が準備できていることを示すと、画面バッファの内部指定がスワップチェーン内の次のバッファ２０に切り替えられる。図３は、３つのバッファチェーン内でのバッファ２０の概念的移動を示す図である。図３の各行の右端のバッファは、指定された画面バッファである。
【００１６】
本開示の実施形態では、各フレーム、したがって各バッファは、「マスク」によって有限の小区分に（仮想的に）分割されている。本開示では、マスク部分要素は矩形である。図２は、バッファ２０上のフレームの概念的な下位区分を示す図である。一例として、図２は、２４個の小区分２２に分割された各フレームを示している。マスクは、各バッファ２０が同一のサイズで配置された小区分２２を有するように規定する。
【００１７】
３バッファシステムでは、各バッファは３フレームごとにフレームを処理する。データソース１１は、レンダリングエンジンに対して、画素をバッファ２０に書き込むように指示する。変化判定器１０は、ソフトウェアを実行するプロセッサであってもよいし、専用ハードウェアであってもよい。変化判定器１０は、メモリバッファ２０が最後に使用されたときに対してレンダリングされる現在のフレームに、どの画素（または、以下で説明するように、メモリバッファ２０のどの部分）が書き込まれたかを判断する。（３バッファシステムでは、これは、現在のフレームの前の３つのフレームであろう）。別の実施形態では、変化判定器１０は、レンダリングされる現在のフレームと、既にレンダリングされた３つのフレームとの間でどの画素（または部分）が変化しているかを判断する。
【００１８】
一実施形態では、データソース１１は、レンダリングエンジン１２が、現在のフレームのうち、バッファ２０への以前の書込みに対して変化している（または最新の３つのフレーム内で変化している）画素のみを書き込むと規定する。バッファ２０への書込みは、必ずしも変化を示しているとは限らないが、どの書込みも変化を示すと考えられる。
【００１９】
画素が、レンダリングエンジン１２を介して現在のバックバッファ２０にレンダリングされる場合には、変化判定器１０は、現在のバックバッファ２０のどの部分（小区分２２）（図２）がレンダリングエンジン１２によって書き込まれるかを判断する。この情報は、メモリ１４内に格納される。本例では、情報は、複数の状態ビット（ＳＢ）２４としてメモリ１４内に格納される。各小区分２２には、状態ビット２４が割り当てられている。図１では、各バッファ２０が、自身に関連付けられた単一の状態ビット２４を有するように示されているが、バッファ２０の各部分（または小区分２２）に対して状態ビット２４が存在するように、複数の状態ビットが、実際には各バッファ２０に関連付けられていることが理解されよう。レンダリングエンジン１２が現在のバックバッファ２０に書き込みを行う（または、現在のバックバッファ２０への最後の書き込み後に、他のバッファ２０内に同様に位置付けられた小区分２２に書き込みを行った）場合には、小区分２２に対応する状態ビット２４をオンにして、当該小区分２２を「ダーティ（dirty）」としてマークする。「ダーティ」としての表示は、小区分２２内の値が変化した、または、変化したと考えられるであろうことを示すために使用される。同様に、小区分に対する状態ビットがオフにされる場合には、「クリーン（clean）」または変化していないと示される。
【００２０】
別の言い方をすれば、レンダリングエンジン１２による書き込みは、変化を示すと考えられる。レンダリングエンジン１２による書き込みは、どの小区分２２が書き込まれているかを判断するために小区分２２のマスクと比較され、それにより、どの小区分２２が変化したかを判断する。変化の判断は状態ビット２４を介して格納される。現在のバッファ２０に対して変化した小区分２２は、現在のバッファ２０の最後の表示後に変化した小区分２２のリストを取得するために、他のバッファ２０に対して変化した小区分２２（関連付けられた状態ビット２４で表される）と組み合わされる。
【００２１】
ディスプレイ制御装置１６は、状態ビット２４を読み取って、バッファ２０のうちどの小区分２２が、読み取られ、および、（パネル１８につながる）出力に対して公開される必要があるか、を認識する。
【００２２】
ここでの例では、状態ビット２４は、レンダリングエンジン１２がどこに書き込むかに関する関数として設定されている。しかし、状態ビット２４を設定する他の方法およびディスプレイ制御装置に指示する他の方法が想定されることが理解されよう。このような追加の方法の１つは、状態ビットを設定するために、マスクへの直接のインタフェースを変化測定器１０に持たせることである。
【００２３】
一例では、ディスプレイ制御装置は、ダーティと表されている全ての小区分２２を包含するのに十分大きいフレームの連続する区分を読み取る。別の例では、ディスプレイ制御装置は、ダーティと表されている小区分２２のみを読み取る。この例では、ディスプレイ制御装置は、個々の非連続の小区分２２を選択的に読み取ることが可能である。
【００２４】
また、小区分２２のクリーン／ダーティ状態は、更新された小区分２２を認識し、且つ、ディスプレイ制御装置１６にクリーン／ダーティの小区分２２状態をどのように更新するかを指示する、明示的なオペレーティングシステムからディスプレイドライバへの呼出し、および／または、既存のオペレーティングシステムからディスプレイドライバへの呼出しにおけるディスプレドライバベースのインターセプトの組み合せによって実現できる。
【００２５】
画面全体に満たない情報をパネル１８に伝送することにより、フレーム全体を処理して伝送することに比べて省電力が達成される。画面全体に満たない情報が伝送されるという点において、パネル１８は、フルフレームに満たない情報の受信を行うことが可能である。パネル１８は、表示され、または、表示される予定のフレームを、バッファ内に保持する。次いで、受信した小区分２２は、以前のフレームの部分のうち新たな小区分２２を受信していいない部分が保持されるように、パネル１８のバッファに上書きされる。次いで、フレームは、バッファからパネル１８の画面に公開される。
【００２６】
ここで、図３および図４を参照してプロセスを説明する。図３は、スワップチェーンの３つのバッファ２０（バッファ０、バッファ１およびバッファ２）を示す図である。各行において右端のバッファ２０は、ディスプレイ制御装置によって画面バッファとして指定されている。列の左および中央のバッファ２０は、バックバッファである。各フレームは、小区分または部分に細分されている（ブロック１００）。陰影のある（白色以外の色が付された）小区分２２は、状態ビットまたは別の方法でダーティとして表される／更新されているものである。
【００２７】
行１のバッファ０と、行２のバッファ１との間に変化はない。その結果、どの小区分２２もダーティとして表されていない。ディスプレイ制御装置１６は、バッファ１の状態ビットを読み取ると、全ての小区分２２がクリーンであると認識する（ブロック１２０）。従って、ディスプレイ制御装置１６は、パネル１８に対して更新を提供しない（ブロック１３０）。その結果、バッファ１が表示される予定のタイムスロットにおいて、行１のバッファ０が実際には表示される。このことは、２つのフレームが同一であって、ディスプレイ制御装置１６がバッファ１をパネル１８に出力することなく、パネル１８上で所望の表示が実現されるので、望ましい。
【００２８】
しかし、行２のバッファ１と、行３のバッファ２との間では、左上隅の小区分２２が変化している。したがって、レンダリングエンジンは、左上隅の小区分２２に書き込みを行う。この書込みでは、この小区分に対応する状態ビット２４にダーティが記述される（ブロック１１０）。ディスプレイ制御装置１６は、状態ビットを読み取って、左上の小区分２２がダーティな小区分２２を表していることを認識する。ディスプレイ制御装置１６は、左上の小区分２２がフレーム内で唯一のダーティな小区分２２であることをさらに認識する。従って、ディスプレイ制御装置１６は、左上の小区分２２のみを読み取って、パネル１８に出力する（ブロック１３０）。再度、完全な画像がその表示の直前にパネルに伝送される必要なく、所望の画像がパネル１８上に表示される。一旦、左上の小区分２２がディスプレイ制御装置１６によって読み出されると、状態ビット２４（または複数の状態ビット２４）がクリーンにリセットされる（ブロック１４０）。
【００２９】
同様に、行４のバッファ０は、変化を表す２つの小区分２２を示している。従って、ディスプレイ制御装置１６は、ダーティな小区分２２のみを読み取って、パネル１８に出力する。再度、完全な画像がその表示の直前にパネルに伝送される必要なく、所望の画像がパネル１８上に表示される。
【００３０】
ここで、図３の左側を見ると、バッファ２０に書き込み、小区分２２をダーティとしてマークするプロセスが示されている。レンダリングエンジン１２によって、画素を小区分２２内に書き込むことで、その小区分２２をダーティとしてマークし、状態ビット２４がその書き込みを反映するように設定される。画素は２つの理由で書き込まれる。第１の理由は、１）現在のバッファが最後に使用されたときと、２）現在のバッファより前のバッファとの間のフレームで、画素が変化していること（「一時的変化」）である。第２の理由は、１）現在のバッファより前のバッファと、２）現在のバッファとの間で、画素が変化していること（「現在の変化」）である。
【００３１】
状態ビット２４の設定に加えて、レンダリングエンジン１２は、どの小区分２２が、「現在の変化」に起因して状態ビットを介してダーティとマークされているかを（一時的変化に起因してダーティとマークされているものとは対照的に）別々に追跡する。レンダリングエンジン１２は、現在の変化に起因してどの領域がダーティであるかを追跡するのをサポートするために、状態ビット２４を使用してもよいし、使用しなくてもよい。さらに、当該技術分野において周知の任意の方法が、かかる目的のために採用され得る。本実施形態では、レンダリングエンジン１２は、過去のバッファのどの小区分２２が、状態ビット２４自体とは別の現在の変化に起因して、ダーティとマークされているかを追跡する。
【００３２】
パネル１８に出力されて状態ビット２４をリセットさせた後、以前の画面バッファ２０（図３で右端の位置）は、左端の位置に回されてバックバッファ２０となる。レンダリングエンジン１２は、左端のバックバッファ２０に書き込む。まず、レンダリングエンジン１２は、最も古いバッファ（最も早く作成された、おそらく画面バッファ）のうちどの小区分２２が、当該バッファがレンダリングされたときに、それに対する「現在の変化」を有していたかに関する記録を参照する。これらの小区分２２は、現在のバッファに対する「一時的変化」とみなされる。次いで、レンダリングエンジン１２は、示された小区分２２をチェーン内の最も古いバッファから現在のバッファにコピーする（「コピーされた小区分」）。どの小区分２２が現在のバッファにコピーされるかという判断は、状態ビット２４自体ではなく、レンダリングエンジンの追跡から判断されることが理解されよう。
【００３３】
一時的変化を判断する場合には、過去のバッファに対する現在の変化のみが考慮される。従って、状態ビット２４の使用は、状態ビットが、過去のバッファに対する一時的変化と現在の変化との両方を示すという点において、過度に包括的であろう。画面バッファの現在の変化を現在のバッファにコピーすることで、現在のバッファを画面バッファと一致するように更新する。次いで、レンダリングエンジン１２は、（レンダリングエンジンの追跡によって示されるように）現在の変化を有する小区分２２の全てを、次に古いバッファから現在のバッファにコピーする。このコピーによって、現在のバッファを、最も古いバッファおよび２番目に古いバッファの両方に対して更新されるように更新する。このコピーは、現在のバッファが、スワップチェーン内でその直前のバッファに更新されるように、チェーン内の全てのバッファに対して実行される。各コピーは、現在のバッファへの書き込みを生じさせ、且つ、現在のバッファ２０の関連付けられた小区分２２ごとに状態ビット２４をダーティに設定する。
【００３４】
次いで、レンダリングエンジン１２は、次のフレームに対する現在のバッファ２０へのデータの書き込みに進む。書き込みは、データソース１１によって変化が示されている画素に対してのみ行われる。これは、現在のバッファ２０に対して現在の変化を提供する。書き込みは、書き込まれた画素を含む小区分２２をダーティとしてレンダリングし、状態ビット２４が（一時的変化に起因してダーティとして設定されたものに加えて）そのように設定される。その結果、ダーティとしてマークされた小区分２２は、一時的変化、現在の変化またはそれら両方を有するものである。
【００３５】
「ダーティ」との記録は、画面バッファのうちどの小区分が読み取られてパネル１８に提供されるかを判断するために、後にディスプレイ制御装置１６によって使用される。従って、パネル１８に提供される区分は、一時的変化、現在の変化またはそれら両方を経験した小区分２２である。それらの変化した小区分２２は、以前のバッファからコピーすることによる（一時的変化）か、または、データソース１１の指示でレンダリングエンジン１２によって書き込むことによる（現在の変化）かの何れかによって、バッファに置かれる。一旦、適切な小区分２２がパネル１８に出力されると、状態ビット２４がリセットされる。しかし、レンダリングエンジン１２は、どの領域が、関連した現在の変化に起因してダーティな状態ビット２４を有していたかという指標を保持する。この保持は、（前述のように）どの小区分２４が後続のバッファにコピーされる必要があるかを判断するために使用される。
【００３６】
上記のソリューションは、画像のスケーリングを提供する際に省電力を提供するように修正することも可能である。このように修正された１つのソリューションは、「ダーティに隣接した」第３の小区分状態の使用を含む。クリーン／ダーティアルゴリズムは、スケーリングの程度と、どの特定の小区分２２がダーティであるかと、を認識する。クリーン／ダーティアルゴリズムは、スケーリングの程度に対して適切になるように、どの小区分２２がダーティな小区分２２に十分に近いかをさらに判断する。クリーンであるが、ダーティな画素に近い小区分２２に対して、クリーン／ダーティアルゴリズムは、「ダーティに隣接した」状態を割り当てる。次いで、ディスプレイ制御装置１６は、実際に「ダーティ」な小区分２２、縦および横のスケーリング比率、ならびに、スケーリングに起因してエンベロープされた任意の隣接した小区分、に基づいてパネル１８への実際の出力を計算する際に使用される「ダーティに隣接した」小区分２２を読み取ることを認識する。理解され得るように、スケーリングは、当業者に周知のグラフィックス後処理技術の一種にすぎない。後処理の他の形式は、異なる数および位置の隣接した小区分を使用することが知られている。例えば、いくつかの非ブロック化技術（別のタイプの後処理）は、空間的に直接隣接した小区分のみを参照する。他の非ブロック化技術は、２つ以上の隣接した小区分（焦点となる小区分（例えば、ダーティな小区分）に直接隣接した小区分、および、直接隣接した小区分よりもさらに空間的に離れている１つ以上の小区分）を使用する。
【００３７】
小区分２２のサイズは、様々な程度の粒度を与えるために変更できることが理解されよう。より小さい小区分２２は、より多くの小区分２２を生成して、小区分２２が「クリーン」であると分かる可能性を高める。それに応じて、より小さい小区分は、より多くの事前処理作業を生成して、より多くのメモリ記憶を必要とするが、ディスプレイ制御装置１６での電力および処理の節約の可能性を高める。小区分のサイズに関わらず、各小区分２２は、変化した部分または変化していない部分としてのマークに関して、単一のエンティティとして扱われる。
【００３８】
前述の詳細な説明およびその中で説明される例は、例示および説明目的のみで提示されており、制限することを意図していない。例えば、説明した操作は、任意の適切な方法で行われ得る。方法は、説明した操作および結果を依然として提供する任意の適切な順序で行われ得る。従って、本実施形態は、上述したように開示し、本明細書で主張する基本的な基礎となる原理の精神および範囲に含まれる、あらゆる修正、変形または均等物を包含すると考えられる。さらに、前述の説明は、コードを実行するプロセッサの形態でのハードウェアを記述しているが、状態機械の形態でのハードウェア、または、同様の効果をもたらすことが可能な専用論理も考えられる。
【００３９】
本明細書で説明するソフトウェア動作は、状態機械、フィールドプログラマブルゲートアレイ、特定用途向け回路または他の適切なハードウェアを含むがそれらに限定されない、個別論理固定機能回路などのハードウェアで実装できる。ハードウェアは、例えば、ＲＴＬおよびＶＨＤＬまたは任意の他の適切なフォーマットなどであるがそれらに限定されないハードウェア記述子言語で、ＲＡＭ、ＲＯＭまたは他の適切なメモリなどの持続性メモリ内に格納された実行可能なコードで表され得る。実行可能なコードは、実行時に、統合製造システムに、本明細書で説明する動作を有するＩＣを製造させ得る。
【００４０】
また、集積回路設計システム／統合製造システム（例えば、当該技術分野で周知のように、１つ以上のプロセッサ、１つ以上のバスまたは他の適切な相互接続を介して通信する関連メモリおよび他の既知の周辺機器を含む、ワークステーション）が知られており、例えば、ＣＤＲＯＭ、ＲＡＭ、他の形式のＲＯＭ、ハードドライブ、分散メモリなどであるが、それらに限定されないコンピュータ可読媒体上に格納された実行可能命令に基づき、集積回路を有するウェハーを製造する。命令は、ハードウェア記述子言語（ＨＤＬ）、Ｖｅｒｉｌｏｇまたは他の適切な言語などであるがそれらに限定されず、任意の適切な言語によって表され得る。そのため、本明細書で説明する論理および回路も、命令が格納されたコンピュータ可読媒体を使用して、かかるシステムにより集積回路として製造され得る。例えば、前述の論理および構造を備えた集積回路は、かかる集積回路製造システムを使用して製造され得る。かかるシステムでは、コンピュータ可読媒体は、１つ以上の集積回路設計システムに集積回路を製造させる１つ以上の集積回路設計システムによって実行可能な命令を格納する。
【図１】
0006275146.tif 000002
【図２】
0006275146.tif 000003
【図３】
0006275146.tif 000004
【図４】
0006275146.tif 000005