(57)【要約】【課題】  画像領域を複数の部分領域に分割し、複数の部分領域のうちの幾つか部分領域について画像データを生成する方法において、画像データ生成処理が部分領域毎に時間的に分散して実行され、画像データ生成処理が開始されてから終了するまでに要する時間が長くなるという課題が発生する。【解決手段】  開示の方法では、複数の部分領域を含む画像領域の画像データを生成する方法であって、第１プロセッサが、第１フレームにおいて、複数の部分領域のうちの一部の部分領域についてインストラクションを生成し、第２プロセッサが、インストラクションに基づき一部の部分領域の画像データの生成処理を開始し、第２プロセッサによる部分画像データの生成処理の終了タイミングと第２フレームの開始タイミングとに基づいて、第２フレームにおいて実行される部分領域を制御する。【選択図】図７
2016099792.tif 000002
【特許請求の範囲】
【請求項１】
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成方法において、
第１プロセッサが、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１指示を生成し、
前記第１プロセッサが前記第１指示を生成した後に、前記第２プロセッサが、前記第１指示に基づき、前記Ｎ個の部分領域の第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理が終了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第１同期信号の次に発行される第２同期信号の受信タイミングとに基づいて自然数Ｍを定め、前記複数の部分領域のうちのＭ個の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第２指示を生成する
ことを特徴とする画像データ生成方法。 
【請求項２】
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする請求項１に記載の画像データ生成方法。 
【請求項３】
前記第１プロセッサは、前記画像データ生成処理終了通知を受信した時刻と前記第２同期信号を受信した時刻との時間差を算出し、算出された前記時間差と前記Ｎに基づいて、前記Ｍを特定することを特徴とする請求項１または２に記載の画像データ生成方法。 
【請求項４】
複数の前記部分領域の各々は、前記第１プロセッサが前記第２プロセッサへ前記生成処理を指示することができる最少の単位領域であり、前記第１指示および前記第２指示は前記第１プロセッサがコンピュータプログラムを実行することにより生成され、前記単位領域のサイズは前記第１プロセッサが前記コンピュータプログラムを実行することにより特定されることを特徴とする請求項１乃至３何れか一項に記載の画像データ生成方法。 
【請求項５】
前記第２プロセッサは、前記第１部分画像データの前記生成処理を実行する前は第１動作モードで制御され、前記第１部分画像データの前記生成処理を実行する際は、前記第１動作モードよりも消費電力の高い第２動作モードで制御されることを特徴とする請求項１乃至４何れか一項に記載の画像データ生成方法。
【請求項６】
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成方法において、
第１プロセッサが、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１部分指示を生成し、
前記第１プロセッサは、前記Ｎ個の部分領域の各々について前記第１部分指示を生成した後に、Ｎ個の前記第１部分指示を含む第１指示を前記第２プロセッサへ送信し、
前記第２プロセッサが、前記第１指示に基づき、前記Ｎ個の部分領域についての第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理を完了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記第１同期信号の次に発行される第２同期信号に基づいて、前記複数の部分領域のうちのＭ個（Ｍは自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データの生成処理の内容を規定する第２部分指示を生成する工程と
を有し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第２同期信号の受信タイミングとに基づいて、Ｍ個の前記第２部分指示のうちの何れかの生成処理の開始タイミングを遅延させることを特徴とする画像データ生成方法。 
【請求項７】
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする請求項６に記載の画像データ生成方法。 
【請求項８】
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成装置であって、
前記画像データ生成装置は第１プロセッサと第２プロセッサとを含み、
前記第１プロセッサは、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１指示を生成し、
前記第１プロセッサが前記第１指示を生成した後に、前記第２プロセッサは、前記第１指示に基づき、前記Ｎ個の部分領域の第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理が終了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第１同期信号の次に発行される第２同期信号の受信タイミングとに基づいて自然数Ｍを定め、前記複数の部分領域のうちのＭ個の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第２指示を生成する
ことを特徴とする画像データ生成装置。 
【請求項９】
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする請求項８に記載の画像データ生成装置。 
【請求項１０】
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成装置であって、
前記画像データ生成装置は第１プロセッサと第２プロセッサとを含み、
前記第１プロセッサは、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域の各々について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１部分指示を生成し、
前記第１プロセッサは、前記Ｎ個の部分領域の各々について前記第１部分指示を生成した後に、Ｎ個の前記第１部分指示を含む第１指示を前記第２プロセッサへ送信し、
前記第２プロセッサは、前記第１指示に基づき、前記Ｎ個の部分領域についての第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理を完了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記第１同期信号の次に発行される第２同期信号に基づいて、前記複数の部分領域のうちのＭ個（Ｍは自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データの生成処理の内容を規定する第２部分指示を生成し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第２同期信号の受信タイミングとに基づいて、Ｍ個の前記第２部分指示のうちの何れかの生成処理の開始タイミングを遅延させることを特徴とする画像データ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、画像データ生成方法および画像データ生成装置に関する。
【背景技術】
【０００２】
ノート型コンピュータやスマートフォン等の端末装置において、ディスプレイに表示させる動画像の画像データは、所定の時間間隔で発行される垂直同期信号等の同期信号に同期して更新される。同期信号が例えば毎秒６０回発行される場合、端末装置に搭載されたプロセッサは、１／６０秒毎に更新された画像データを生成する。しかし画像データの生成処理が同期信号の間隔で規定される所定期間内に終了しない場合は、ディスプレイ上における動画像表示の滑らかさが損なわれる。この問題を解決するために、画像が表示される画像領域を複数の部分領域に分割し、所定期間内に画像データの生成処理を終了させることができる数の部分領域についてだけ画像データの生成処理を行う方式が開発されている。この方式では、画像領域の全領域についての画像データ生成処理を所定期間内に終了させることが困難な場合であっても、画像領域の一部の領域について所定期間内に画像データを生成し、ディスプレイに表示させることが可能となる。
【０００３】
また、画像データの生成処理が所定期間内に終了しないことに基づく問題を解決する方法として、画像領域を複数の部分領域に分割し、部分領域毎にプロセッサを割り当てて並列処理を実行する技術が知られている（下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画像領域をあるプロセッサが複数の部分領域に分割し、複数の部分領域のうちの幾つかの部分領域について画像データを生成する方法において、ディスプレイに実際に表示される画像データを生成する他のプロセッサにおける画像データ生成処理が部分領域毎に時間的に分散して実行される場合がある。この場合、画像データ生成処理が開始されてから終了するまでに要する時間が長くなるという課題が発生する。
【０００６】
本願は、画像データ生成処理が所定期間内に終了するよう画像データを生成する領域を制御し、かつ画像データ生成処理の開始から終了までの時間を短縮させることを目的とするものである。
【課題を解決するための手段】
【０００７】
開示の画像データ生成方法は、所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成方法であって、第１プロセッサが、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１指示を生成し、前記第１プロセッサが前記第１指示を生成した後に、前記第２プロセッサが、前記第１指示に基づき、前記Ｎ個の部分領域の第１部分画像データの生成処理を開始し、前記第２プロセッサは、前記第１部分画像データの前記生成処理が終了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第１同期信号の次に発行される第２同期信号の受信タイミングとに基づいて自然数Ｍを定め、前記複数の部分領域のうちのＭ個の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第２指示を生成するものである。
【発明の効果】
【０００８】
本願の技術により、第２プロセッサにおける画像データ生成処理が所定期間内に終了するよう画像データを生成する領域を制御し、かつ画像データ生成処理の開始から終了までの時間を短縮させることができる。
【図面の簡単な説明】
【０００９】
【図１】表示装置の構成を示す図である。
【図２】画像データ生成処理と画像データ合成処理と表示処理のタイミングチャートの一例を示す図である。
【図３】表示装置のハードウェア構成図である。
【図４】複数の動作モードと消費電力等の関係を示す図である。
【図５】表示領域を複数の部分領域に分割した様子の一例を示す図である。
【図６】ＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図７】第１実施例におけるＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図８】第１実施例におけるＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図９】第１実施例におけるＣＰＵの機能ブロック図である。
【図１０】第１実施例におけるＣＰＵの処理のフローチャートである。
【図１１】第１実施例におけるフィードバック制御部の処理のフローチャートである。
【図１２】第１実施例におけるインストラクション生成部の処理のフローチャートである。
【図１３】第１実施例におけるライブラリの処理のフローチャートである。
【図１４】第１実施例におけるドライバの処理のフローチャートである。
【図１５】第１実施例における合成処理部の処理のフローチャートである。
【図１６】第１実施例の第１変形例におけるインストラクション生成部の処理のフローチャートである。
【図１７】第１実施例の第１変形例におけるライブラリの処理のフローチャートである。
【図１８】第１実施例の第２変形例におけるライブラリの処理のフローチャートである。
【図１９】第１実施例の第２変形例におけるドライバの処理のフローチャートである。
【図２０】第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の一例を示す図である。
【図２１】第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の他の一例を示す図である。
【図２２】第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の更に他の一例を示す図である。
【図２３】第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の更に他の一例を示す図である。
【図２４】第２実施例におけるＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図２５】第２実施例におけるＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図２６】第２実施例におけるＣＰＵの機能ブロック図である。
【図２７】第２実施例におけるインストラクション生成部の処理のフローチャートである。
【図２８】第２実施例におけるライブラリの処理のフローチャートである。
【図２９】第２実施例におけるフィードバック制御部の処理のフローチャートである。
【図３０】第２実施例における遅延時間の設定方法の一例を説明する図である。
【図３１】第３実施例におけるＣＰＵとＧＰＵの処理のタイミングチャートの一例を示す図である。
【図３２】第３実施例におけるＣＰＵの機能ブロック図である。
【図３３】第３実施例におけるインストラクション生成部の処理のフローチャートである。
【図３４】第３実施例におけるライブラリの処理のフローチャートである。
【図３５】第３実施例におけるフィードバック制御部の処理のフローチャートである。
【発明を実施するための形態】
【００１０】
＜第１実施例＞
本実施例では、表示装置としてスマートフォン等のような携帯端末装置や、ノート型あるいはデスクトップ型のＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）、Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ（ＰＤＡ）等を用いることができる。図１は、表示装置としてスマートフォン等のような携帯端末装置の構成を例示するものである。表示装置１には表示部であるディスプレイ２が設けられる。表示装置１上で複数のアプリケーションソフトウェア（以下アプリ）が実行される場合は、各アプリにより作成される画像がディスプレイ２に表示される。図１では、表示装置１において実行される３つのアプリがそれぞれ、ディスプレイ２内に表示領域３ａ、３ｂおよび３ｃを有している状態を示している。３つのアプリはそれぞれ、後述する、表示装置１に設けられたＣＰＵ１００により実行され、表示領域３ａ、３ｂおよび３ｃに表示させる画像データを生成する。そして表示装置１は、３つのアプリによって生成された画像データを合成して、ディスプレイ２に表示させる画像データを生成する。以下、本明細書において、各アプリが生成する画像データを「画像データ」と呼び、各アプリによって生成された画像データを合成することによって得られる画像データを「合成画像データ」と呼ぶこととする。ディスプレイ２に表示される画像は、所定の時間間隔で発行される同期信号Ｖｓｙｎｃに基づいて更新される。同期信号Ｖｓｙｎｃが毎秒６０回発行される場合であれば、毎秒６０枚の画像がディスプレイ２上で順次更新される。
【００１１】
図２は、アプリ毎に実行される画像データ生成処理と、画像データ生成処理によって生成された画像データを合成する画像データ合成処理と、画像データ合成処理によって生成された合成画像データをディスプレイ２に表示させる表示処理のタイミングチャートの一例を示す図である。図２において横軸は時間を表すものとする。画像データ生成処理と画像データ合成処理と表示処理はそれぞれ、同期信号Ｖｓｙｎｃに基づいて実行される。図２においては、作図上の理由により、各同期信号Ｖｓｙｎｃの間隔が等間隔には描かれていないが、同期信号Ｖｓｙｎｃは所定の時間間隔で発行されるものとする。本明細書において、連続して発行される２つの同期信号Ｖｓｙｎｃの間の期間を「フレーム」と呼び、図２において、同期信号Ｖｓｙｎｃ１が発行されてから同期信号Ｖｓｙｎｃ２が発行されるまでの期間を「第１フレーム」と呼ぶこととする。以下、同様に同期信号Ｖｓｙｎｃ２が発行されてから同期信号Ｖｓｙｎｃ３が発行されるまでの期間を「第２フレーム」、同期信号Ｖｓｙｎｃ３が発行されてから同期信号Ｖｓｙｎｃ４が発行されるまでの期間を「第３フレーム」、同期信号Ｖｓｙｎｃ４が発行されてから同期信号Ｖｓｙｎｃ５が発行されるまでの期間を「第４フレーム」と呼ぶこととする。
【００１２】
図２に示す例では、第１フレームにおいて、２回の画像データ生成処理が行われる。これは、図１で説明した３つのアプリのうちの２つのアプリ、例えば表示領域３ａと表示領域３ｂに対応する２つのアプリのそれぞれが、自身が表示する画像を更新するために、画像データ生成処理を行ったことを意味する。尚、表示領域３ｃに対応するアプリは画像を更新せず、画像データ生成処理を行わなかったものとする。
【００１３】
次に第２フレームにおいて、第１フレームで生成された２つの画像データについて画像データ合成処理が実行される。これにより、ディスプレイ２に表示される合成画像データが生成される。ここで生成された合成画像データは、第３フレームにおいてディスプレイ２に表示される。また、第２フレームにおいて画像データ合成処理が実行された後、新たに画像データ生成処理が開始される。図２の例では、２つのアプリによる画像データ生成処理が行われ、生成された画像データは第３フレームにおいて画像データ合成処理によって合成され、第４フレームにおいてディスプレイ２に表示される。このように画像データ生成処理、画像データ合成処理および表示処理は同期信号Ｖｓｙｎｃに基づいて順次パイプライン的に実行される。尚、図２において第３フレームに実行される画像データ処理は１回のみである。このように、１つのアプリだけが画像データを生成した場合であっても、次の第４フレームにおいて画像データ合成処理が実行され、パイプライン処理のスキームは維持される。
【００１４】
図３は、表示装置１のハードウェア構成図である。表示装置１は、プロセッサ１００、プロセッサ２００、メモリ２１０、バス２２０、メモリ３００、メモリ４００、ディスプレイコントローラ５００、ディスプレイ２、バス７００およびバッテリ８００を有する。プロセッサ１００は表示装置１全体の管理やデータ処理を行う。またプロセッサ１００は、メモリ４００等に格納されるアプリなどのコンピュータプログラムを実行することにより、プロセッサ２００を用いてディスプレイ２に表示させる画像の画像データを生成する。プロセッサ１００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）、Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＭＰＵ）、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）等の電子回路部品である。プロセッサ２００はプロセッサ１００の指示に基づき画像データを生成する。プロセッサ１００上で複数のアプリが実行される場合は、プロセッサ２００はアプリ毎に画像データを生成し、生成された画像データをメモリ２１０へ格納する。プロセッサ２００は、ＣＰＵ、ＭＰＵ、ＤＳＰまたはＦＰＧＡ等の電子回路部品であり、画像データの生成処理を実行することからＧｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＧＰＵ）と呼ばれる。本明細書の以降の部分において、便宜上、プロセッサ１００を「ＣＰＵ１００」と呼び、プロセッサ２００を「ＧＰＵ２００」と呼ぶこととする。
【００１５】
メモリ２１０は、ＧＰＵ２００によって生成された画像データを格納するメモリであり、Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＶＲＡＭ）と呼ばれる。ＣＰＵ１００上で複数のアプリが実行される場合、各アプリが実行されることによって生成された画像データはメモリ２１０へ格納される。メモリ３００は、メモリ２１０に格納されたアプリ毎に生成された画像データを合成することによって得られる合成画像データを格納するメモリである。メモリ４００は、ＣＰＵ１００に実行されるアプリ等のコンピュータプログラムを格納する他、ＣＰＵ１００が所定の処理を行うために使用するデータや、ＣＰＵ１００が行った処理の結果であるデータ等を格納する。メモリ２１０、３００及び４００は、Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）等の電子回路部品である。本明細書の以降の部分において、便宜上、メモリ２１０を「第１ＶＲＡＭ２１０」、メモリ３００を「第２ＶＲＡＭ３００」と呼ぶこととする。
【００１６】
ディスプレイコントローラ５００は、第２ＶＲＡＭ３００に格納された合成画像データに基づき、ディスプレイ２上に画像を表示する。尚、ＧＰＵ２００によりディスプレイコントローラ５００の機能が実現されてもよい。バス２２０はＧＰＵ２００と第１ＶＲＡＭ２１０を接続する配線である。本明細書では、ＧＰＵ２００と第１ＶＲＡＭ２１０とバス２２０を併せて「画像データ生成部２５０」と呼ぶこととする。バス７００はＣＰＵ１００、画像データ生成部２５０、第２ＶＲＡＭ３００、メモリ４００、ディスプレイコントローラ５００を接続する配線である。本明細書の以降の部分において、便宜上、バス２２０を「内部バス」と呼び、バス７００を「バス」と呼ぶこととする。バッテリ８００は、表示装置１内の各デバイスに電力の供給を行う。
【００１７】
図４は、ＧＰＵ２００および第１ＶＲＡＭ２１０を含む画像データ生成部２５０の動作モードと、画像データ生成部２５０にて消費される電力等との関係を示す図である。本実施例では、動作モードとして４つのモードを例示する。アクティブモードでは、ＧＰＵ２００及び内部バス２２０に電力およびクロックが供給され、画像データ生成処理が実行される。スタンバイモードは、内部バス２２０には電力およびクロックが供給され、ＧＰＵ２００には電力は供給されるがクロック供給が停止された状態である。この状態ではＧＰＵ２００は画像データ生成の処理を行なわないが、クロックの供給が開始されるとＧＰＵ２００は画像データ生成処理を開始することができる。スリープモードでは、ＧＰＵ２００および内部バス２２０へ、電力は供給されるがクロック供給が停止された状態である。この状態ではＧＰＵ２００は画像データ生成の処理を行っておらず、また第１ＶＲＡＭ２１０へのアクセスも行えない。パワーオフモードでは、ＧＰＵ２００および内部バス２２０への電力供給およびクロック供給が停止される。
【００１８】
尚、図４に示した４つの動作モードは、消費電力が互いに相違する複数の動作モードについて説明するための例示であり、表示装置１はここに示される動作モードの全てを備えていなくてもよい。また各動作モードの呼称についても実施形態を限定する意図はなく、他の呼称が付されてもよい。
【００１９】
図４に示した４つの動作モードのうち、ＧＰＵ２００および第１ＶＲＡＭ２１０を含む画像データ生成部２５０で消費される電力が最も大きいのは、実際に画像データ生成処理が行われるアクティブモードである。よって、表示装置１の消費電力を抑制するためには、ＧＰＵ２００による画像データ生成処理が実行されていない期間は、画像データ生成部２５０をスタンバイモード、スリープモードまたはパワーオフモードで制御することが好ましい。
【００２０】
ここで、画像データ生成処理が行われていない期間に、画像データ生成部２５０をスタンバイモード、スリープモード、パワーオフモードの何れで制御することが好ましいかという点について説明する。各動作モードにおいて消費される電力は、図４に示すように、スタンバイモード、スリープモード、パワーオフモードの順に小さくなる。一方、アクティブモードとの間での遷移に要する時間は、スタンバイモード、スリープモード、パワーオフモードの順に長くなる。そのため、ＧＰＵ２００による画像データ生成処理が実行されていない期間が短時間しかない場合は、その短時間のうちにアクティブモードからスリープモードまたはパワーオフモードへ移行して更にアクティブモードへ復帰することが困難な場合がある。このような場合は、アクティブモードとの間での遷移時間がスリープモードやパワーオフモードに比べて短いスタンバイモードでの制御が好ましい。逆にＧＰＵ２００による画像データ生成処理が実行されていない期間が一定時間以上確保できる場合は、スタンバイモードよりも消費電力を抑制することができるスリープモードやパワーオフモードでの制御が好ましい。
【００２１】
次に、画像データを生成する方式として、画像領域分割処理方式について説明する。例えば図１に示した表示領域３ａに動画像が表示される場合、表示領域３ａに連続的に表示される各画像は同期信号Ｖｓｙｎｃに同期して更新される。しかし、例えば表示領域３ａに表示される画像の画像データ量が大きい場合等は、表示領域３ａに表示される画像データ生成処理がフレーム内に終了しない場合がある。このような場合、表示装置１は、画像データ生成処理に基づく画像データ合成処理および表示処理を行うことができず、一連の処理が所定のタイミングで実行されず、画像更新の滑らかさが損なわれる。
【００２２】
この課題を解決するために、画像領域分割処理方式では、表示領域３ａを複数の部分領域に分割し、フレーム毎に画像データ生成処理を完了させることが可能な数の部分領域について順次画像データ生成処理を行い、画像データが生成された部分領域について画像表示を行う方式である。そして次のフレームにおいて、前のフレームでは画像データが生成されなかった部分領域について、画像データ生成処理が実行される。図５は、表示領域３ａを複数の部分領域に分割した様子の一例を示す図である。図５に示される例では、表示領域３ａは１２個の部分領域に分割される。例えばあるフレームにおいては複数の部分領域のうちの一部の部分領域（例えば第１部分領域から第６部分領域の６つの部分領域）の画像データが生成され、次のフレームにおいて複数の部分領域のうちの他の部分領域（例えば第７部分領域から第１２部分領域の６つの部分領域）の画像データが生成される。
【００２３】
このように、１つのフレーム内において完了させることが可能な範囲で画像データ生成処理を実行することで、画像データ生成処理が完了しない状態でフレームが終了してしまうということを避けることができる。
【００２４】
図６は、画像領域分割処理方式における、ＣＰＵ１００とＧＰＵ２００の処理のタイミングチャートと、画像データ生成部２５０の動作モードとの関係の一例を示す図である。図６において横軸は時間を示し、主に第１フレームにおけるＣＰＵ１００とＧＰＵ２００の処理タイミングが図示されている。まずＣＰＵ１００は、同期信号Ｖｓｙｎｃ１に基づいて画像データ合成処理を実行する。この画像データ合成処理で合成される対象となる画像データは、図示はしないが、第１フレームの一つ前のフレームにおいて生成された画像データである。ＣＰＵ１００が画像データ合成処理を行っている期間はＧＰＵ２００は画像データ生成処理を行っておらず、消費電力を抑制するために画像データ生成部２５０はスリープモードで制御されるものとする。画像データ合成処理が終了するとＣＰＵ１００は、インストラクション生成処理を開始する。図６に示す例では、３回のインストラクション生成処理が示されているが、これは、図５に示した部分領域のうちの３つの部分領域（ここでは第１部分領域、第２部分領域および第３部分領域とする）について、インストラクションを生成する処理が実行されたことを意味する。尚、インストラクションとは、各部分領域に表示される画像の画像データの生成をＧＰＵ２００に指示するものである。例えば、「座標（Ｘａ、Ｙａ）と座標（Ｘｂ、Ｙｂ）を結ぶ直線の画像データの生成」や、「座標（Ｘｃ、Ｙｃ）、座標（Ｘｄ、Ｙｄ）、座標（Ｘｅ、Ｙｅ）を頂点とし、内部の色が黒色である三角形の画像データの生成」等のようなインストラクションが生成される。図６においてまず第１部分領域に関するインストラクションが生成されると、ＣＰＵ１００は生成したインストラクションをＧＰＵ２００へ送信する。尚、図６には示されていないが、ＣＰＵ１００が生成したインストラクションは、ＧＰＵ２００へ送信される前に、ＧＰＵ２００が解読可能なＧＰＵ用インストラクションへ変換される。ＧＰＵ用インストラクションへの変換については図９にて詳述する。画像データ生成部２５０は動作モードをスリープモードからアクティブモードへ切り替えられ、ＧＰＵ２００はＧＰＵ用インストラクションを受信する。そしてＧＰＵ２００はＧＰＵ用インストラクションの内容に従って第１部分領域の画像データを生成する。ＧＰＵ２００は生成した画像データを、第１ＶＲＡＭ２１０に格納する。ＧＰＵ２００の画像データ生成処理が終了すると画像データ生成部２５０は、電力を抑制しかつ次のＧＰＵ用インストラクションを受信した場合には短時間で画像データ生成処理を開始できるよう、スタンバイモードへ移行する。
【００２５】
一方ＣＰＵ１００は、第１部分領域についてのインストラクションを生成した後、第１フレームの残り時間Ｔａが、所定値Ｔｔｈよりも長いか否かを判定する判定処理を実行する。ここでは第１フレームの残り時間Ｔａが所定値Ｔｔｈよりも長いため、ＣＰＵ１００は別の部分領域として第２部分領域についてのインストラクションを生成してＧＰＵ２００へＧＰＵ用インストラクションを送信する。ＣＰＵ１００は、第２部分領域についてのインストラクションを生成した後に、第１フレームの残り時間Ｔｂが所定値Ｔｔｈよりも長いか否かについての判定処理を実行する。ここでは第１フレームの残り時間Ｔｂが所定値Ｔｔｈよりも長いため、ＣＰＵ１００は更に他の部分領域として第３部分領域についてインストラクションの生成を行う。第３部分領域のインストラクション生成が終了した時点での判定処理において、第１フレームの残り時間Ｔｃが所定値Ｔｔｈよりも短いと判定される。この場合、第１フレーム内で更なるインストラクションを生成すると、第１フレームの終了時点でＧＰＵ２００による画像データ生成処理が終了しない可能性がある。そこでＣＰＵ１００は別の部分領域についての更なるインストラクション生成処理を実行しないと判断する。そして、ＧＰＵ２００が第３部分領域のＧＰＵ用インストラクションに従って画像データを生成した後、第１フレーム内では更なる画像データ生成処理を実行することがないことから、画像データ生成部２５０の動作モードはスリープモードに切替えられる。第１フレームで生成された３つの部分領域についての画像データは、第２フレームにおいて合成される。尚、ＧＰＵ２００は、３つの部分領域について画像データ生成処理が終了すると、終了通知をＣＰＵ１００へ送信する。
【００２６】
図６において画像データ生成部２５０は、第１部分領域に対する画像データ生成処理の開始までの期間（期間Ａ）はスリープモードで制御される。一方、各部分領域に対する画像データ生成処理の間の期間（期間Ｂおよび期間Ｃ）は、画像データ生成部２５０は次の部分領域の画像データ生成処理に備えてスタンバイモードで制御される。図４にて説明したように、消費電力を抑制する観点に基づけば、画像データ生成部２５０をスタンバイモードで制御するよりもスリープモードで制御する方が好ましい。そこで、画像データ生成部２５０がスタンバイモードで制御される期間Ｂおよび期間Ｃを圧縮することにより、画像データ生成部２５０がスリープモードで制御される期間Ａを拡大させる方法について、以下に説明する。
【００２７】
図７は、画像データ生成部２５０がスリープモードで制御される期間を拡大するための方法を説明する図である。図７において横軸は時間を示し、主に第１フレームにおけるＣＰＵ１００とＧＰＵ２００の処理タイミングを例示する。ＣＰＵ１００は、同期信号Ｖｓｙｎｃ１に基づいて画像データ合成処理を実行した後、複数の部分領域（図７の例では３つの部分領域）についてインストラクションを生成して保持し、複数の部分領域についてのインストラクション生成処理が終了した後に、保持していた複数の部分領域についてのＧＰＵ用インストラクションをＧＰＵ２００へ送信する。言い換えればＣＰＵ１００は、１つの部分領域についてインストラクションを生成する毎にＧＰＵ用インストラクションをＧＰＵ２００へ送信するのではなく、複数の領域についてのインストラクション生成処理が終了した後にまとめてＧＰＵ用インストラクションをＧＰＵ２００へ送信する。ＧＰＵ２００はＣＰＵ１００からＧＰＵ用インストラクション受信して画像データ生成処理を開始して、複数の部分領域についての画像データを生成する。
【００２８】
この方式では、複数の部分領域に対する画像データ生成処理の隙間の期間（図６における期間Ｂおよび期間Ｃ）を圧縮することができ、図７に示す期間Ｅを、図６に示した期間Ａに比べて長く確保することができる。よって、期間Ｅにおいて画像データ生成部２５０をスリープモードで制御することにより、消費電力を抑制することが可能となる。尚、本実施例ではＧＰＵ２００が画像データ生成処理を開始するまでの期間、画像データ生成部２５０がスリープモードで制御される例を示したが、スタンバイモードよりも消費電力の低い他の動作モード、例えばパワーオフモードで画像データ生成部２５０が制御されてもよい。
【００２９】
次に、各フレーム内で処理される部分領域の数の定め方について説明する。各フレーム内でインストラクションが生成される部分領域の数、すなわち各フレームに対応して画像データが生成される部分領域の数は、各フレームの前のフレームでの画像データ生成処理の結果に基づくフィードバック制御により設定される。例えば図７では３つの部分領域についてＣＰＵ１００がインストラクションを生成し、当該３つの部分領域についてＧＰＵ２００が画像データ生成処理を実行する。しかし図７に示す例では、ＧＰＵ２００による３つの部分領域についての画像データ生成処理は第１フレームの期間内で完了せず、第２フレームが開始されてから画像データ生成処理が完了している。このことは、第２フレームの開始タイミングである同期信号Ｖｓｙｎｃ２の発行タイミングと、ＧＰＵ２００が画像データ生成処理を終了したことをＣＰＵ１００へ知らせる終了通知の発行タイミングにより判断することができる。同期信号Ｖｓｙｎｃ２が発行された時点においてＧＰＵ２００による画像データ生成処理が終了していない場合は、合成処理の対象となる画像データの第１ＶＲＡＭ２１０への格納が完了していないため、合成処理部１７０による画像データ合成処理は実行されない。そのためディスプレイ２に表示される画像の滑らかさが損なわれる。
【００３０】
このような問題を解決するため、ＣＰＵ１００は、フレーム内に画像データ生成処理が完了しなかった場合は、次のフレームではインストラクションを生成する部分領域の数を減少させる。図７では第１フレームにおいて３つの部分領域について画像データ生成処理が行われ、第１フレーム内で画像データ生成処理が終了しない例を示した。図８は、インストラクションを生成する部分領域の数を２つに減らした場合について、主に第３フレームにおけるＣＰＵ１００とＧＰＵ２００の処理タイミングの一例を示す図である。ＣＰＵ１００は、第３フレームでインストラクションを生成する部分領域の数を２つに設定し、２つの部分領域についてインストラクションを生成した時点でインストラクションの生成を終了し、ＧＰＵ２００へＧＰＵ用インストラクションを送信する。２つの部分領域についてＧＰＵ２００が画像データを生成し終えた時点では、第４フレームの開始を示す同期信号Ｖｓｙｎｃ４は未だ発行されておらず、第３フレーム内に画像データ生成処理を完了させることができていることが分かる。そしてこの場合は、第３フレームにおいて生成された画像データについては第４フレームにて画像データ合成処理が実行される。
【００３１】
このようにＣＰＵ１００は、あるフレームにおいて複数の部分領域についてインストラクションを生成し、当該複数の部分領域についての画像データ生成処理がフレーム内で完了したか否かの判断に基づいて、次のフレームでインストラクションを生成する部分領域の数を制御する。
【００３２】
図９は、第１実施例におけるＣＰＵ１００の機能ブロック図である。ＣＰＵ１００は、メモリ４００又はＣＰＵ１００がアクセス可能な他の記憶装置に格納された所定のコンピュータプログラムを実行することにより、図９に示す各機能を実現する。ＣＰＵ１００は、インストラクション生成部１１０、ライブラリ１２０、ドライバ１３０、タイマ１４０、時間差検出部１５０、フィードバック制御部１６０、および合成処理部１７０として機能する。
【００３３】
インストラクション生成部１１０は、各フレーム内でインストラクションを生成する部分領域の数についてフィードバック制御部１６０から通知を受け、通知された数の部分領域についてインストラクションを生成し、ライブラリ１２０へ送信する。またインストラクション生成部１１０は、合成処理部１７０からインストラクション生成処理の開始命令を受信した後に、インストラクション生成処理を開始する。またインストラクション生成部１１０は、１つのフレーム内でインストラクションを生成した部分領域の数を合成処理部１７０へ通知する。インストラクション生成部１１０は例えばアプリ層により実現される。
【００３４】
ライブラリ１２０は、インストラクション生成部１１０により生成されたインストラクションに基づきＧＰＵ用インストラクションを生成する。インストラクション生成部１１０により生成されたアプリ層レベルでのインストラクションは、そのままではＧＰＵ２００が認識することはできない。そのためライブラリ１２０は、インストラクション生成部１１０により生成されたインストラクションをＧＰＵ２００が認識できるＧＰＵ用インストラクションに変換する。ライブラリ１２０は生成されたＧＰＵ用インストラクションをドライバ１３０へ送信する。ライブラリ１２０は例えばミドル層により実現されるが、アプリ層またはオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；ＯＳ）層により実現されてもよい。
【００３５】
ドライバ１３０は、送信部１３１と受信部１３２と動作モード制御部１３３として機能する。送信部１３１は、ライブラリ１２０から受信したＧＰＵ用インストラクションをＧＰＵ２００へ送信する。送信部１３１はＧＰＵ用インストラクションを一時格納するバッファを有し、バッファに格納されたＧＰＵ用インストラクションを複数回に分けてＧＰＵ２００へ送信してもよい。受信部１３２は、ＧＰＵ２００から、ＧＰＵ用インストラクションに基づく画像データ生成処理が終了したことを示す終了通知を受信する。受信部１３２は受信した終了通知に基づき、フレーム内での全ての画像データ生成処理が完了したことを示す完了通知を時間差検出部１５０および合成処理部１７０に送信する。動作モード制御部１３３は画像データ生成部２５０の動作モードを制御する。例えば送信部１３１から送信されるインストラクションに基づいてＧＰＵ２００が画像データを生成する際は、画像データ生成部２５０をアクティブモードで制御し、全ての画像データ生成処理が終了した後は画像データ生成部２５０をスリープモードで制御する。ドライバ１３０は例えばＯＳ層により実現される。
【００３６】
タイマ１４０は所定の時間間隔で同期信号Ｖｓｙｎｃを生成し、時間差検出部１５０および合成処理部１７０へ送信する。時間差検出部１５０は、ドライバ１３０の受信部１３２から受信した完了通知と、タイマ１４０から受信した同期信号Ｖｓｙｎｃとに基づき、時間差信号をフィードバック制御部１６０へ送信する。時間差信号には、時間差検出部１５０が完了通知を受信した時刻と同期信号Ｖｓｙｎｃを受信した時刻の差分を示す時間差情報、または時間差検出部１５０が完了通知と同期信号Ｖｓｙｎｃのどちらを先に受信したかを示す順序情報の少なくとも一方が含まれる。タイマ１４０および時間差検出部１５０は例えばＯＳ層により実現される。
【００３７】
フィードバック制御部１６０は、時間差検出部１５０から受信した時間差信号に基づき、次のフレームでインストラクションの生成対象となる部分領域の数を設定し、インストラクション生成部１１０へ通知する。合成処理部１７０は、ドライバ１３０の受信部１３２から完了通知を受信した後にタイマ１４０から同期信号Ｖｓｙｎｃを受信すると、第１ＶＲＡＭ２１０に格納された画像データに基づき画像データ合成処理を行い、生成されたした合成画像データを第２ＶＲＡＭ３００に格納する。また合成処理部１７０は、画像データ合成処理が終了した後、インストラクション生成処理の開始命令をインストラクション生成部１１０に対して送信する。フィードバック制御部１６０および合成処理部１７０は例えばミドル層により実現されるが、アプリ層またはＯＳ層により実現されてもよい。
【００３８】
図１０は、第１実施例におけるＣＰＵ１００が実行するインストラクション生成処理等のフローチャートである。ＣＰＵ１００による処理は処理１０００により開始され、処理１００１においてフィードバック制御部１６０がインストラクション生成処理の対象となる部分領域の数を設定し、設定された部分領域数をインストラクション生成部１１０へ通知する。フィードバック制御部１６０による部分領域数の設定方法の詳細は後述する。処理１００２において合成処理部１７０が、第１ＶＲＡＭ２１０に格納されている画像データに基づき画像データ合成処理を実行し、画像データ合成処理が終了した後にインストラクション生成処理の開始命令をインストラクション生成部１１０へ送信する。尚、処理１００２にて生成された合成画像データは、第２ＶＲＡＭ３００に格納される。処理１００３においてインストラクション生成部１１０は、合成処理部１７０から受信したインストラクション生成処理の開始命令に基づき、インストラクション生成処理を開始する。ここでインストラクション生成部１１０は、フィードバック制御部１６０が設定した部分領域数に相当する部分領域についてインストラクションを生成する。処理１００４においてライブラリ１２０は、インストラクション生成部１１０によって生成されたインストラクションに基づいて、ＧＰＵ用インストラクションを生成してドライバ１３０へ送信する。１００５においてドライバ１３０は、ＧＰＵ用インストラクションを送信部１３１を介してＧＰＵ２００へ送信する。処理１００６においてドライバ１３０は、ＧＰＵ２００から画像データ生成処理の終了通知を受信部１３２にて受信し、フレーム内での画像データ生成処理が完了した旨の完了通知を合成処理部１７０および時間差検出部１５０へ送信する。処理１００７においてドライバ１３０は、動作モード制御部１３３を用いて画像データ生成部２５０の動作モードをスリープモードへ変更する。処理１００８において時間差検出部１５０は、同期信号Ｖｓｙｎｃの受信時刻と完了通知の受信時刻に基づいて時間差信号を生成してフィードバック制御部１６０へ送信する。その後処理は処理１００１へ戻り、フィードバック制御部１６０が時間差信号に基づいてインストラクション生成処理の対象となる部分領域の数を設定する。
【００３９】
図１１は、第１実施例においてフィードバック制御部１６０により実行される、インストラクション生成処理の対象となる部分領域の数の設定処理のフローチャートである。        
【００４０】
フィードバック制御部１６０による処理は処理１１００により開始され、処理１１０１においてフィードバック制御部１６０は、インストラクション生成処理の対象となる部分領域の数として初期値を設定する。この初期値は、フィードバック制御部１６０が部分領域数を設定する際に、前のフレームについて画像データ生成処理が行われていない等、時間差検出部１５０からの時間差信号を受信していない場合に設定する値である。初期値は例えば１である。処理１１０２においてフィードバック制御部１６０は、設定した部分領域の数をインストラクション生成部１１０へ通知する。処理１１０３においてフィードバック制御部１６０は、インストラクション生成部１１０が実際にインストラクションの生成処理を行った部分領域の数の通知を受信する。例えばインストラクション生成部１１０が、フィードバック制御部１６０が設定した部分領域の数よりも少ない数の部分領域についてインストラクションを生成して処理を終了する場合がある。このような場合を考慮し、フィードバック制御部１６０は、実際にインストラクション生成処理が実行された部分領域の数の情報をインストラクション生成部１１０から受信する。処理１１０４においてフィードバック制御部１６０は、時間差検出部１５０から時間差信号を受信する。処理１１０５においてフィードバック制御部１６０は、設定した部分領域の数と、実際にインストラクション生成部１１０がインストラクションを生成した部分領域の数とが一致しているか否かを判定する。設定した部分領域の数と実際にインストラクションが生成された部分領域の数とが一致しない場合、すなわち設定した部分領域の数よりも実際にインストラクションが生成された部分領域の数が小さい場合は処理１１０１へ戻る。設定した部分領域の数と実際にインストラクションが生成された部分領域の数とが一致する場合は、処理１１０６においてフィードバック制御部１６０は、時間差信号と、設定された部分領域の数とに基づき、次のフレームでインストラクションが生成される部分領域の数を設定し、処理１１０２へ戻る。
【００４１】
図１２は、第１実施例におけるインストラクション生成部１１０によるインストラクション生成処理に関するフローチャートである。インストラクション生成部１１０による処理は処理１２００により開始され、処理１２０１においてインストラクション生成部１１０は、フィードバック制御部１６０から設定された部分領域の数を取得する。処理１２０２においてインストラクション生成部１１０は、合成処理部１７０からインストラクション生成処理の開始命令を受信する。処理１２０３においてインストラクション生成部１１０は、１つの部分領域についてインストラクションを生成してライブラリ１２０へ送信する。処理１２０４においてインストラクション生成部１１０は、インストラクションが生成された部分領域の数が、フィードバック制御部１６０が設定した部分領域の数と等しいか否かを判定する。インストラクションが生成された部分領域の数が、フィードバック制御部１６０が設定した部分領域の数と等しいと判定された場合は処理１２０５へ進み、等しくないと判定された場合は処理１２０３へ戻る。処理１２０５においてインストラクション生成部１１０は、フィードバック制御部１６０が設定した数の部分領域についてインストラクションの生成処理が実行されたことを示すインストラクション生成処理の終了通知をライブラリ１２０へ送信する。処理１２０６においてインストラクション生成部１１０は、フレーム内の全ての処理が終了し、当該フレーム内では他の処理を実行しないことを示すフレーム内処理終了通知をライブラリ１２０へ送信し、処理１２０７において処理が終了する。
【００４２】
図１３は、第１実施例におけるライブラリ１２０によるＧＰＵ用インストラクション生成処理のフローチャートである。ライブラリ１２０による処理は処理１３００により開始され、処理１３０１においてライブラリ１２０は、インストラクション生成部１１０からインストラクションを受信する。処理１３０２においてライブラリ１２０は、受信したインストラクションに基づいてＧＰＵ用インストラクションを生成する。生成されたＧＰＵ用インストラクションはライブラリ１２０によって保持される。処理１３０３においてライブラリ１２０は、インストラクション生成処理の終了通知をインストラクション生成部１１０から受信する。ライブラリ１２０は、このインストラクション生成処理の終了通知を受信することにより、フィードバック制御部１６０が設定した数の部分領域についてインストラクション生成処理が終了したことを認識することができる。そして処理１３０４においてライブラリ１２０は、ＧＰＵ用インストラクションをドライバ１３０へ送信し、またＧＰＵ用インストラクションのＧＰＵ２００への転送命令をドライバ１３０へ送信する。処理１３０５においてライブラリ１２０は、インストラクション生成部１１０からフレーム内処理完了通知を受信し、処理１３０６において処理が終了する。
【００４３】
このようにライブラリ１２０は、フィードバック制御部１６０が設定した数の部分領域についてインストラクションの生成処理が終了したことを示す終了通知を受信するまで、生成されたＧＰＵ用インストラクションを保持する。言い換えれば、フィードバック制御部１６０が設定した数の部分領域についてインストラクションの生成処理が完了するまでは、生成されたＧＰＵ用インストラクションはドライバ１３０には送信されず、またＧＰＵ２００も画像データ生成処理を開始しない。
【００４４】
図１４は、第１実施例におけるドライバ１３０によるＧＰＵ用インストラクションの送信処理等のフローチャートである。ドライバ１３０による処理は処理１４００により開始され、処理１４０１においてドライバ１３０は、ＧＰＵ用インストラクションおよびＧＰＵ用インストラクションのＧＰＵ２００への転送命令をライブラリ１２０より受信する。処理１４０２において動作モード制御部１３３は、画像データ処理部２５０へ起動命令を送信する。この命令により、画像データ処理部２５０はアクティブモードでの動作を開始する。処理１４０３において送信部１３１は、ＧＰＵ用インストラクションをＧＰＵ２００へ送信する。この際、ＧＰＵ２００の有するデータバッファにＧＰＵ用インストラクションの全てを格納することができない場合は、送信部１３１はＧＰＵ２００のデータバッファの容量に合わせてＧＰＵ用インストラクションを複数回に分けてＧＰＵ２００へ送信してもよい。処理１４０４において受信部１３２は、ＧＰＵ２００から画像データ生成処理の終了通知を受信する。処理１４０５においてドライバ１３０は、未だＧＰＵ２００へ送信していないＧＰＵ用インストラクションがある場合は残余のＧＰＵ用インストラクションをＧＰＵ２００へ送信し、残余のＧＰＵ用インストラクションがない場合は画像データ生成処理の完了通知を合成処理部１７０および時間差検出部１５０へ送信する。処理１４０６において動作モード制御部１３３は、画像データ生成部２５０の動作モードをスリープモードに変更し、処理１４０７において処理が終了する。
【００４５】
図１５は、第１実施例における合成処理部１７０による画像データ合成処理のフローチャートである。合成処理部１７０による処理は処理１５０１により開始され、処理１５０１において合成処理部１７０が、ドライバ１３０からの画像データ生成処理の完了通知と、タイマ１４０からの同期信号Ｖｓｙｎｃとを受信する。処理１５０２において合成処理部１７０が、第１ＶＲＡＭ２１０に格納された画像データに基づいて画像データ合成処理を実行し、合成画像データを生成する。例えば第１フレーム内で画像データ生成処理が完了しなかった場合は、合成処理部１７０は、第２フレームの開始タイミングである同期信号Ｖｓｙｎｃ２よりも後に完了通知を受信することになる。このような場合は、合成処理部１７０は第２フレームでは画像データ合成処理は実行せず、第３フレームの開始タイミングである同期信号Ｖｓｙｎｃ３を受けた後に画像データ合成処理を実行する。生成された合成画像データは第２ＶＲＡＭ３００に格納される。処理１５０３において合成処理部１７０は、画像データ合成処理の終了後に、インストラクション生成処理の開始命令を発行する。インストラクション生成処理の開始命令はインストラクション生成部１１０へ送信される。その後処理１５０４において処理が終了する。
【００４６】
このように、フィードバック制御部１６０が設定した部分領域の数に基づいてインストラクション生成部１１０が複数の部分領域についてインストラクションを生成し、複数の部分領域についてのインストラクションが生成された後にＧＰＵ２００が画像データ生成処理を開始する。これにより、ＧＰＵ２００が画像データ生成処理を開始してから、複数の部分領域についての全ての画像データを生成し終えるまでの時間を短縮することができ、画像データ生成部２５０をスリープモードで動作させることができる期間を長く確保することができ、消費電力を抑制することができる。
【００４７】
また、複数の部分領域についての画像データ生成処理がフレーム内に終了しなかった場合は、フィードバック制御部１６０が時間差検出部１５０から受信する時間差信号に基づいて、次のフレームでインストラクションが生成される部分領域の数が調整される。これにより、フレーム内で画像データ生成処理が終了しないことの発生確率を抑制することができる。
【００４８】
ここまで第１実施例について説明した。第１実施例ではインストラクション生成部１１０は、各部分領域についてのインストラクション生成処理が終了してもインストラクション生成処理の終了通知を発行しない。そしてインストラクション生成部１１０は、フィードバック制御部１６０が設定した数の部分領域についてインストラクションを生成した後にインストラクション生成処理の終了通知をライブラリ１２０に通知する。これにより、複数の部分領域についてのインストラクションがまとめてドライバ１３０へ、更にはＧＰＵ２００へ送信される。
【００４９】
次に第１実施例の第１変形例として、インストラクション生成部１１０が、各部分領域についてのインストラクション生成処理が終了する度にインストラクション生成処理の終了通知を発行する例について説明する。
【００５０】
図１６は、第１実施例の第１変形例におけるインストラクション生成部１１０によるインストラクション生成処理のフローチャートである。図１２で説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。尚、第１実施例の第１変形例におけるドライバ１３０、フィードバック制御部１６０および合成処理部１７０による処理のフローチャートは、それぞれ図１１、図１４および図１５に示したフローチャートと同じである。
【００５１】
処理１２００において処理が開始された後、インストラクション生成部１１０は、処理１２０１においてフィードバック制御部１６０が設定した部分領域の数を取得し、また処理１２０２においてインストラクション生成処理の開始命令を受信し、処理１２０３において１つの部分領域についてインストラクションを生成してライブラリ１２０へ送信する。そして処理１２０３の後、処理１２０８においてインストラクション生成部１１０は、１つの部分領域についてのインストラクション生成処理の終了通知をライブラリ１２０へ送信する。この処理が図１２に示した処理とは相違する処理である。その後、処理１２０４においてインストラクション生成部１１０は、インストラクションが生成された部分領域の数が、フィードバック制御部１６０が設定した部分領域の数と等しいか否かを判定し、判定結果に基づいて、処理１２０３へ戻るか、または処理１２０６へ進む。処理１２０６においてインストラクション生成部１１０は、フレーム内の処理が全て終了し、当該フレーム内では他の処理を実行しないことを示すフレーム内処理完了通知をライブラリ１２０へ送信し、処理１２０７において処理が終了する。
【００５２】
図１７は第１実施例の第１変形例におけるライブラリ１２０のＧＰＵ用インストラクション生成処理のフローチャートである。図１３で説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。処理１３００において処理が開始された後、ライブラリ１２０は処理１３０１においてインストラクションを受信し、処理１３０２においてＧＰＵ用インストラクションを生成する。生成されたＧＰＵ用インストラクションはライブラリ１２０によって保持される。更に処理１３０７においてライブラリ１２０は、インストラクション生成部１１０から１つの部分領域についてのインストラクション生成処理の終了通知を受信する。処理１３０１、処理１３０２および処理１３０７はループを形成し、フレーム内処理完了通知を受信するまで繰り返し実行される。尚ライブラリ１２０は、処理１３０６においてインストラクション生成処理の終了通知を受信してもＧＰＵ用インストラクションのドライバ１３０への送信は行わず、ＧＰＵ用インストラクションはライブラリ１２０にて保持される。その後、処理１３０５においてライブラリ１２０は、インストラクション生成部１１０からフレーム内処理完了通知を受信する。そして処理１３０４においてライブラリ１２０は、処理１３０７において受信したフレーム内処理完了通知に基づき、それまで保持していたＧＰＵ用インストラクションをドライバ１３０へ送信し、またＧＰＵ用インストラクションのＧＰＵ２００へ転送命令をドライバ１３０へ送信する。
【００５３】
その後ドライバ１３０は、図１４にて説明したように、ライブラリ１２０から送信されたＧＰＵ用インストラクションとＧＰＵ用インストラクションのＧＰＵ２００へ転送命令を受信し、ＧＰＵ用インストラクションをＧＰＵ２００へ送信する。そしてＧＰＵ用インストラクションを受信したＧＰＵ２００は画像データ生成処理を実行する。
【００５４】
このように第１実施例の第１変形例では、インストラクション生成部１１０は、フィードバック制御部１６０が設定した数の部分領域について全てのインストラクション生成処理が終了した際に終了通知を送信するのではなく、１つの部分領域についてのインストラクション生成処理が終了する度に終了通知を送信する。ライブラリ１２０は、インストラクション生成処理の終了通知を受けてもＧＰＵ用インストラクションをドライバ１３０へ送信せずに保持し、インストラクション生成部１１０がフレーム内処理完了通知を発行した場合に、ＧＰＵ用インストラクションをドライバ１３０へ送信する。これにより、複数の部分領域についてのＧＰＵ用インストラクションを、部分領域毎にＧＰＵ２００へ送信することなく、複数の部分領域についてのインストラクションが生成されるのを待ってからドライバ１３０へ送信することができる。
【００５５】
次に、第１実施例の第２変形例について説明する。第１実施例および第１実施例の第１変形例では、ライブラリ１２０が、設定された数の部分領域についてのＧＰＵ用インストラクションを生成してからドライバ１３０へ送信した。これに対して第１実施例の第２変形例では、ライブラリ１２０は生成したＧＰＵ用インストラクションを、部分領域毎にドライバ１３０へ送信する。そしてドライバ１３０が、設定された数の部分領域のＧＰＵ用インストラクションを保持してからＧＰＵ２００へ送信する。
【００５６】
図１８は、第１実施例の第２変形例におけるライブラリ１２０によるＧＰＵ用インストラクション生成処理のフローチャートである。図１３または図１７にて説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。尚、第１実施例の第２変形例におけるインストラクション生成部１１０、フィードバック制御部１６０および合成処理部１７０による処理のフローチャートは、それぞれ図１６、図１１および図１５に示したフローチャートと同じである。
【００５７】
処理１３００においてライブラリ１２０による処理が開始された後、ライブラリ１２０は処理１３０１においてインストラクションを受信し、処理１３０２においてＧＰＵ用インストラクションを生成する。生成されたＧＰＵ用インストラクションはライブラリ１２０によって保持される。更に処理１３０７においてライブラリ１２０は、インストラクション生成部１１０から１つの部分領域についてのインストラクション生成処理の終了通知を受信する。本変形例ではライブラリ１２０は、処理１３０７において１つの部分領域についてインストラクション生成処理の終了通知を受信したことに基づき、処理１３０８においてライブラリ１２０は、ＧＰＵ用インストラクションをドライバ１３０へ送信する。つまりライブラリ１２０は、複数の部分領域についてのＧＰＵ用インストラクションをまとめて保持することなく、部分領域毎にＧＰＵ用インストラクションをドライバ１３０へ送信する。処理１３０１、処理１３０２、処理１３０７および処理１３０８はループを形成し、フィードバック制御部１６０によって設定された数の部分領域についてのＧＰＵ用インストラクションをドライバ１３０へ送信するまで繰り返し実行される。その後、処理１３０５においてライブラリ１２０は、フレーム内処理完了通知をインストラクション生成部１１０から受信する。但しライブラリ１２０は、１つの部分領域についてのインストラクション生成処理の終了通知を受信する度に、ＧＰＵ用インストラクションをドライバ１３０へ送信しているため、処理１３０５においてフレーム内処理完了通知を受信した時点では、原則としてＧＰＵ用インストラクションを保持していない状態である。そのためライブラリ１２０は、フレーム内処理完了通知を受信してもＧＰＵ用インストラクションのドライバ１３０への送信を行わず、処理１３０９においてＧＰＵ用インストラクションのＧＰＵ２００への転送命令を送信し、処理１３０６にて処理が終了する。
【００５８】
図１９は、第１実施例の第２変形例におけるドライバ１３０のＧＰＵ用インストラクションの送信処理等のフローチャートである。図１４にて説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。図１８にて説明したようにライブラリ１２０は、部分領域毎にＧＰＵ用インストラクションを送信する。そしてドライバ１３０は、処理１４００にて処理が開始された後、処理１４０８において、ライブラリ１２０から送信されたＧＰＵ用インストラクションを部分領域毎に受信して順次保存する。処理１４０８は、設定された数の部分領域の全てについて、ドライバ１３０がＧＰＵ用インストラクションを受信するまで繰り返し実行される。そして処理１４０９においてドライバ１３０は、ＧＰＵ用インストラクションのＧＰＵ２００への転送命令をライブラリ１２０から受信し、処理１４０２においてＧＰＵ２００へ起動命令を送信した後、処理１４０３において保存しているＧＰＵ用インストラクションをＧＰＵ２００へ送信する。以降の処理は、図１４にて説明した処理と同様である。
【００５９】
これにより、設定された数の部分領域についてのＧＰＵ用インストラクションの全てがドライバ１３０に保持された後に、ＧＰＵ用インストラクションがドライバ１３０へ送信される。
【００６０】
ここまで、２つの変形例を含めて第１実施例を説明した。第１実施例では、フィードバック制御部１６０が設定した数の部分領域についての全てのインストラクション（ＧＰＵ用インストラクション）が生成されるまでは、ＧＰＵ２００による画像データ生成処理は開始されない。そのため、ＧＰＵ２００による画像データ生成処理が開始されてから設定数の部分領域についての画像データ生成処理が完了するまでの期間を圧縮することができる。また画像データ生成部２５０をスリープモードで制御し得る期間を確保することができる。
【００６１】
次に、第１実施例におけるフィードバック制御部１６０による部分領域数の設定方法についてのアルゴリズム例を説明する。ここに挙げるアルゴリズム例はあくまでも一例であり、他のアルゴリズムを用いて部分領域数を設定することも可能である。
【００６２】
図２０は、第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の一例を示す。図２０の（ａ）は、フィードバック制御部１６０による部分領域数の設定方法の第１のアルゴリズム例を示す図である。図２０の（ａ）において横軸は時間を、縦軸は設定された部分領域の数（設定数）を示す。フィードバック制御部１６０はまず部分領域の数の設定値として初期値、例えば１を設定し、フレーム毎に設定値を定数、例えば１ずつ増加させる。そして、あるフレームにおいて設定された数の部分領域についての全ての画像データ生成処理がフレーム内で完了しなかった場合は、ドライバ１３０は設定数を初期値に戻す。そして、再度フレーム毎に設定数を定数ずつ増加させる。
【００６３】
このような設定方法を実現するためのフィードバック制御部１６０による部分領域数の設定処理のフローチャートを図２０の（ｂ）に示す。フィードバック制御部１６０による処理は処理１６００により開始され、処理１６０１においてフィードバック制御部１６０は、部分領域の数を初期値に設定する。処理１６０２においてフィードバック制御部１６０は、時間差検出部１５０からの時間差信号に基づき、画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたか否かを判定する。処理１６０２において画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたと判定された場合は、処理１６０３へ移行し、フィードバック制御部１６０は部分領域の数を所定数だけ増加させて設定して処理１６０２へ戻る。また処理１６０２において画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも後に受信されたと判定された場合は、処理１６０１へ戻る。
【００６４】
図２１は、第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の他の一例を示す図である。図２１（ａ）は、フィードバック制御部１６０による部分領域数の設定方法の別のアルゴリズム例を示す図である。図２１の（ａ）に示すように、フィードバック制御部１６０はまず部分領域の数の設定値を初期値、例えば１に設定し、フレーム毎に設定数を定数、例えば１ずつ増加させる。そして、設定された数の部分領域についての全ての画像データ生成処理がフレーム内で完了しなかった場合は、ドライバ１３０は部分領域の数の設定値を半分の値に設定する。また、画像データ生成処理が完了しないフレームが２回連続で発生した場合は、設定値を初期値に戻す。そして、再度フレーム毎に設定数を定数ずつ増加させる。
【００６５】
このような設定数の定め方を実現するためのフィードバック制御部１６０による処理のフローチャートを図２１の（ｂ）に示す。図２０の（ｂ）にて説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。処理１６０２において画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも後に受信されたと判定された場合は、処理１６０４へ移行する。処理１６０４においてフィードバック制御部１６０は、一つ前のフレームにおいて画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたか否かを判定する。処理１６０４において一つ前のフレームでも画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも後に受信されたと判定された場合は、処理１６０１へ戻る。また処理１６０４において一つ前のフレームでは画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたと判定された場合は、処理１６０５へ移行し、フィードバック制御部１６０は部分領域の設定数を半分の値に設定して処理１６０２へ戻る。
【００６６】
図２２は、第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の更に他の一例を示す図である。図２２の（ａ）は、フィードバック制御部１６０による部分領域数の設定方法の更に別のアルゴリズム例を示す図である。図２２の（ａ）に示すように、フィードバック制御部１６０はまず部分領域の数を初期値、例えば１に設定する。そしてフィードバック制御部１６０は、フレーム毎に設定数を指数的に増加させる。例えばフィードバック制御部１６０は、フレーム毎に設定数を２倍に増加させる。設定数がある閾値に達すると、フィードバック制御部１６０は設定数をフレーム毎に定数ずつ、例えば１ずつ増加させる。全ての画像データ生成処理がフレーム内で完了しなかった場合は、フィードバック制御部１６０は部分領域の数を半分の値に設定する。また、全ての画像データ生成処理が完了しないフレームが２回連続で発生した場合は、設定値を初期値に戻す。
【００６７】
このようなアルゴリズムを実現するためのフィードバック制御部１６０の処理フローチャートを図２２の（ｂ）に示す。図２０の（ｂ）または図２１の（ｂ）にて説明した処理内容と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。処理１６０２において画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたと判定された場合は、処理１６０６へ移行する。処理１６０６においてフィードバック制御部１６０は、設定数が所定の閾値以上であるか否かを判定する。処理１６０６において設定数が所定の閾値以上であると判定された場合は処理１６０７へ移行し、設定数が所定の閾値以下であると判定された場合は処理１６０８へ移行する。処理１６０７においてフィードバック制御部１６０は、部分領域の数の設定を１だけ増加させて処理１６０２へ戻る。また処理１６０８においてフィードバック制御部１６０は、部分領域の数の設定を２倍に増加させて処理１６０２へ戻る。
【００６８】
処理１６０２から処理１６０４へと移行した場合であって、処理１６０４において一つ前のフレームにおいて画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも後に受信されたと判定された場合は、処理１６０９においてフィードバック制御部１６０は、閾値を半分の値に変更して処理１６０１へ戻る。また処理１６０４において一つ前のフレームでは画像データ生成処理の完了通知が所定の同期信号Ｖｓｙｎｃよりも先に受信されたと判定された場合は、処理１６０５へ移行し、フィードバック制御部１６０は部分領域数を半分の値に設定して処理１６０２へ戻る。
【００６９】
図２３は、第１実施例における１つのフレームでインストラクションが生成される部分領域の数の設定方法の更に他の一例を示す図である。図２３の（ａ）は、フィードバック制御部１６０による部分領域数の設定方法の更に別のアルゴリズム例を示す図である。このアルゴルズムによれば、画像データ生成処理の完了通知が発行された時点でのフレームの残り時間Ｔに基づいて部分領域の数が設定される。以下の説明において、ｔ１、ｔ２、ｔ３およびｔ４は時間を表し、ｔ１、ｔ２およびｔ３は正の値であり、ｔ１が一番長い時間であり、ｔ３が一番短い時間であるものとする。また、ｔ４は負の値であるものとする。またフレームの残り時間Ｔが負の値であるとは、画像データ生成処理が、フレーム内に完了せず次のフレームが開始されてから完了したことを意味する。
【００７０】
図２３の（ｂ）に示すように、フィードバック制御部１６０はまず処理１６０１において部分領域の数を初期値、例えば１に設定する。処理１６１０においてフィードバック制御部１６０は時間差検出部１５０から時間差情報を含む時間差信号を取得する。この時間差情報は、完了通知と所定の同期信号との時間差Ｔに関する情報である。フレームの残り時間Ｔがｔ１以上である場合は、処理１６１１においてフィードバック制御部１６０は設定数を指数的に増加させる。Ｔがｔ１よりも短く、ｔ２以上である場合は、処理１６１２においてフィードバック制御部１６０は設定数を１だけ増加させる。Ｔがｔ２より短くｔ３以上である場合は、処理１６１３においてフィードバック制御部１６０は設定数を変更せずに維持する。Ｔがｔ３よりも短い正の値である場合は、処理１６１４においてフィードバック制御部１６０は設定数を１だけ減少させる。Ｔが負の値であってｔ４以上である場合は、処理１６１５においてフィードバック制御部１６０は設定数を半分の値に減少させる。Ｔがｔ４以下である場合は、フィードバック制御部１６０は処理１６０１へ戻って設定値を初期値に設定する。
【００７１】
＜第２実施例＞
第１実施例およびその変形例においては、一つ前のフレームにおいて設定された数の部分領域について全ての画像データ生成処理がフレーム内に完了したか否かに基づいて、次のフレームにおいて処理する部分領域の数を定める方式について説明した。この方式では、インストラクション生成部１１０は、フィードバック制御部１６０が設定した数に基づいてインストラクションの生成処理を実行した。これに対して第２実施例では、ＣＰＵ１００は一つの部分領域についてインストラクションの生成処理が終了すると、フレームの残り時間に基づいて更に別の部分領域についてインストラクションの生成処理を実行するか否かを判定する。そして、残り時間が所定時間よりも短い場合は、他の部分領域についての更なるインストラクションの生成処理は実行されない。また、複数の部分領域について生成されたＧＰＵ用インストラクションはＣＰＵ１００において保持され、残り時間が所定時間よりも短いと判定された場合に、ＧＰＵ２００へ送信される。これにより、第１実施例と同様に、ＧＰＵ２００が実行する複数の部分領域についての画像データ生成処理の開始から終了までに要する時間を圧縮することができる。
【００７２】
また第２実施例では、複数の部分領域についての画像データ生成処理がフレーム内で完了しなかった場合は、次のフレームにおいてインストラクション生成部１１０がインストラクション生成処理を開始するタイミングを遅延させることにより、当該フレーム内でインストラクションが生成される部分領域の数を減少させる。これにより、フレーム内で全ての画像データ生成処理を完了させる可能性を高めることができる。
【００７３】
尚、第２実施例においても、第１実施例において示した表示装置１のハードウェア構成が適用され得る。また、第１実施例において示した用語の定義（呼称）も、特に別の定義規定を設けない限りは、第２実施例においても適用される。
【００７４】
図２４は、第２実施例におけるＣＰＵ１００とＧＰＵ２００の処理タイミングチャートの一例である。図２４において横軸は時間を表す。図２４においては、一つの部分領域についてのインストラクションが生成されると、ＣＰＵ１００はフレームの残り時間に基づいて、更に別の部分領域についてのインストラクション生成処理を行うか否かを判定する。残り時間が所定時間Ｔｔｈよりも長い場合は更に別の部分領域についてインストラクション生成処理を行い、残り時間が所定時間Ｔｔｈよりも短い場合は更に別の部分領域についてインストラクション生成処理は行わない。図２４に示す例では、３番目の部分領域についてインストラクションが生成された時点での判定において、フレームの残り時間Ｔｃが所定時間Ｔｔｈよりも短いと判定される。この場合ＣＰＵ１００は、更なるインストラクション生成処理は行わず、３つの部分領域についてのＧＰＵ用インストラクションをＧＰＵ２００へ送信する。
【００７５】
ＧＰＵ用インストラクションを受信したＧＰＵ２００は、３つの部分領域についての画像データを生成する。図２４に示される例では、３つの部分領域についての画像データ生成はフレーム内では完了していない。このような場合、ＣＰＵ１００は、次のフレームにおいてインストラクション生成処理の開始タイミングを遅延させる。インストラクション生成処理の開始タイミングを遅延させる理由について、図２５を用いて説明する。
【００７６】
図２５は、インストラクション生成処理の開始タイミングを遅延させた場合のＣＰＵ１００とＧＰＵ２００の処理タイミングチャートである。図２４にて示したように、複数の部分領域について画像データ生成処理がフレーム内で完了しなかった場合、ＣＰＵ１００はインストラクション生成処理の開始タイミングを遅延させる。より詳細には、ＣＰＵ１００は、画像データ合成処理が終了した後、最初のインストラクション生成処理が開始されるまでの時間（図中の期間Ｘ）を引き延ばす。これにより、２つの部分領域についてインストラクション生成処理が終了した時点において、フレームの残り時間Ｔｂが所定時間Ｔｔｈよりも短くなる。そのためこのフレームでは３番目の部分領域についてはインストラクション生成処理が行われないことになる。その結果として、ＧＰＵ２００による画像データ生成処理をフレーム内に終了させることが可能となる。以下、インストラクション生成処理の開始タイミングを調整する方法の詳細について説明する。
【００７７】
図２６は第２実施例におけるＣＰＵ１００の機能ブロック図である。ＣＰＵ１００は、メモリ４００又はＣＰＵ１００がアクセス可能な他の記憶装置に格納された所定のコンピュータプログラムを実行することにより、図２６に示す各機能を実現する。ＣＰＵ１００は、第１実施例と同様に、インストラクション生成部１１０、ライブラリ１２０、ドライバ１３０、タイマ１４０、時間差検出部１５０、フィードバック制御部１６０、および合成処理部１７０として機能する。各機能ブロックについて、ここでは第１実施例と相違する点を中心に説明する。
【００７８】
第２実施例においてインストラクション生成部１１０は、合成処理部１７０からではなく、フィードバック制御部１６０からインストラクション生成処理の開始命令を受信し、部分領域についてインストラクションを生成してライブラリ１２０へ送信する。またインストラクション生成部１１０は、部分領域についてのインストラクション生成処理が終了する度に、フレームの残り時間内に更に別の部分領域についてインストラクション生成処理を行うか否かを判定する。インストラクション生成部１１０は、更なる部分領域についてインストラクション生成処理を実行しないと判定した場合は、当該フレーム内での処理の完了を意味するフレーム内処理完了通知をライブラリ１２０へ送信する。
【００７９】
ライブラリ１２０は、インストラクション生成部１１０が生成したインストラクションに基づきＧＰＵ用インストラクションを生成し、生成されたＧＰＵ用インストラクションをドライバ１３０へ送信する。またライブラリ１２０は、インストラクションが生成された部分領域の数をカウントし、フィードバック制御部１６０へ通知する。ドライバ１３０は、ＧＰＵ２００へのＧＰＵ用インストラクションの送信、ＧＰＵ２００からの画像データ生成処理の終了通知の受信、時間差検出部１５０および合成処理部１７０への画像データ生成処理の完了通知の送信、画像データ生成部２５０の動作モードの制御等を行う。タイマ１４０は、所定の時間間隔で同期信号Ｖｓｙｎｃを生成し、時間差検出部１５０および合成処理部１７０へ送信する。時間差検出部１５０は、ドライバ１３０の受信部１３２から受信する完了通知と、タイマ１４０から受信する同期信号Ｖｓｙｎｃとに基づき、時間差信号をフィードバック制御部１６０へ送信する。フィードバック制御部１６０は、時間差検出部１５０から受信した時間差信号と、ライブラリ１２０から受信した、インストラクション生成処理が行われた部分領域の数に基づき、次のフレームでのインストラクション生成処理の開始を遅延させる遅延時間を設定する。合成処理部１７０は、画像データ合成処理を行い、インストラクション生成処理の開始命令をフィードバック制御部１６０に対して送信する。このインストラクション生成処理の開始命令を受けた合成処理部１７０は、設定された遅延時間に基づいてインストラクション生成処理の開始命令を遅延させてインストラクション生成部１１０へ送信する。これにより、インストラクション生成部１１０がインストラクション生成処理を開始する時刻を、フィードバック制御部１６０が設定した遅延時間に基づいて制御することができる。
【００８０】
図２７は、第２実施例におけるインストラクション生成部１１０のインストラクション生成処理のフローチャートである。図１２または図１６にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。尚、第２実施例におけるドライバ１３０および合成処理部１７０による処理のフローチャートは、それぞれ図１４および図１５に示したフローチャートと同じである。
【００８１】
インストラクション生成部１１０による処理が処理１２００にて開始された後、処理１２０９においてインストラクション生成部１１０は、フィードバック制御部１６０からインストラクション生成処理の開始命令を受信する。そしてインストラクション生成部１１０は、処理１２０３において１つの部分領域についてインストラクションを生成してライブラリ１２０へ送信し、また処理１２０８において１つの部分領域についてインストラクション生成処理の終了通知をライブラリ１２０へ送信する。１つの部分領域についてインストラクション生成処理が終了すると、処理１２１０においてインストラクション生成部１１０は、フレームの残り時間が所定時間以下であるか否かを判定する。処理１２１０においてフレームの残り時間が所定時間以上であると判定された場合は処理１２０３へ戻り、更に別の部分領域についてインストラクションを生成する。また処理１２１０においてフレームの残り時間が所定時間以下であると判定された場合は処理１２０６へ進み、フレーム内処理完了通知をライブラリ１２０へ送信し、処理１２０７において処理が終了する。このように、第２実施例においてインストラクション生成部１１０は、各部分領域についてインストラクションの生成が終了するたびにフレームの残り時間に基づいて更に他の部分領域についてインストラクションの生成を実行するか否かを判定する。
【００８２】
図２８は、第２実施例におけるライブラリ１２０によるＧＰＵ用インストラクション生成処理のフローチャートである。図１３、図１７または図１８にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。ライブラリ１２０による処理は処理１３００により開始され、ライブラリ１２０は、処理１３０１においてインストラクション生成部１１０からインストラクションを受信し、受信したインストラクションに基づいて処理１３０２においてＧＰＵ用インストラクションを生成する。またライブラリ１２０は、処理１３０７において１つの部分領域についてのインストラクション生成処理の終了通知を受信する。処理１３１０においてライブラリ１２０は、受信したインストラクション生成処理の終了通知の数をカウントする。尚、処理１３０７においてライブラリ１２０は、インストラクション生成処理の終了通知を受信しても、生成されたＧＰＵ用インストラクションをドライバ１３０へ送信せずに保持する。処理１３０１、処理１３０２、処理１３０７および処理１３１０はループを形成し、フレーム内処理完了通知をインストラクション生成部１１０から受信するまで繰り返し実行される。ライブラリ１２０は、処理１３０５においてフレーム内処理完了通知を受信すると、処理１３０４においてＧＰＵ用インストラクションとＧＰＵ用インストラクションの転送命令をドライバ１３０へ送信する。またライブラリ１２０は、処理１３１１において、カウントされたインストラクション生成処理の終了通知の数、すなわちフレーム内でインストラクション生成処理がなされた部分領域の数をフィードバック制御部１６０へ通知し、処理１３０６において処理が終了する。
【００８３】
このようにライブラリ１２０は、部分領域毎にインストラクション生成処理の終了通知を受信しても、ＧＰＵ用インストラクションをドライバ１３０へ送信せずに保持し、フレーム内処理完了通知を受信した後にＧＰＵ用インストラクションをドライバ１３０へ送信する。またドライバ１３０は、ＧＰＵ用インストラクションとＧＰＵ用インストラクションの転送命令をライブラリ１２０から受信し、ＧＰＵ用インストラクションをＧＰＵ２００へ送信する。このような処理により、ＣＰＵ１００において複数の部分領域についてのＧＰＵ用インストラクションが生成された後にＧＰＵ２００の画像データ生成処理を開始させることができ、複数の部分領域についての画像データ生成処理が開始されてから終了するまでの時間を圧縮することができる。
【００８４】
図２９は、第２実施例におけるフィードバック制御部１６０によるインストラクション生成処理の開始命令の遅延時間設定処理のフローチャートである。図１１にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。        
【００８５】
フィードバック制御部１６０による処理が処理１１００で開始された後、処理１１０７においてフィードバック制御部１６０は、ライブラリ１２０からインストラクションが生成された部分領域の数を示す情報を受信する。フィードバック制御部１６０は、処理１１０４において時間差検出部１５０から時間差信号を受信した後、処理１１０８においてインストラクションが生成された部分領域の数と時間差信号に基づき、インストラクション生成処理の開始タイミングの遅延時間を決定する。そして処理１１０９においてフィードバック制御部１６０は、合成処理部１７０からインストラクション生成処理の開始命令を受信する。そして処理１１１０においてフィードバック制御部１６０は、受信したインストラクション生成処理の開始命令を、処理１１０８にて求めた遅延時間に基づいて遅延させてインストラクション生成部１１０へ送信し、処理１１１１にて処理が終了する。
【００８６】
このように第２実施例では、合成処理部１７０が発行したインストラクション生成処理の開始命令は、フィードバック制御部１６０に送信される。そしてフィードバック制御部１６０は、インストラクション生成部１１０によるインストラクション生成処理の開始タイミングを調整する。例えば、一つ前のフレームにおいてＧＰＵ２００による画像データ生成処理がフレーム内に完了しなかった場合は、フィードバック制御部１６０がインストラクション生成部１１０によるインストラクション生成処理の開始タイミングを遅延させる。これにより、次のフレームにてインストラクションが生成される部分領域の数を抑制し、フレーム内で画像データ生成処理が完了する可能性を高めることができる。
【００８７】
次に、第２実施例の第１変形例について説明する。第２実施例では、ライブラリ１２０がインストラクション生成処理の終了通知の数をカウントすることにより、フレーム内でインストラクションが生成された部分領域の数をカウントしてフィードバック制御部１６０へ通知した。これに対して第２実施例の第１変形例では、インストラクション生成処理の終了通知の数のカウントと、カウントされた値のフィードバック制御部１６０への通知はドライバ１３０が行う。
【００８８】
第２実施例におけるライブラリ１２０の処理のフローチャートを示した図２８では、ライブラリ１２０は処理１３０６においてインストラクション生成処理の終了通知を受け、処理１３１０においてインストラクション生成処理の終了通知の数をカウントした。これに対して第２実施例の第１変形例では、ライブラリ１２０は、処理１３０６の後、処理１３１０の代わりにライブラリ１２０はインストラクション生成処理の終了通知をドライバ１３０へ転送し、処理１３１１は実行しない。そしてドライバ１３０は、ライブラリ１２０から転送されたインストラクション生成処理の終了通知の数をカウントする。その後ドライバ１３０は、ライブラリ１２０からＧＰＵ用インストラクションおよびＧＰＵ用インストラクションの転送命令を受信したことに基づき、カウントされたインストラクション生成処理の終了通知の数をフィードバック制御部１６０へ通知する。
【００８９】
このように第２実施例の第１変形例では、インストラクション生成処理の終了通知の数のカウント、およびカウントされた数のフィードバック制御部１６０への通知を、ドライバ１３０が実行する。
【００９０】
次に、第２実施例の第２変形例について説明する。第２実施例ではライブラリ１２０が、複数の部分領域についてのＧＰＵ用インストラクションを生成して保持し、インストラクション生成部１１０からフレーム内処理完了通知が発行された後に、ＧＰＵ用インストラクションがライブラリ１２０からドライバ１３０へ送信された。第２実施例の第２変形例では、ライブラリ１２０が生成したＧＰＵ用インストラクションは、部分領域毎にドライバ１３０へ送信され、ドライバ１３０が複数の部分領域についてのＧＰＵ用インストラクションを保持する。そして、インストラクション生成部１１０からフレーム内処理完了通知が発行された後に、ＧＰＵ用インストラクションがドライバ１３０からＧＰＵ２００へ送信される。
【００９１】
第２実施例におけるライブラリ１２０の処理のフローチャートを示した図２８において、処理１３０２においてライブラリ１２０が生成したＧＰＵ用インストラクションは、処理１３０７においてフレーム内処理完了通知を受信するまでは、ライブラリ１２０が保持していた。これに対して第２実施例の第２変形例では、ライブラリ１２０は処理１３０７でインストラクション生成処理の終了通知を受信すると、処理１３０２にて生成されたＧＰＵ用インストラクションをドライバ１３０へ送信する。この場合、処理１３０７においてフレーム内処理完了通知を受けた時点では、原則としてライブラリ１２０はＧＰＵ用インストラクションを保持していない。そのためライブラリ１２０は、フレーム内処理完了通知を受けた後、処理１３０４においてＧＰＵ用インストラクションの転送命令をドライバ１３０へ送信する。一方ドライバ１３０は、ライブラリ１２０から送信されたＧＰＵ用インストラクションを受信して保持し、ライブラリ１２０からＧＰＵ用インストラクションの転送命令を受信した後に、ＧＰＵ用インストラクションをＧＰＵ２００へ送信する。
【００９２】
このように第２実施例の第２変形例では、ライブラリ１２０が生成したＧＰＵ用インストラクションは、部分領域毎にドライバ１３０へ送信され、フレーム内処理完了通知が発行されるまでドライバ１３０によって保持される。
【００９３】
尚、第２実施例の第２変形例において、更にインストラクション生成処理の終了通知の数のカウントと、カウントされた値のフィードバック制御部１６０への通知をドライバ１３０が行なってもよい。この場合は、ライブラリ１２０はインストラクション生成処理の終了通知をインストラクション生成部１１０から受信すると、ＧＰＵ用インストラクションをドライバ１３０へ送信し、更にインストラクション生成処理の終了通知をドライバ１３０へ転送する。またライブラリ１２０は、フレーム内処理完了通知を受信した後、ＧＰＵ用インストラクションの転送命令をドライバ１３０へ送信する。ドライバ１３０は、ライブラリ１２０から受信したＧＰＵ用インストラクションを保持し、ＧＰＵ用インストラクションの転送命令を受信した後に、保持するＧＰＵ用インストラクションをＧＰＵ２００へ送信する。尚、ドライバ１３０はライブラリ１２０から転送されたインストラクション生成処理の終了通知を受信してもＧＰＵ用インストラクションをＧＰＵ２００へ送信することなくＧＰＵ用インストラクションを保持し続ける。またドライバ１３０は受信したインストラクション生成処理の終了通知の数をカウントし、カウントした値をフィードバック制御部１６０へ通知する。
【００９４】
次に、図３０を用いてフィードバック制御部１６０による遅延時間の設定方法について説明する。図３０の（ａ）は、横軸に遅延時間を、縦軸に完了通知と所定の同期信号Ｖｓｙｎｃとの時間差を表したものである。時間差が正の値であることは、フレーム内に画像データ生成処理が完了したことを意味する。逆に時間差が負の値であることは、画像データ生成処理が、フレーム内には完了せず次のフレームが開始された後に完了したことを意味する。尚、フィードバック制御部１６０は、ライブラリ１２０からの通知により画像データが生成された部分領域の数を認識し、時間差検出部１５０からの通知により完了通知と所定の同期信号Ｖｓｙｎｃとの時間差を認識することができる。
【００９５】
図３０の（ａ）は、例えば遅延時間を設定しない場合（遅延時間を０とした場合）、３つの部分領域について画像データ生成処理が実行され、時間差が負の値となることを示している。このような場合は、フレーム内に画像データ生成処理を完了させるためには、インストラクションが生成される部分領域の数を減少させる必要がある。そこでフィードバック制御部１６０は、遅延時間の設定を増加させる。遅延時間の設定を増加させることによって時間差が正の値となれば、フィードバック制御部１６０はインストラクションが生成される部分領域の数が減らすことができたと認識する。尚、遅延時間をある値に設定した場合であって、時間差が正の値を示すときは、フィードバック制御部１６０は時間差が正の値を維持できる範囲で遅延時間の設定を減少させてもよい。これにより、画像データ生成処理が完了してからフレームが終了するまでの時間マージンを拡げることができる。
【００９６】
図３０の（ｂ）は、遅延時間の絞り込み方法を説明する図である。例えば遅延時間がＡ点に設定されている場合、遅延時間を短くすることにより、フレーム内に画像データが生成される部分領域の数を増加させることができる。このような場合、フィードバック制御部１６０はまず遅延時間を第１の幅を持って減少させる。これにより遅延時間がＢ点に設定されたとする。遅延時間がＢ点に設定されると時間差が負の値となったため、フィードバック制御部１６０は第１の幅よりも小さい第２の幅を持って遅延時間を増加させる。これにより遅延時間がＣ点に設定されたとする。遅延時間がＣ点に設定されると時間差が正の値となったため、フィードバック制御部１６０は第２の幅よりも更に小さい第３の幅を持って遅延時間を減少させる。これにより遅延時間がＣ点に設定される。このように、フィードバック制御部１６０は遅延時間の変動幅を制御しながら遅延時間を絞り込むことにより、より少ない遅延時間の変更回数で適切な遅延時間を設定することが可能となる。
【００９７】
以上、第２実施例とその変形例について説明した。第２実施例とその変形例では、ライブラリ１２０またはドライバ１３０が、インストラクション生成処理が行われた部分領域の数をカウントしてフィードバック制御部１６０へ通知し、フィードバック制御部１６０が部分領域の数と時間差信号に基づいて遅延時間を設定する例を説明した。しかしインストラクション生成処理が行われた部分領域の数のカウントは省略されてもよく、この場合、フィードバック制御部１６０は時間差信号に基づいて遅延時間を設定してもよい。
【００９８】
＜第３実施例＞
第２実施例では、インストラクション生成部１１０によるインストラクション生成処理の開始タイミングを調整することにより、フレーム内でインストラクションが生成される部分領域の数を抑制する方法について説明した。第３実施例では、１つの部分領域についてインストラクション生成処理が終了してから、他の部分領域についてのインストラクション生成処理が開始されるまでの時間を制御することにより、フレーム内でインストラクションが生成される部分領域の数を抑制する方法について説明する。
【００９９】
まず第３実施例におけるＣＰＵ１００とＧＰＵ２００の処理タイミングを、第２実施例の説明で用いた図２４と、図３１を用いて説明する。図２４にて示したように、第３実施例においても第２実施例と同様に、一つの部分領域についてのインストラクション生成処理が終了すると、ＣＰＵ１００はフレームの残り時間に基づいて、更に別の部分領域についてのインストラクション生成処理を行うか否かを判定する判定処理を実行する。図２４において、３番目の部分領域についてのインストラクション生成処理が終了した時点での判定処理において、フレームの残り時間Ｔｃが所定時間Ｔｔｈよりも短いと判定された場合、ＣＰＵ１００は３つの部分領域について生成したＧＰＵ用インストラクションをＧＰＵ２００へ送信する。ＧＰＵ用インストラクションを受信したＧＰＵ２００は、３つの部分領域についての画像データを生成する。そして、３つの部分領域についての画像データ生成処理はフレーム内では完了しなかった場合、ＣＰＵ１００は、次のフレームにおいて画像データが生成される部分領域の数を抑制するために、１つの部分領域についてのインストラクション生成処理が終了した後、次の部分領域についてのインストラクション生成処理の開始タイミングを遅延させる。具体的には図３１に示すように、一つの部分領域についてのインストラクション生成処理が終了した後、ＣＰＵ１００は所定時間が経過するのを待ってから、フレームの残り時間に基づいて更に別の部分領域についてのインストラクション生成処理を行うか否かを判定する判定処理を行う。このような操作により、判定処理を行う際のフレームの残り時間を強制的に短くすることができる。図３１においては、２つの部分領域についてのインストラクション生成処理が終了した後に行われる判定処理において、フレームの残り時間Ｔｂが所定時間Ｔｔｈ以下となり、更なるインストラクション生成処理は実行されない。そしてＧＰＵ２００は、２つの部分領域について画像データ生成処理を実行する。このように第３実施例では、一つの部分領域についてのインストラクション生成処理が終了した後、更に他の部分領域についてのインストラクション生成処理を実行するか否かの判定までの時間を制御することにより、フレーム内でインストラクション生成処理が実施される部分領域の数が抑制される。
【０１００】
尚、第２実施例においても、第１実施例において示した表示装置１のハードウェア構成が適用され得る。また、第１実施例および第２実施例において示した用語の定義（呼称）も、特に別の定義規定を設けない限りは、第３実施例においても適用される。
【０１０１】
図３２は第３実施例におけるＣＰＵ１００の機能ブロック図である。ＣＰＵ１００は、メモリ４００又はＣＰＵ１００がアクセス可能な他の記憶装置に格納された所定のコンピュータプログラムを実行することにより、図３２に示す各機能を実現する。ＣＰＵ１００は、第１実施例および第２実施例と同様に、インストラクション生成部１１０、ライブラリ１２０、ドライバ１３０、タイマ１４０、時間差検出部１５０、フィードバック制御部１６０、および合成処理部１７０として機能する。ここでは第１実施例または第２実施例と相違する点を中心に説明する。
【０１０２】
インストラクション生成部１１０は、合成処理部１７０からインストラクション生成処理の開始命令を受信する。そしてインストラクション生成部１１０は受信した開始命令に基づき、部分領域についてインストラクションを生成してライブラリ１２０へ送信する。インストラクション生成部１１０は部分領域についてのインストラクション生成処理が終了する度に、フレームの残り時間内に更に別の部分領域についてインストラクション生成処理を行うか否かの判定処理を行う。インストラクション生成部１１０は、更に別の部分領域についてインストラクション生成処理を実行しないと判定した場合は、フレーム内での全ての処理が終了したことを示すフレーム内処理終了通知をライブラリ１２０へ送信する。
【０１０３】
ライブラリ１２０は、インストラクション生成部１１０から受信したインストラクションに基づいてＧＰＵ用インストラクションを生成してドライバ１３０へ送信する。またライブラリ１２０は、インストラクション生成部１１０から受信したインストラクション生成処理の終了通知の数をカウントし、カウント値をフレーム内でインストラクションが生成された部分領域の数を示す情報としてフィードバック制御部１６０へ通知する。フィードバック制御部１６０は、時間差検出部１５０から通知された時間差信号と、ライブラリ１２０から通知された部分領域の数を示す情報に基づいて遅延時間を定め、定められた遅延時間をライブラリ１２０へ通知する。ライブラリ１２０は、次のフレームにおいてインストラクション生成部１１０から、１つの部分領域についてのインストラクションを受信し、ＧＰＵ用インストラクション生成処理を実行する。そしてライブラリ１２０は、１つの部分領域についてのインストラクション生成処理の終了通知をインストラクション生成部１１０から受信した後、フィードバック制御部１６０から通知された遅延時間に基づいて一定時間経過後に、インストラクション生成部１１０へ受領通知を送信する。インストラクション生成部１１０は、ライブラリ１２０からの受領通知を受けた後に、フレームの残り時間に基づいて更に別の部分領域についてインストラクション生成処理を実行するか否かの判定処理を行う。
【０１０４】
このように第３実施例では、ライブラリ１２０がインストラクション生成処理の終了通知をインストラクション生成部１１０から受信した後、一定時間が経過するのを待ってからインストラクション生成部１１０へ受領通知を送信することにより、インストラクション生成部１１０が行う判定処理のタイミングを遅らせる。インストラクション生成部１１０が行う判定処理のタイミングを遅らせることにより強制的にフレームの残り時間を短くすることができ、フレーム内でインストラクションが生成される部分領域の数を抑制することができる。
【０１０５】
図３３は、第３実施例におけるインストラクション生成部１１０のインストラクション生成処理のフローチャートである。図１２、図１６または図２７にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。尚、第３実施例におけるドライバ１３０および合成処理部１７０による処理のフローチャートは、それぞれ図１４および図１５に示したフローチャートと同じである。
【０１０６】
処理１２００にて処理が開始された後、処理１２０２においてインストラクション生成部１１０は、合成処理部１７０からインストラクション生成処理の開始命令を受信する。処理１２０３においてインストラクション生成部１１０は、１つの部分領域のインストラクションを生成してライブラリ１２０へ送信し、処理１２０８において１つの部分領域についてのインストラクション生成処理の終了通知をライブラリ１２０へ送信する。処理１２１１においてインストラクション生成部１１０は、ライブラリ１２０からインストラクション生成処理の終了通知に対する受領通知を受信する。この受領通知の受信に基づきインストラクション生成部１１０は、処理１２１０においてフレームの残り時間が所定時間以下であるか否かの判定を行う。処理１２１０においてフレームの残り時間が所定時間以上であると判定された場合は処理１２０３へ戻り、更に別の部分領域についてインストラクションを生成する。また処理１２１０においてフレームの残り時間が所定時間以下であると判定された場合は処理１２０６へ進み、処理１２０６においてインストラクション生成部１１０は、フレーム内処理完了通知をライブラリ１２０へ送信し、処理１２０７において処理が終了する。
【０１０７】
図３４は、第３実施例におけるライブラリ１２０のＧＰＵ用インストラクション生成処理のフローチャートである。図１３、図１７、図１８または図２８にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。処理１３００において処理が開始された後、処理１３１２においてライブラリ１２０は、フィードバック制御部１６０から遅延時間情報を受信する。その後ライブラリ１２０は、処理１３０１においてインストラクションをインストラクション生成部１１０から受信し、処理１３０２においてＧＰＵ用インストラクションを生成する。更にライブラリ１２０は処理１３０６においてインストラクション生成処理の終了通知を受信する。尚ライブラリ１２０は、処理１３０７においてインストラクション生成処理の終了通知を受信しても、ＧＰＵ用インストラクションをドライバ１３０へ送信せずに保持する。ここで処理１３１３においてライブラリ１２０は、フィードバック制御部１６０から受信した遅延時間情報に基づき、インストラクション生成処理の終了通知を受信してから所定時間が経過してから、インストラクション生成部１１０へインストラクション生成処理の終了通知を受信した旨を示す受領通知を送信する。インストラクション生成部１１０はこの受領通知の受信を待ってから図３３で説明した処理１２１０の判定処理を実行するため、ライブラリ１２０が処理１３１３において所定時間の経過を待ってから受領通知を送信することにより、インストラクション生成部１１０による判定処理の実行を強制的に遅らせることができる。これにより、フレーム内でインストラクションの生成処理が行われる部分領域の数を制限することができる。
【０１０８】
図３４の説明に戻り、処理１３１０においてライブラリ１２０は、処理１３０６にて受信したインストラクション生成処理の終了通知の数をカウントする。処理１３０１、処理１３０２、処理１３０７、処理１３１３および処理１３１０はループを形成し、フレーム内処理完了通知をインストラクション生成部１１０から受信するまで繰り返し実行される。ライブラリ１２０は、処理１３０５においてフレーム内処理完了通知を受信すると、処理１３０４においてＧＰＵ用インストラクションとＧＰＵ用インストラクションの転送命令をドライバ１３０へ送信する。その後、処理１３１１においてライブラリ１２０は、カウントされたインストラクション生成処理の終了通知の数、すなわちフレーム内でインストラクション生成の処理がなされた部分領域の数をフィードバック制御部１６０へ通知し、処理１３０６において処理が終了する。
【０１０９】
図３５は、第３実施例におけるフィードバック制御部１６０の遅延時間設定処理のフローチャートである。図１１または図２９にて説明した処理と同一の処理については同一の参照符号を付し、説明を適宜省略または簡略化する。フィードバック制御部１６０による処理が処理１１００で開始された後、処理１１０７においてフィードバック制御部１６０は、ライブラリ１２０からインストラクションが生成された部分領域の数を示す情報を受信する。フィードバック制御部１６０は、処理１１０４において時間差検出部１５０から時間差信号を受信した後、処理１１０８においてインストラクションが生成された部分領域の数と時間差信号に基づき、遅延時間を決定する。処理１１１２においてフィードバック制御部１６０は、決定された遅延時間をライブラリ１２０へ通知し、処理１１１１にて処理が終了する。
【０１１０】
このように第３実施例では、前のフレームにおいてインストラクションが生成された部分領域の数および時間差信号に基づき、ライブラリ１２０がインストラクション生成部１１０からインストラクション生成処理の終了通知を受けてから受領通知を返信するまでの遅延時間が決定される。これにより、１つの部分領域についてのインストラクション生成処理が終了してから判定処理が実行されるまでの時間を制御することができ、フレーム内でインストラクションが生成される部分領域の数を抑制し、フレーム内で画像データ生成処理が完了する可能性を高めることができる。
【０１１１】
以上、第３実施例について説明した。第３実施例では、ライブラリ１２０がインストラクション生成処理の終了通知の数をカウントすることにより、フレーム内でインストラクションが生成された部分領域の数をカウントしてフィードバック制御部１６０へ通知した。第３実施例の変形例としては、インストラクション生成処理の終了通知の数のカウントと、カウントされた値のフィードバック制御部１６０への通知をドライバ１３０が行ってもよい。具体的には、第２実施例の第１変形例として説明したように、図２８において処理１３０６の後、ライブラリ１２０は、処理１３１０の代わりにインストラクション生成処理の終了通知をドライバ１３０へ転送する。そしてドライバ１３０は、ライブラリ１２０から転送されたインストラクション生成処理の終了通知の数をカウントする。その後ドライバ１３０は、ライブラリ１２０からＧＰＵ用インストラクションおよびＧＰＵ用インストラクションの転送命令を受信したことに基づき、カウントされたインストラクション生成処理の終了通知の数をフィードバック制御部１６０へ通知する。
開示の実施例に基づき、更に以下の付記を開示する。
（付記１）
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成方法において、
第１プロセッサが、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１指示を生成し、
前記第１プロセッサが前記第１指示を生成した後に、前記第２プロセッサが、前記第１指示に基づき、前記Ｎ個の部分領域の第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理が終了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第１同期信号の次に発行される第２同期信号の受信タイミングとに基づいて自然数Ｍを定め、前記複数の部分領域のうちのＭ個の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第２指示を生成する
ことを特徴とする画像データ生成方法。
（付記２）
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする付記１に記載の画像データ生成方法。
（付記３）
前記第１プロセッサは、前記画像データ生成処理終了通知を前記第２同期信号よりも先に受信した場合は、前記第２同期信号に基づいて前記画像領域の第１画像データを生成し、前記画像データ生成処理終了通知を前記第２同期信号よりも後に受信した場合は、前記第２同期信号の次に発行される第３同期信号を受信するまでの期間には前記第１画像データを生成しないことを特徴とする付記１または２に記載の画像データ生成方法。
（付記４）
前記第１プロセッサは、前記画像データ生成処理終了通知を前記第２同期信号よりも後に受信した場合は、前記Ｍを、前記Ｎよりも小さい自然数として特定することを特徴とする付記１乃至３何れか一つに記載の画像データ生成方法。
（付記５）
前記第１プロセッサは、前記画像データ生成処理終了通知を受信した時刻と前記第２同期信号を受信した時刻との時間差を算出し、算出された前記時間差と前記Ｎに基づいて、前記Ｍを特定することを特徴とする付記１乃至４何れか一つに記載の画像データ生成方法。
（付記６）
複数の前記部分領域の各々は、前記第１プロセッサが前記第２プロセッサへ前記生成処理を指示することができる最少の単位領域であり、前記第１指示および前記第２指示は前記第１プロセッサがコンピュータプログラムを実行することにより生成され、前記単位領域のサイズは前記第１プロセッサが前記コンピュータプログラムを実行することにより特定されることを特徴とする付記１乃至５何れか一つに記載の画像データ生成方法。
（付記７）
前記第２指示の生成は、前記第１画像データが生成された後に開始されることを特徴とする付記１乃至６何れか一つに記載の画像データ生成方法。
（付記８）
前記第２プロセッサは、前記第１部分画像データの前記生成処理を実行する前は第１動作モードで制御され、前記第１部分画像データの前記生成処理を実行する際は、前記第１動作モードよりも消費電力の高い第２動作モードで制御されることを特徴とする付記１乃至７何れか一つに記載の画像データ生成方法。
（付記９）
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成方法において、
第１プロセッサが、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１部分指示を生成し、
前記第１プロセッサは、前記Ｎ個の部分領域の各々について前記第１部分指示を生成した後に、Ｎ個の前記第１部分指示を含む第１指示を前記第２プロセッサへ送信し、
前記第２プロセッサが、前記第１指示に基づき、前記Ｎ個の部分領域についての第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理を完了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記第１同期信号の次に発行される第２同期信号に基づいて、前記複数の部分領域のうちのＭ個（Ｍは自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データの生成処理の内容を規定する第２部分指示を生成する工程と
を有し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第２同期信号の受信タイミングとに基づいて、Ｍ個の前記第２部分指示のうちの何れかの生成処理の開始タイミングを遅延させることを特徴とする画像データ生成方法。
（付記１０）
前記第１プロセッサは、前記Ｎ個の部分領域の各々について前記第１部分指示を生成する度に、前記第１同期信号の次に発行される第２同期信号までの残り時間が、所定時間よりも長いか短いかを判定し、
前記第１プロセッサは、前記残り時間が前記所定時間よりも長い場合は、前記Ｎ個の部分領域の他の領域について、前記第１部分指示の生成を実行し、
前記第１プロセッサは、前記残り時間が前記所定時間よりも短い場合は、前記Ｎ個の部分領域の他の領域について、前記第１部分指示の生成を実行しないことを特徴とする付記９に記載の画像データ生成方法。
（付記１１）
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする付記９または１０に記載の画像データ生成方法。
（付記１２）
前記第２プロセッサは、前記第１部分画像データの前記生成処理を実行する前は第１動作モードで制御され、前記第１部分画像データの前記生成処理を実行する際は、前記第１動作モードよりも消費電力の高い第２動作モードで制御されることを特徴とする付記９乃至１１何れか一つに記載の画像データ生成方法。
（付記１３）
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成装置であって、
前記画像データ生成装置は第１プロセッサと第２プロセッサとを含み、
前記第１プロセッサは、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１指示を生成し、
前記第１プロセッサが前記第１指示を生成した後に、前記第２プロセッサは、前記第１指示に基づき、前記Ｎ個の部分領域の第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理が終了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第１同期信号の次に発行される第２同期信号の受信タイミングとに基づいて自然数Ｍを定め、前記複数の部分領域のうちのＭ個の部分領域について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第２指示を生成する
ことを特徴とする画像データ生成装置。
（付記１４）
前記第１プロセッサは、指示生成部と指示蓄積部とを有し、
前記指示生成部は、前記Ｎ個の部分領域の各々について第１部分指示を生成し、生成された前記第１部分指示を前記指示蓄積部へ順次送信し、前記Ｎ個の部分領域の全てについて前記第１部分指示を前記指示蓄積部へ送信した後に、指示生成処理終了通知を前記指示蓄積部へ送信し
前記指示蓄積部は、受信した前記第１部分指示の各々を保持し、前記指示生成処理終了通知を受信した後に、前記第１部分指示を含む前記第１指示を前記第２プロセッサへ送信することを特徴とする付記１３に記載の画像データ生成装置。
（付記１５）
前記第１プロセッサは、前記画像データ生成処理終了通知を前記第２同期信号よりも先に受信した場合は、前記第２同期信号に基づいて前記画像領域の第１画像データを生成し、前記画像データ生成処理終了通知を前記第２同期信号よりも後に受信した場合は、前記第２同期信号の次に発行される第３同期信号を受信するまでの期間には前記第１画像データを生成しないことを特徴とする付記１３または１４に記載の画像データ生成装置。
（付記１６）
前記第１プロセッサは、前記画像データ生成処理終了通知を前記第２同期信号よりも後に受信した場合は、前記Ｍを、前記Ｎよりも小さい自然数として特定することを特徴とする付記１３乃至１５何れか一つに記載の画像データ生成装置。
（付記１７）
前記第１プロセッサは、前記画像データ生成処理終了通知を受信した時刻と前記第２同期信号を受信した時刻との時間差を算出し、算出された前記時間差と前記Ｎに基づいて、前記Ｍを特定することを特徴とする付記１３乃至１６何れか一つに記載の画像データ生成装置。
（付記１８）
複数の前記部分領域の各々は、前記第１プロセッサが前記第２プロセッサへ前記生成処理を指示することができる最少の単位領域であり、前記第１指示および前記第２指示は前記第１プロセッサがコンピュータプログラムを実行することにより生成され、前記単位領域のサイズは前記第１プロセッサが前記コンピュータプログラムを実行することにより特定されることを特徴とする付記１３乃至１７何れか一つに記載の画像データ生成装置。
（付記１９）
前記第２指示の生成は、前記第１画像データが生成された後に開始されることを特徴とする付記１３乃至１８何れか一つに記載の画像データ生成装置。
（付記２０）
所定の時間間隔で生成される同期信号に基づいて複数の部分領域を含む画像領域の画像データを生成する画像データ生成装置であって、
前記画像データ生成装置は第１プロセッサと第２プロセッサとを含み、
前記第１プロセッサは、第１同期信号に基づいて、前記複数の部分領域のうちのＮ個（Ｎは２以上の自然数）の部分領域の各々について、前記第２プロセッサに実行させる部分画像データ生成処理の内容を規定する第１部分指示を生成し、
前記第１プロセッサは、前記Ｎ個の部分領域の各々について前記第１部分指示を生成した後に、Ｎ個の前記第１部分指示を含む第１指示を前記第２プロセッサへ送信し、
前記第２プロセッサは、前記第１指示に基づき、前記Ｎ個の部分領域についての第１部分画像データの生成処理を開始し、
前記第２プロセッサは、前記第１部分画像データの前記生成処理を完了した場合に、前記第１プロセッサに画像データ生成処理終了通知を送信し、
前記第１プロセッサは、前記第１同期信号の次に発行される第２同期信号に基づいて、前記複数の部分領域のうちのＭ個（Ｍは自然数）の部分領域の各々について、第２プロセッサに実行させる部分画像データの生成処理の内容を規定する第２部分指示を生成し、
前記第１プロセッサは、前記画像データ生成処理終了通知の受信タイミングと前記第２同期信号の受信タイミングとに基づいて、Ｍ個の前記第２部分指示のうちの何れかの生成処理の開始タイミングを遅延させることを特徴とする画像データ生成装置。
【符号の説明】
【０１１２】
１  表示装置
２  ディスプレイ
３ａ、３ｂ、３ｃ  表示領域
１００  プロセッサ（ＣＰＵ）
２００  プロセッサ（ＧＰＵ）
２１０  メモリ（第１ＶＲＡＭ）
２２０  内部バス
２５０  画像データ生成部
３００  メモリ（第２ＶＲＡＭ）
４００  メモリ
５００  ディスプレイコントローラ
７００  バス
８００  バッテリ
１１０  インストラクション生成部
１２０  ライブラリ
１３０  ドライバ
１３１  送信部
１３２  受信部
１３３  動作モード制御部
１４０  タイマ
１５０  時間差検出部
１６０  フィードバック制御部
１７０  合成処理部
【図１】
2016099792.tif 000003
【図２】
2016099792.tif 000004
【図３】
2016099792.tif 000005
【図４】
2016099792.tif 000006
【図５】
2016099792.tif 000007
【図６】
2016099792.tif 000008
【図７】
2016099792.tif 000009
【図８】
2016099792.tif 000010
【図９】
2016099792.tif 000011
【図１０】
2016099792.tif 000012
【図１１】
2016099792.tif 000013
【図１２】
2016099792.tif 000014
【図１３】
2016099792.tif 000015
【図１４】
2016099792.tif 000016
【図１５】
2016099792.tif 000017
【図１６】
2016099792.tif 000018
【図１７】
2016099792.tif 000019
【図１８】
2016099792.tif 000020
【図１９】
2016099792.tif 000021
【図２０】
2016099792.tif 000022
【図２１】
2016099792.tif 000023
【図２２】
2016099792.tif 000024
【図２３】
2016099792.tif 000025
【図２４】
2016099792.tif 000026
【図２５】
2016099792.tif 000027
【図２６】
2016099792.tif 000028
【図２７】
2016099792.tif 000029
【図２８】
2016099792.tif 000030
【図２９】
2016099792.tif 000031
【図３０】
2016099792.tif 000032
【図３１】
2016099792.tif 000033
【図３２】
2016099792.tif 000034
【図３３】
2016099792.tif 000035
【図３４】
2016099792.tif 000036
【図３５】
2016099792.tif 000037