(57)【要約】  本願の実施形態で開示されるものは、リソース構築方法、ユーザー・デバイス、及びシステムであり、本方法はクラウド・インタラクティブ・システムで使用され、クラウド・インタラクティブ・システムはユーザー・デバイス及びサーバーを含み、ユーザー・デバイスはGPUを含み、GPUは対応するデフォルト・リソース・プールを有し、本願の実施形態における方法は：ユーザー・デバイスが、サーバーにより送信されたレンダリング・データを受信するステップであって、レンダリング・データは、レンダリング命令とレンダリング命令に対応するレンダリング・リソースとを含む、ステップ；レンダリング・リソースによりデフォルト・リソース・プールにおいて作成される必要があるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソースとして記録するステップ；レンダリング命令に基づいて、ユーザー・デバイスが、GPUはロスの状態であるか否かを判断し、そうである場合、GPUリカバリを実行するか否かを判断するステップ；及びGPUリカバリを実行するように判断した場合に、ユーザー・デバイスが、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するステップを有する。本願の実施形態は、システムのノーマルな利用を保証し、ユーザーの体感を改善する。
2019509547.tif 000002
【特許請求の範囲】
【請求項１】
リソースを再構築する方法であって、前記方法はユーザー・デバイスとサーバーとを有するクラウド・インタラクティブ・システムに適用され、前記ユーザー・デバイスは、デフォルト・リソース・プールに対応するグラフィックス処理ユニット(GPU)を有し、前記方法は：
前記ユーザー・デバイスが、前記サーバーにより送信されたレンダリング・データを受信するステップであって、前記レンダリング・データは、レンダリング命令と、前記レンダリング命令に対応するレンダリング・リソースとを含む、ステップ；
前記ユーザー・デバイスが、前記レンダリング・リソースに応じて前記デフォルト・リソース・プールにおいて構築されるGPUリソースを、前記デフォルト・リソース・プールにおいてホールドされたリソースとして記録するステップ；
前記ユーザー・デバイスが、前記GPUはロスの状態であるか否かを前記レンダリング命令に応じて判断し、前記GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断するステップ；及び
前記GPUリカバリを実行するように判断された場合に、前記ユーザー・デバイスが、前記デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築するステップ；
を有する方法。
【請求項２】
前記レンダリング命令は、前記GPUの現在状態を検出する第1検出ファンクションを含み；
前記ユーザー・デバイスが、前記GPUはロスの状態であるか否かを前記レンダリング命令に応じて判断するステップは：
前記ユーザー・デバイスが、前記レンダリング命令をリプレイし、前記第1検出ファンクションによって返される第1リターン値を取得するステップ；及び
前記ユーザー・デバイスが、前記第1リターン値に基づいて、前記GPUはロスの状態にあるか否かを判断するステップ；
を含む、請求項1に記載の方法。
【請求項３】
前記GPUがロスの状態にあると判断された後に、前記方法は：
前記ユーザー・デバイスが、前記GPUリカバリを実行するか否かを検出するための第2検出ファンクションを前記レンダリング命令に挿入するステップ；
を含み、前記ユーザー・デバイスが、前記GPUリカバリを実行するか否かを判断するステップは：
前記ユーザー・デバイスが、レンダリング命令をリプレイし、前記第2検出ファンクションにより返される第2リターン値を取得するステップ；及び
前記ユーザー・デバイスが、前記第2リターン値に基づいて、前記GPUリカバリを実行するか否かを判断するステップ；
を有する、請求項1又は2に記載の方法。
【請求項４】
前記レンダリング・リソースに応じて前記デフォルト・リソース・プールにおいて構築されるGPUリソースがターゲットGPUリソースを含み、前記レンダリング命令は前記ターゲットGPUリソースのライフ・サイクル情報を含み；
前記方法は：
前記ユーザー・デバイスが、前記ターゲットGPUリソースのライフ・サイクルが終了した後に、前記ターゲットGPUリソースをリリースし、前記ターゲットGPUリソースが前記デフォルト・リソース・プールにおいてホールドされたリソースである旨の記録を削除するステップ；
を更に有する請求項1又は2に記載の方法。
【請求項５】
前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて前記デフォルト・リソース・プールにおいてリソースを再構築した後に、前記方法は：
前記ユーザー・デバイスが、前記デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたか否かを判断し、前記デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたとは限らない場合、前記デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築するステップ；
を更に有する請求項1又は2に記載の方法。
【請求項６】
クラウド・インタラクティブ・システムに含まれるユーザー・デバイスであって、前記クラウド・インタラクティブ・システムはサーバーも含み、前記ユーザー・デバイスは、デフォルト・リソース・プールに対応するグラフィックス処理ユニット(GPU)を有し、前記ユーザー・デバイスは：
前記サーバーにより送信されたレンダリング・データを受信するように構成される受信ユニットであって、前記レンダリング・データは、レンダリング命令と、前記レンダリング命令に対応するレンダリング・リソースとを含む、受信ユニット；
前記レンダリング・リソースに応じて前記デフォルト・リソース・プールにおいて構築されるGPUリソースを、前記デフォルト・リソース・プールにおいてホールドされたリソースとして記録する記録ユニット；
前記GPUはロスの状態であるか否かを前記レンダリング命令に応じて判断し、前記GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断する判断ユニット；及び
前記GPUリカバリを実行するように判断された場合に、前記デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築する再構築ユニット；
を有するユーザー・デバイス。
【請求項７】
前記レンダリング命令は、前記GPUの現在状態を検出する第1検出ファンクションを含み；
前記判断ユニットは、前記レンダリング命令をリプレイし、前記第1検出ファンクションによって返される第1リターン値を取得し、前記第1リターン値に基づいて、前記GPUはロスの状態にあるか否かを判断するように構成される；
請求項6に記載のユーザー・デバイス。
【請求項８】
前記GPUがロスの状態にあると判断された後に、前記GPUリカバリを実行するか否かを検出するための第2検出ファンクションを前記レンダリング命令に挿入するように構成される挿入ユニット；
を更に有し、前記判断ユニットは、前記レンダリング命令をリプレイし、前記第2検出ファンクションにより返される第2リターン値を取得し、前記第2リターン値に基づいて、前記GPUリカバリを実行するか否かを判断するように更に構成される；
請求項6又は7に記載のユーザー・デバイス。
【請求項９】
前記レンダリング・リソースに応じて前記デフォルト・リソース・プールにおいて構築されるGPUリソースがターゲットGPUリソースを含み、前記レンダリング命令は前記ターゲットGPUリソースのライフ・サイクル情報を含み；
前記ユーザー・デバイスは：
前記ターゲットGPUリソースのライフ・サイクルが終了した後に、前記ターゲットGPUリソースをリリースし、前記ターゲットGPUリソースが前記デフォルト・リソース・プールにおいてホールドされたリソースである旨の記録を削除するように構成される削除ユニット；
を更に有する請求項6又は7に記載のユーザー・デバイス。
【請求項１０】
前記再構築ユニットは、
前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて前記デフォルト・リソース・プールにおいてリソースを再構築した後に、前記デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたか否かを判断し；及び
前記デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたとは限らない場合、前記デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築する；
ように更に構成される、請求項6又は7に記載のユーザー・デバイス。
【請求項１１】
ユーザー・デバイス及びサーバーを有するクラウド・インタラクティブ・システムであって、前記ユーザー・デバイスは、は請求項6ないし10のうち何れか一項に記載のユーザー・デバイスである、クラウド・インタラクティブ・システム。
【請求項１２】
1つ以上のコンピュータ・プログラムを保存する不揮発性記憶媒体であって、前記コンピュータ・プログラムは1つ以上のメモリを有するプロセッサにより実行される命令を有し、前記命令は、コンピュータにより実行される場合に、前記コンピュータにオペレーションを実行させ、前記オペレーションは：
サーバーにより送信されたレンダリング・データを受信するステップであって、前記レンダリング・データは、レンダリング命令と、前記レンダリング命令に対応するレンダリング・リソースとを含む、ステップ；
前記レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースを、前記デフォルト・リソース・プールにおいてホールドされたリソースとして記録するステップ；
GPUはロスの状態であるか否かを前記レンダリング命令に応じて判断し、前記GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断するステップ；及び
前記GPUリカバリを実行するように判断された場合に、前記デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、前記デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築するステップ；
を有する、不揮発性記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
＜関連出願＞
本願は中国国家知識産権局に2016年1月29日付で出願された「GPUリソース再構築方法、ユーザー・デバイス及びシステム」と題する中国特許出願第201610067210.1号による優先権を主張しており、その内容全体は本願のリファレンスに組み込まれる。
＜技術分野＞
【０００２】
本開示はクラウド技術の技術分野に関連し、特に、リソースを再構築する方法、ユーザー・デバイス及びシステムに関連する。
＜背景技術＞
【０００３】
近年のネットワーク帯域幅及び端末技術の急速な発達とともに、クラウド・コンピューティング技術の成熟はクラウド・インタラクティブ・システムを促進している。既存のクラウド・インタラクティブ・システムは、通常、サーバーと複数のユーザー・デバイスとを含み、サーバーはクラスタ・サーバーであってもよく、複数のインタラクティブ・アプリケーションがインタラクティブ・システムで動作することが可能である。
【０００４】
今のところ、既存の技術におけるクラウド・インタラクティブ・システムでの画像レンダリングのアプリケーションに関し、画像をレンダリングしてレンダリングされた画像フレームをユーザー・デバイスへ送信することはサーバーの責務であり、ユーザー・デバイスは、レンダリングされた画像フレームを受信した後、画像フレームを直接的にデコードし、画像を表示する。クラウド・インタラクティブ・システムでは、GPUリソースの利用状態は、画像を表示するユーザー・デバイスに直接的には記録されず、そのような動作は、GPUの喪失後にGPUを再構築する場合に、GPUリソースをリリース及び再構築することに対する失敗を招く。
【発明の概要】
【０００５】
本願の実施形態では、システムのノーマルな利用を保証し且つユーザーの体感を改善する、リソースを構築する方法、ユーザー・デバイス、システム及び記憶媒体が提供される。
【０００６】
本開示の第1側面はリソースを再構築する方法を提供することである。本方法はクラウド・インタラクティブ・システムに適用される。クラウド・インタラクティブ・システムはユーザー・デバイス及びサーバーを含む。ユーザー・デバイスはグラフィックス処理ユニット(GPU)を含む。GPUはデフォルト・リソース・プールに対応する。
【０００７】
本方法は：ユーザー・デバイスが、サーバーにより送信されたレンダリング・データを受信するステップであって、レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む、ステップ；ユーザー・デバイスが、レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソース(held  resources  in  the  default  resource  pool)として記録するステップ；  ユーザー・デバイスが、GPUはロスの状態であるか否かをレンダリング命令に応じて判断し、GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断するステップ；及びGPUリカバリを実行するように判断された場合に、ユーザー・デバイスが、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するステップを含む。
【０００８】
本開示の第2側面はユーザー・デバイスを提供することである。ユーザー・デバイスはクラウド・インタラクティブ・システムに含まれる。クラウド・インタラクティブ・システムはサーバーも含む。ユーザー・デバイスはグラフィックス処理ユニット(GPU)を含む。GPUはデフォルト・リソース・プールに対応する。
【０００９】
ユーザー・デバイスは：サーバーにより送信されたレンダリング・データを受信するように構成される受信ユニットであって、レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む、受信ユニット；レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソースとして記録する記録ユニット；GPUはロスの状態であるか否かをレンダリング命令に応じて判断し、GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断する判断ユニット；及びGPUリカバリを実行するように判断された場合に、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築する再構築ユニットを含む。
【００１０】
本開示の第3側面は、ユーザー・デバイス及びサーバーを含むクラウド・インタラクティブ・システムを提供することである。ユーザー・デバイスは第2側面によるユーザー・デバイスである。
【００１１】
本開示の第4側面は、コンピュータが読み取り可能な命令を保存する不揮発性記憶媒体を提供することである。命令がコンピュータにより実行されると、コンピュータは、上述したようなリソース再構築方法を実行する。
【図面の簡単な説明】
【００１２】
【図１】クラウド・ゲーム・アーキテクチャの概略図。
【００１３】
【図２】本開示の実施形態に従ってGPUリソースを再構築する方法の概略図。
【００１４】
【図３】本開示の実施形態によるGPUリソースを再構築する方法におけるクラウド・ゲーム・アーキテクチャの特定の概略図。
【００１５】
【図４】本開示の別の実施形態によるGPUリソースを再構築する方法の概略図。
【００１６】
【図５】本開示の実施形態によるユーザー・デバイスの概略図。
【００１７】
【図６】本開示の別の実施形態によるユーザー・デバイスの概略図。
【発明を実施するための形態】
【００１８】
本開示の実施形態では、システムのノーマルな利用を保証し且つユーザーの体感を改善するリソース再構築方法、ユーザー・デバイス、システム及び記憶媒体が提供される。
【００１９】
本開示の実施形態による技術的解決手段は、本開示による図面に関連して明確かつ完全に記述されており、それにより、当業者は本開示による技術的解決手段を更に理解することができるようになる。明らかに、説明される実施形態は本開示の実施形態の全てではなく、ほんの僅かなものに過ぎない。何らの創作的労力も無しに本開示による実施形態に基づいて当業者により把握される他の如何なる実施形態も、本開示の保護範囲に属する。
【００２０】
本開示についての上記の図面、特許請求の範囲及び明細書において「第1」、「第2」等のような用語は(それらが存在する場合には)、特定の順序又はそれらの優先度を示すものではなく、個々の類似するオブジェクトを伝えるためにそこで使用されているに過ぎない。ここで使用される用語は相互交換可能であってもよく、それにより、本開示の実施形態はここで説明されるもの以外の順序で実現され得ることが理解されるべきである。更に、「含む」、「有する」又は他の何らかの異形の用語は、非排他的であるように意図される。例えば、一連のステップ又はユニットを含むプロセス、方法、システム、製品又はデバイスは、明示的に列挙されたステップやユニットに限定されず、明示的には列挙されていない他のステップやユニット、或いはプロセス、方法、製品又はデバイスに固有のものを更に含んでよい。
【００２１】
以下、本開示でリソースを再構築する方法の実施形態が先ず説明される。
【００２２】
図1に示されるように、本開示の実施形態におけるリソースを再構築する方法は、クラウド・インタラクティブ・システムに適用される。クラウド・インタラクティブ・システムはユーザー・デバイスとサーバーとを含む。複数のユーザー・デバイスが存在してもよい。サーバーはクラスタ・サーバー(a  cluster  server)であってもよい。複数のインタラクティブ・アプリケーションがクラウド・インタラクティブ・システムで動作することが可能である。ユーザー・デバイスは、パーソナル・コンピュータ(PC)、ラップトップ、又はモバイル・フォンのような端末デバイスであてもよい。サーバーは専用のゲーム・サーバーであってもよい。今、データ・フローは、サーバーによって記録され、圧縮された後にユーザー・デバイスへ送信される。ユーザー・デバイスは、レンダリング命令をリプレイし(又は実行し)、レンダリング・リソースをプレイし(又は再生し)、レンダリング画像をリプロデュース(再現)してよい。ユーザー・デバイスは、グラフィックス処理ユニット(GPU)を含む。
【００２３】
ダイレクト3D(Direct3D)はウィンドウズ・オペレーティング・システムのためにマイクロソフト・コーポレーションにより開発された3次元(3D)グラフィック・プログラミング・インターフェースであり、このインターフェースは、ウィンドウズの3Dゲーム開発用のベース・ライブラリであり、且つGPUのプログラミング・インターフェースである。
【００２４】
ダイレクト3Dで管理されるGPUリソースは、ストレージ・ロケーションに応じて3種類に分類され、その3種類は：管理リソース・プールにおけるリソース(管理リソース)、デフォルト・リソース・プールにおけるリソース(デフォルト・リソース)、及びシステム・メモリ・リソース・プールにおけるリソース(システム・メモリ・リソース)である。管理リソース・プールにおけるリソースとシステム・メモリ・リソース・プールにおけるリソースとは、GPUロス(GPU  loss)により影響されず、GPUロスの場合に処理されることを要しないが、デフォルト・リソース・プールにおけるリソースは、GPUロス後にデバイスは復元されつつあることが検出されると、リリースされ再構築されることを要する。
【００２５】
ユーザー・デバイスは、本開示の実施形態ではデフォルト・リソース・プールにおけるリソースに対応する。ユーザー・デバイスは、スマートフォン又はタブレット・コンピュータのようなスマート端末、MP3プレーヤ(MP3は、「Moving  Picture  Experts  Group  Audio  Layer  III」の略である)、MP4プレーヤ、ラップトップ・コンピュータ、車載オーディオ・デバイス、デスクトップ・コンピュータ等であってもよい。
【００２６】
図2に関し、本開示の実施形態におけるリソースを再構築する方法は、ステップ201ないしステップ205を含む。
【００２７】
ステップ201において、ユーザー・デバイスは、サーバーから送信されるレンダリング・データを受信する。
【００２８】
レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む。データ・フローは、サーバーにより記録され、圧縮された後にユーザー・デバイスへ送信される。ユーザー・デバイスは、サーバーにより送信されるレンダリング・データを受信する。
【００２９】
ステップ202において、ユーザー・デバイスは、レンダリング・リソースに応じてデフォルト・リソース・プールで構築されるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソースとして記録する。
【００３０】
ユーザー・デバイスは、レンダリング・リソースをプレイする場合に、デフォルト・リソース・プールにおいて対応するGPUリソースを構築する必要がある。このステップでは、レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースは、デフォルト・リソース・プールにおけるホールドされたリソースとして記録される。レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースが、デフォルト・リソース・プールにおいて保持されたリソースとして既に記録されている場合、それらは保持されたリソースとして再び記録されはしない点に留意すべきである。
【００３１】
ステップ203において、ユーザー・デバイスは、GPUがロスの状態にあるか否かを判断する。ステップ204は、GPUがロスの状態にある場合に実行される。
【００３２】
GPU(グラフィックス処理ユニット)は、グラフィックス・オペレーションを実行するマイクロプロセッサである。GPUの使用権(Use  rights  of  the  GPU)は、ダイレクト3Dに基づくゲームがGPUを利用する場合に剥奪されるかもしれず、その剥奪は、事実上のレンダリングの不具合を招き、アプリケーションによりホールドされたGPUリソースもリリースされる。このプロセスは、GPUロスと呼ばれる。GPUロスに関連する別の状態は、GPUリカバリ(GPU  recovery)であり、GPUリカバリでは、アプリケーションはGPUの使用権に関して再割り当てを受ける。アプリケーションは、GPUが失われている場合には有効にレンダリングを継続することができず、デバイスが復元される場合、過去にホールドされたGPUリソースはリリースされ再構築される。
【００３３】
実施形態では、レンダリング命令は、GPUの現在状態を検出する第1検出ファンクションを有してもよい。この場合、GPUがロスの状態にあるか否かをユーザー・デバイスが判断するステップは：ユーザー・デバイスがレンダリング命令をリプレイし、第1検出ファンクションにより返される第1リターン値を取得するステップと、ユーザー・デバイスが、第1リターン値に基づいてGPUはロスの状態にあるか否かを判断するステップとを含む。
【００３４】
第1検出ファンクションは、レンダリング命令に含まれるプレゼント・ファンクション(a  Present  function)であってもよい。GPUロスの場合、プレゼント・ファンクションは「D3DERR_DEVICELOST」を返す。返される値がこの時点で取得される場合、GPUがロスであるか否かが判断されることが可能である。
【００３５】
ステップ204において、ユーザー・デバイスは、GPUリカバリを実行するか否かを判断する。ステップ205は、GPUリカバリを実行するように決定された場合に実行される。
【００３６】
実施形態では、GPUはロスの状態にあると判断した後に、本方法は、レンダリング命令でGPUリカバリを実行すべきかいなかを判断するために、ユーザー・デバイスは第2検出ファンクションを挿入することを更に含んでもよい。この場合、GPUリカバリを実行するか否かをユーザー・デバイスが判断するステップは、ユーザー・デバイスが、レンダリング命令をリプレイし、第2検出ファンクションにより返される第2リターン値を取得すること、及びユーザー・デバイスが、第2リターン値に基づいてGPUリカバリを実行するか否か決定することを含んでもよい。
【００３７】
第2検出ファンクションは、「テスト協同レベル・ファンクション」(a  TestCooperativeLevel  function)であってもよい。テスト協同レベル・ファンクションのリターン値が「D3DERR_DEVICENOTRESET」として取得される場合、GPUリカバリを実行するように判断される。
【００３８】
実施形態では、テスト協同レベル・ファンクションは、ステップ203でGPUロス状態にあるか否かを判断するために使用されてもよい。テスト協同レベル・ファンクションのリターン値が「D3DERR_DEVICELOST」を含む場合、GPUがロストか否かは、取得されたリターン値に基づいて判断されることが可能である。
【００３９】
ステップ205において、ユーザー・デバイスは、デフォルト・リソース・プールにおけるホールドされたリソースをリリースし、デフォルト・リソース・プールにおけるホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおけるリソースを再構築する。
【００４０】
一般に、ユーザー・デバイスにおけるアプリケーションがグラフィックス処理ユニット(GPU)である場合、GPUの使用権は剥奪されるかもしれず、アプリケーションによりホールドされたGPUリソースもリリースされ、このリリースはGPUロスと呼ばれる。GPUロスに関連する別の状態はGPUリカバリであり、GPUリカバリでは、アプリケーションはGPUの使用権の再割り当てを受ける。デバイスが復元される場合、過去にホールドされたGPUリソースはリリースされ再構築される。
【００４１】
これは、GPUロスの場合に、GPUがグラフィックス・カードとの接触を失うことに起因しており、それにより、グラフィックス・カードに関連する全てのリソースはデバイスにより再びアクセスできなくなり、これらのリソースはリリースされ再構築されなければならない。一般に、パラメータ「D3DPOOL_DEFAULT」(デフォルト・リソース・プール)とともに再構築されるリソースは全てグラフィックス・カードに割り当てられるメモリ・リソースである。従って、デバイスをリセットする前に、「D3DPOOL_DEFAULT」(デフォルト・リソース・プール)タイプの全てのリソースがリリースされることが保証されるべきである。
【００４２】
従って、GPUリカバリを実行するように決定される場合、ユーザー・デバイスは、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築する必要がある。実施形態では、デバイスのロス及びリカバリを処理するためのリセット・ファンクション(a  Reset  function)は、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するためにユーザー・デバイスにより使用されてもよい。
【００４３】
本開示の実施形態では、レンダリング・リソースに従ってデフォルト・リソース・プールで構築されるGPUリソースは、サーバーにより送信されたレンダリング・データを受信した後に、デフォルト・リソース・プールにおいてホールドされたリソースとして記録されている。GPUリカバリでは、GPUロスの後、デフォルト・リソース・プールにおいてホールドされたリソースはリリースされ、デフォルト・リソース・プールにおけるリソースは、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて再構築され、これにより、GPUリカバリを実現し、インタラクティブ・アプリケーション・システムにおいて或る状況を回避し、その状況は、全てのデータはサーバーからしか得ることができないことに起因して、GPUのロスの後にGPUが復元できない状況であり、実施形態はシステムのノーマルな利用を保証してユーザーの体感を改善する。
【００４４】
選択的に、本開示の実施形態において、レンダリング命令に応じてデフォルト・リソース・プールにおいて構築されるGPUリソースはターゲットGPUリソースを含み、レンダリング命令はターゲットGPUリソースのライフ・サイクル情報を含む。本方法は、ユーザー・デバイスが、ターゲットGPUリソースのライフ・サイクルを終えた後にターゲットGPUリソースをリリースし、ターゲットGPUリソースがデフォルト・リソース・プールにおいてホールドされたリソースである旨の記録を削除するステップを更に含む。即ち、デフォルト・リソース・プールにおいてホールドされたGPUリソースは、リソースのライフ・サイクルが終わった後にリリースされ、そのリソースはデフォルト・リソース・プールにおいてホールドされた旨の記録は削除され、この削除は、リソースの更に有効利用を達成し、デフォルト・リソース・プールにおいてホールドされたリソースを再構築する場合に不要なリソース再構築を回避する。
【００４５】
選択的に、本開示の実施形態では、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいてデフォルト・リソース・プールにおいてリソースを再構築した後に、本方法は、ユーザー・デバイスが、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたか否かを判断し、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたとは限らない場合、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築することを更に含んでもよい。
【００４６】
或る特殊な場合では、デフォルト・リソース・プールにおいてホールドされたリソースが全て成功裏に再構築されたとは限らない場合がたまたま生じるかもしれず、その場合、デフォルト・リソース・プールにおいてホールドされたリソースをリリース及び再構築するステップが再実行され、その再実行は、デフォルト・リソース・プールにおいてホールドされたリソースが成功裏に再構築されることを保証する。
【００４７】
以下、ユーザー・デバイスで動作するクラウド・ゲーム・クライアントがユーザー・デバイスの例として使用される具体的なアプリケーションのシナリオとともに、リソースを構築する上記方法が説明される。図3に関し、クラウド・ゲーム・サーバー上でゲームが動作している。データ・フローは、クラウド・ゲーム・サーバーにより記録され、圧縮された後に、クラウド・ゲーム・クライアントへインターネットを介して送信される。クラウド・ゲーム・クライアントは、レンダリング命令をリプレイし、レンダリング・データをプレイし、レンダリング画像を再現する。実施形態では、クラウド・ゲーム・サーバーから受信されるレンダリング・リソースに従って、デフォルト・リソース・プールにおいて構築されるGPUリソースを記録するために、ダイレクト3D状態レコーダーがクラウド・ゲーム・クライアントに提供される。
【００４８】
図4に関し、本開示の別の実施形態におけるリソースを再構築する方法は、ステップ401ないしステップ406を含む。
【００４９】
ステップ401において、クラウド・ゲーム・クライアントは、クラウド・ゲーム・サーバーにより送信されたレンダリング・データを受信する。
【００５０】
レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む。
【００５１】
ステップ402において、クラウド・ゲーム・クライアントは、ダイレクト3D状態レコーダーにより、レンダリング・リソースに従ってダイレクト・リソースで構築されるGPUリソースを、デフォルト・リソースにおいてホールドされたリソースとして記録する。
【００５２】
レンダリング命令は、プレゼント・ファンクションを含む。
【００５３】
ステップ403において、テスト協同レベル・ファンクションが、レンダリング命令に挿入される。
【００５４】
テスト協同レベル・ファンクションは、GPUリカバリを実行するか否かを判断するために使用される。
【００５５】
ステップ404において、クラウド・ゲーム・クライアントは、GPUがロスの状態にあるか否かを判断するために、レンダリング命令をリプレイする。ステップ405は、GPUがロスの状態にある場合に実行される。
【００５６】
GPUがロスの状態にあるか否かを判断するために、クラウド・ゲーム・クライアントがレンダリング命令をリプレイするステップは、クラウド・ゲーム・クライアントが、レンダリング命令をリプレイし、プレゼント・ファンクションのリターン値に基づいて、GPUがロスの状態にあるか否かを判断するステップを含んでもよい。プレゼント・ファンクションは、GPUがロスの状態に或る場合に「D3DERR_DEVICELOST」を返し、GPUがロスであるか否かは、リターン値が取得された場合に判断されることが可能である。
【００５７】
ステップ405において、クラウド・ゲーム・クライアントは、GPUリカバリを実行するか否かを判断する。
【００５８】
テスト協同レベル・ファンクションから取得されるリターン値が「D3DERR_DEVICENOTRESET」である場合、GPUリカバリを実行するように決定される。
【００５９】
ステップ406において、クラウド・ゲーム・クライアントは、デフォルト・リソースにおいてホールドされたリソースをリリースし、GPUリカバリを実行するように判断された場合に、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築する。
【００６０】
以下、ユーザー・デバイスの実施形態が説明される。ユーザー・デバイスはクラウド・インタラクティブ・システムに含まれる。クラウド・インタラクティブ・システムはサーバーも含む。サーバーは、グラフィックス処理ユニット(GPU)を含む。GPUはデフォルト・リソース・プールに対応する。
【００６１】
図5に関し、本開示の実施形態におけるユーザー・デバイス500は、受信ユニット501と、記録ユニット502と、判断ユニット503と、再構築ユニット504とを含む。
【００６２】
受信ユニット501は、サーバーにより送信されたレンダリング・データを受信するように構成され、レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む。
【００６３】
レンダリング・ユニット502は、レンダリング・リソースに従ってデフォルト・リソース・プールにおいて構築されるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソースとして記録するように構成される。
【００６４】
判断ユニット503は、GPUがロスの状態にあるか否かを判断し、GPUがロスの状態にあった場合、GPUリカバリを実行するか否かを判断するように構成される。
【００６５】
再構築ユニット504は、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、GPUリカバリを実行するように判断された場合には、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するように構成される。
【００６６】
本開示の実施形態では、レンダリング・リソースに従ってデフォルト・リソース・プールにおいて構築されるGPUリソースは、サーバーにより送信されたレンダリング・データを受信ユニット501により受信した後に、デフォルト・リソース・プールにおいてホールドされたリソースとして記録ユニット502により記録される。GPUのロスの後に、GPUリカバリを実行するように判断ユニット503により判断された場合、デフォルト・リソース・プールにおいてホールドされたリソースは、リリースされ、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、再構築ユニット504により再構築され、これにより、GPUリカバリを実現し、インタラクティブ・アプリケーション・システムにおいて或る状況を回避し、その状況は、全てのデータはサーバーからしか得ることができないことに起因して、GPUのロスの後にGPUが復元できない状況であり、実施形態はシステムのノーマルな利用を保証してユーザーの体感を改善する。
【００６７】
選択的に、レンダリング命令は、GPUの現在状態を検出する第1検出ファンクションを含む。
【００６８】
判断ユニット503は、レンダリング命令をリプレイし、第1ファンクションにより返される第1リターン値を取得し、第1リターン値に基づいて、GPUはロスの状態にあるか否かを判断するように構成される。
【００６９】
選択的に、ユーザー・デバイスは挿入ユニットを更に含む。
【００７０】
挿入ユニットは、GPUがロスの状態にあることが判断された後に、GPUリカバリを実行するか否かを検出する第2検出ファンクションをレンダリング命令に挿入するように構成される。
【００７１】
判断ユニット503は、レンダリング命令をリプレイし、第2検出ファンクションにより返される第2リターン値を取得し、第2リターン値に基づいてGPUリカバリを実行するか否かを判断するように更に構成される。
【００７２】
選択的に、レンダリング命令に従ってデフォルト・リソース・プールにおいて構築されるGPUリソースは、ターゲットGPUリソースを含み、レンダリング命令は、ターゲットGPUリソースのライフ・サイクル情報を含む。
【００７３】
ユーザー・デバイスは削除ユニットを更に含む。
【００７４】
削除ユニットは、ターゲットGPUリソースのライフ・サイクルが終了した後に、ターゲットGPUリソースをリリースし、ターゲットGPUリソースがデフォルト・リソース・プールにおいてホールドされたリソースである旨の記録を削除するように構成される。
【００７５】
デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいてデフォルト・リソースにおいてリソースを再構築した後に、再構築ユニット504は、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたか否かを判断するように更に構成され、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたとは限らない場合、再構築ユニット504は、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するように構成される。
【００７６】
本開示の実施形態におけるユーザー・デバイスは上記の機能的なエンティティの観点から説明されているが、以下、ハードウェア処理の観点から更に説明される。図6に関し、ユーザー・デバイスはクラウド・インタラクティブ・システムに適用され、クラウド・インタラクティブ・システムはサーバーを含む。本開示の実施形態におけるユーザー・デバイス600は、入力デバイス601と、出力デバイス602と、プロセッサ603と、メモリ604とを含む(プロセッサ603の個数は1つ又は複数であってもよく、図6では一例として1つのプロセッサ603が示されている)。ユーザー・デバイスはGPU605を更に含む。GPU605はデフォルト・リソース・プールに対応する。本開示の或る実施形態では、入力デバイス601と、出力デバイス602と、プロセッサ603と、メモリ604と、GPU605とはバスその他の手段により接続されることが可能である。図6では一例としてバス接続が示されている。
【００７７】
本開示の実施形態に関わるユーザー・デバイスは、図6に示されているものより多い又は少ないパーツを含んでもよく、2つ以上のコンポーネントを結合してもよく、或いは、異なるパーツの構成又は設定を有していてもよい。各々のコンポーネントは、1つ以上の信号処理及び/又は特定用途向け集積回路を含むハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。
【００７８】
メモリ604に保存されているオペレーション命令を呼び出すことにより、プロセッサ603は、以下のステップを実行するように使用され、そのステップは：入力ユニット601を介して、サーバーにより送信されたレンダリング・データを受信するステップであって、レンダリング・データは、レンダリング命令と、レンダリング命令に対応するレンダリング・リソースとを含む、ステップ；及びレンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースを、デフォルト・リソース・プールにおいてホールドされたリソースとして記録するステップである。
【００７９】
メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は、以下のステップを実行するように使用され、そのステップは：GPUはロスの状態であるか否かを判断し、GPUがロスの状態にあった場合に、GPUリカバリを実行するか否かを判断し、GPUリカバリを実行するように判断された場合に、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、デフォルト・リソース・プールにおいてリソースを再構築するステップである。
【００８０】
選択的に、レンダリング命令は、GPUの現在状態を検出する第1検出ファンクションを含む。メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は以下のステップを実行するように使用され、そのステップは、レンダリング命令をリプレイし、第1検出ファンクションによって返される第1リターン値を取得し、第1リターン値に基づいて、GPUはロスの状態にあるか否かを判断するステップである。
【００８１】
選択的に、メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は以下のステップを実行するように更に使用され、そのステップは、GPUがロスの状態にあると判断された後に、GPUリカバリを実行するか否かを検出するための第2検出ファンクションをレンダリング命令に挿入するステップである。
【００８２】
メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は以下のステップを実行するように更に使用され、そのステップは、レンダリング命令をリプレイし、第2検出ファンクションにより返される第2リターン値を取得し、
第2リターン値に基づいて、GPUリカバリを実行するか否かを判断するステップである。
【００８３】
選択的に、レンダリング・リソースに応じてデフォルト・リソース・プールにおいて構築されるGPUリソースはターゲットGPUリソースを含み、レンダリング命令はターゲットGPUリソースのライフ・サイクル情報を含む。
【００８４】
メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は以下のステップを実行するように更に使用され、そのステップは、ターゲットGPUリソースのライフ・サイクルが終了した後に、ターゲットGPUリソースをリリースし、ターゲットGPUリソースがデフォルト・リソース・プールにおいてホールドされたリソースである旨の記録を削除するステップである。
【００８５】
選択的に、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいてデフォルト・リソース・プールにおいてリソースを再構築した後に、メモリ604に保存されているオペレーション命令を呼び出すことにより、GPU605は以下のステップを実行するように更に使用され、そのステップは、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたか否かを判断し、デフォルト・リソース・プールにおいてホールドされたリソース全てが成功裏に再構築されたとは限らない場合、デフォルト・リソース・プールにおいてホールドされたリソースをリリースし、デフォルト・リソース・プールにおいてホールドされたリソースの記録に基づいて、前記デフォルト・リソース・プールにおいてリソースを再構築するステップである。
【００８６】
実施形態では、メモリ604はソフトウェア・プログラム及びモジュールを保存するために使用されてもよく、プロセッサ603は、メモリ604に保存されるソフトウェア・プログラム及びモジュールを動作させることにより、様々な機能アプリケーション及びデータ処理を実行する。
【００８７】
メモリ604は、主に、プログラム・ストレージ・エリア及びデータ・ストレージ・エリアを含んでもよい。プログラム・ストレージ・エリアは、オペレーティング・システム、少なくとも1つの機能により必要とされるアプリケーション等を保存してよい。データ・ストレージ・エリアは、サーバーの利用に応じて作成されるデータ(例えば、ミラーリングされたコンテナ・データ)等を保存するために使用されてもよい。更に、メモリ604は、高速ランダム・アクセス・メモリを含んでもよく、また、少なくとも1つのディスク・ストレージ・デバイス及びフラッシュ・メモリ・デバイスのような不揮発性メモリ、或いはその他の揮発性ソリッド・ステート・ストレージ・デバイスを含んでもよい。
【００８８】
プロセッサ603は信号処理能力を有する集積回路チップであってもよい。或る実現手段では、上記方法の各ステップは、集積論理回路、又はプロセッサ603内のソフトウェア形式の命令により完結されてもよい。
【００８９】
プロセッサ604は、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)その他のプログラム可能な論理デバイス、ディスクリート・ゲート又はトランジスタ論理デバイス、ディスクリート・ハードウェア・コンポーネントであってもよく、それらはパブリック・アプリケーションの方法、ステップ及び論理ブロック・ダイアグラムを実現又は実行することが可能なものである。汎用プロセッサはマイクロプロセッサ又は任意の標準的なプロセッサであってもよい。
【００９０】
本開示の実施形態で開示される方法のステップは、ハードウェア・デコード・プロセッサにより、或いは、デコード・プロセッサにおけるハードウェア及びソフトウェア・モジュールの組み合わせにより、直接的に実行されてもよい。ソフトウェア・モジュールは、ランダム・メモリ、フラッシュ・メモリ、リード・オンリ・メモリ、プログラマブル・リード・オンリ・メモリ、電気的に消去可能なプログラマブル・メモリ、レジスタ等のような当該技術分野で成熟している記憶媒体に存在してもよい。記憶媒体はメモリ604内に位置していてもよい。プロセッサ603は、メモリ604内の情報を読み込み、そのハードウェアにより上記の方法ステップを完結する。
【００９１】
コンピュータ記憶媒体も本開示の実施形態で提供され、コンピュータ記憶媒体はプログラムを保存する。プログラムは上記の方法の実施形態におけるリソースを再構築する方法ステップの全部又は一部を含む。
【００９２】
説明の簡便化のため、上記の実施形態において、各実施形態の説明は特定の重点を有することが、当業者に明らかである。或る実施形態で詳細ではない説明に関し、他の実施形態の関連する説明が参照されてよい。
【００９３】
上記の方法の実施形態は簡明化のために一連のアクションの組み合わせとして説明されていることに留意すべきである。本開示はアクションの説明された順番に限定されず、或るステップについては、本開示によるものと異なる順番で又は同時に実行されてよいことを、当業者は理解すべきである。また、本明細書で説明される実施形態は全て好ましい実施形態であり、包含されるアクション及びモジュールは必須でないかもしれないことも、当業者は理解すべきである。
【００９４】
本開示の実施形態によるシステム、デバイス及び方法は他の形式で実現されてもよいことが、理解されるべきである。例えば、上記の装置の実施形態は例示的なものであるに過ぎない。例えば、ユニットの区分けは単なる論理的な機能的な区分けに過ぎず、実際の実現手段では他の区分けが存在し得る。例えば、幾つかのユニット又はコンポーネントは互いに組み合わせられてもよいし、或いは他のシステムに統合されてもよいし、或いは何らの特徴が無視される又は実現されなくてもよい。更に、表示される又は議論される相互結合又は直接的なカップリング或いは通信コネクションは、何らかのインターフェース、デバイス又はユニットを介する間接的なカップリング又は通信コネクションであってもよく、電気的、機械的又は他の形式であってもよい。
【００９５】
個別的なコンポーネントとして説明されるユニットは、物理的に分離していてもしていなくてもよく、ユニットとして示されるコンポーネントは、一箇所に位置する又は複数のネットワーク・ユニットに分散されている物理的なユニットであってもなくてもよい。全部又は一部のユニットが、本開示の目的を達成するために必要に応じて選択されてよい。
【００９６】
更に、本開示による実施形態における複数の機能ユニットは、1つの処理ユニットに統合されてもよいし、或いはそれらのユニットは物理的に分離したユニットであってもよいし、2つ以上のユニットが1つのユニットに統合されてもよい。上記の統合されたユニットは、ハードウェアの形式で、又はソフトウェア機能ユニットの形式で実現されてもよい。
【００９７】
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立した製品として販売又は使用される場合、統合されたユニットはコンピュータ読み取り可能な記憶媒体に保存されてもよい。そのような理解に基づいて、本開示の技術的解決手段の本質、従来技術に寄与する部分、或いは技術的解決手段の全部又は一部は、ソフトウェア製品の形式で実現されてよい。コンピュータ・ソフトウェア製品は、記憶媒体に保存され、本開示に従う実施形態で説明される方法ステップの全部又は一部の実行をコンピュータ・デバイス(パーソナル・コンピュータ、サーバー、又はウェブ・デバイスであってもよい)に指図する複数の命令を含む。記憶媒体は、USBフラッシュ・ディスク、取り外し可能なハード・ディスク、リード・オンリ・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、ディスケット又は光ディスクのような、プログラム・コードを保存することが可能な任意の媒体であってよい。
【００９８】
上記の実施形態は、本開示の技術的解決手段を限定するものではなく単なる例示に過ぎない。上記の実施形態に関連して詳細な説明がなされているが、本開示の技術的解決手段又は何らかの技術的特徴に対して、変形及び代替が当業者により為されてよい。そのような如何なる変形又は均等物も、本開示の実施形態の技術的解決手段の精神及び範囲から逸脱した技術的解決手段にはならない。
【図１】
2019509547.tif 000003
【図２】
2019509547.tif 000004
【図３】
2019509547.tif 000005
【図４】
2019509547.tif 000006
【図５】
2019509547.tif 000007
【図６】
2019509547.tif 000008
【国際調査報告】
2019509547.tif 000009
2019509547.tif 000010
2019509547.tif 000011
2019509547.tif 000012