グラフィック カードの DirectX バージョンのアップグレード?

グラフィック カードの DirectX バージョンのアップグレード?

グラフィック カードを購入したり、仕様を確認したりすると、サポートされる DirectX のバージョンが表示されます (私の場合、カードは 10 をサポートしています)。私が知りたいのは、Microsoft が新しいバージョン 11 をリリースしたときに、このカードが DX11 標準で動作しない原因は何なのかということです。

これは実際のグラフィック カード自体のファームウェアの問題だと私は考えています。これをフラッシュして最新バージョンをサポートすることはできないのでしょうか? それとも、この DX10 カードは DX11 をサポートして問題なく実行できるのでしょうか? DX11 がまだリリースされていなかったため、Nvidia がそれをそのようにラベル付けできなかっただけなのでしょうか?

これについて何か良い洞察力をお持ちの方は、私に教えてください!

編集: わかりました。このスレッドに反対票を投じたり、スレッドを閉じるように投票したりする場合は、なぜそれが「愚かな質問」だと思うのか説明してください。完全なハードウェアの変更を必要とする DX バージョン間の違いが何なのか、またはどのようになのか、真剣に知りたいです。GPU の命令セットは同じで、ハードウェアの唯一の違いは、新しいものの方が VRAM が高速で、ストリーム プロセッサが多いなどです。では、なぜ DX10 カードをアップグレードして DX11 をサポートできないのでしょうか? 理由を教えてください。

答え1

DirectX 10 カードを DirectX 11 にアップグレードできない理由は、おそらく DirectX 11 が数学演算における特定の精度レベルなどの特定の機能を義務付けているためでしょう。そのようなことは、DirectX 11 で動作するように設計されていないハードウェアにバックポートするのは難しく、少し面倒です。

これは、特定の CPU が新しい CPU によって導入された新機能をサポートしていないのと同じです。確かに新機能はエミュレートできますが (ネイティブ実装よりもそれほど遅くない可能性があります)、CPU 自体は必要な機能を実際にサポートしません。同様のアイデアとして、SSE 命令を非 SSE プロセッサでエミュレートする可能性が考えられます。確かに可能ですが、多くの変更が必要であり、完全なハードウェア実装よりもはるかに遅くなります。

カスタム ソフトウェアを使用すれば、DirectX 10 カードを DirectX 11 カードと同じくらい見栄え良くし、ほぼすべての操作を同様に実行できる可能性がありますが、DirectX 11 で必須のすべてのネイティブ機能や追加の精度が失われ、一般にソフトウェア/エミュレーション レイヤーは完全なハードウェア アプローチよりもかなり遅くなると思います。

答え2

DirectX 10以降、Microsoftは「互換性ビット」を廃止し、カードに最低限のDirectXレベルを設定することにしました。カードがDX11互換であれば、すべてのDX11機能これにより、開発者にとって作業が容易になり (機能を使用する前にその機能が使用可能かどうかを確認する必要がなくなります)、より一貫したエクスペリエンスが保証されます。

概念的な観点から、このスレッドを閲覧した人は、DX10 から DX11 に移行するためのハードウェアの変更には何が必要だと思いますか? GPU とストリーム プロセッサはすべて、同じか非常に類似した命令セットを持っています。

実はそうではありません。繰り返しますが、上で述べたように、カードがハードウェアDX11対応で、すべてのDX11機能をサポートしている必要があります過去には、DirectXのバージョン間での変更持っているパイプライン アーキテクチャ、シェーダー モデル (およびサポートされる言語/シェーダー)、浮動小数点精度、命令セット拡張など、GPU ハードウェア自体の側面が変更されました。

その間これらすべてではないDX10 から DX11 への移行により変更された点として、ハードウェア側とソフトウェア側の両方で実装された追加機能があります (これらの変更のほとんどはクローズドソースであるため、特定の変更についてはコメントできません)。

そうは言っても、あなたはできるDirectX 9/10ハードウェアを使用してDirectX 11ソフトウェアを実行しますが、DirectX 11の追加機能(テッセレーション、マルチスレッドレンダリング、コンピュートシェーダー)は使用せず、開発者がアプリケーションを適切に実装していることを前提としています。これまで実装に文字通りコストがかからないため、これは問題になります。これが、私が前に「互換性ビット」について言及した理由です。

最新かつ最高の DX レベルの新機能を追加する場合は、ハードウェアに問い合わせて、最新の DX レベルをサポートしているかどうかを確認します。サポートしている場合は有効にし、サポートしていない場合は次の DX レベルにフォールバックします (特定のハードウェア機能の可用性を確認するのではなく)。これが、Direct3D 11 ライブラリを使用してコンパイルされたアプリケーションが Direct3D 9/10 互換ハードウェアで実行できる理由です。

答え3

「ファームウェアの更新」は、すべての問題の解決策ではありません。各バージョンの DirectX 要件には、ファームウェア ソリューションだけでなくハードウェアも含まれます。

答え4

これは、グラフィックス カードが製造されるとき、GPU は認定されている DirectX 標準内でのみ動作するように設計されているためです。通常、DirectX は以前のバージョンと下位互換性があるため、必要な作業は、いくつかの数学的計算の精度をそこここで高めることだけです。ただし、新しい DX バージョンでは、新しいハードウェア サポートを必要とする新しい機能 (DX11 で追加されたテッセレーションなど) が導入されることもあります。グラフィックス カードの実際の内部はプログラム可能ではありません (シェーダーは別で、これも DX 仕様で指定されています)。ファームウェアは、汎用ロジック チップが実行する内部メモリ上に存在するソフトウェアの一種です。GPU の強みは、汎用ではなく、特定のタスクを非常に効率的に実行するように特別に設計されていることです。これらの特定のタスクは、まさに DX 仕様で概説されているタスクです。そのため、新しい DX バージョンがリリースされると、新しいハードウェア アップデートを行う必要があり、新しい GPU が必要になります。確かに、ボード メーカーはより高速なメモリなどを追加できますが、GPU が製造されると、内部のロジックを変更することはできません。

関連情報