-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
414 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
--- | ||
title: "GPUAdapter: features プロパティ" | ||
slug: Web/API/GPUAdapter/features | ||
l10n: | ||
sourceCommit: b6984118ac9482e683a654edfefa4b426ca3c7ca | ||
--- | ||
|
||
{{APIRef("WebGPU API")}}{{SeeCompatTable}} | ||
|
||
{{domxref("GPUAdapter")}} インターフェイスの読み取り専用プロパティ **`features`** は、アダプターが対応している追加の機能を表現する {{domxref("GPUSupportedFeatures")}} オブジェクトを返します。 | ||
|
||
仮想のハードウェアで対応している機能であっても、対応するすべてのブラウザーの WebGPU ですべての機能が使用できるわけではないことに注意するべきです。これは、たとえば以下の場合など、仮想のシステム、ブラウザー、アダプターの制約によるものである可能性があります。 | ||
|
||
- 仮想のシステムがあるブラウザーと互換性がある方法で機能を利用可能にする保証ができないかもしれません。 | ||
- ブラウザーのベンダーが機能への対応を実装するセキュアな方法をまだ見つけられていないか、単に実装まで手が回っていないかもしれません。 | ||
|
||
WebGPU アプリケーションで特定の追加機能の恩恵を受けたい場合は、徹底的にテストすることが推奨されます。 | ||
|
||
## 値 | ||
|
||
{{domxref("GPUSupportedFeatures")}} オブジェクトのインスタンスです。これは [Set 風](/ja/docs/Web/JavaScript/Reference/Global_Objects/Set)オブジェクトです。 | ||
|
||
## 例 | ||
|
||
以下のコードでは、{{domxref("GPUAdapter")}} で `texture-compression-astc` 機能が利用可能かをチェックします。利用可能であれば、それを配列 `requiredFeatures` にプッシュし、{{domxref("GPUAdapter.requestDevice()")}} でこの機能を要件としてデバイスを要求します。 | ||
|
||
```js | ||
async function init() { | ||
if (!navigator.gpu) { | ||
throw Error("WebGPU に対応していません。"); | ||
} | ||
|
||
const adapter = await navigator.gpu.requestAdapter(); | ||
if (!adapter) { | ||
throw Error("WebGPU アダプターを要求できませんでした。"); | ||
} | ||
|
||
const requiredFeatures = []; | ||
|
||
if (adapter.features.has("texture-compression-astc")) { | ||
requiredFeatures.push("texture-compression-astc"); | ||
} | ||
|
||
const device = await adapter.requestDevice({ | ||
requiredFeatures, | ||
}); | ||
|
||
// ... | ||
} | ||
``` | ||
|
||
## 仕様書 | ||
|
||
{{Specifications}} | ||
|
||
## ブラウザーの互換性 | ||
|
||
{{Compat}} | ||
|
||
## 関連情報 | ||
|
||
- [WebGPU API](/ja/docs/Web/API/WebGPU_API) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
--- | ||
title: GPUAdapter | ||
slug: Web/API/GPUAdapter | ||
l10n: | ||
sourceCommit: ee9993f6186ca6673b96d226e63132b3e317813f | ||
--- | ||
|
||
{{APIRef("WebGPU API")}}{{SeeCompatTable}} | ||
|
||
{{domxref("WebGPU API", "WebGPU API", "", "nocode")}} の **`GPUAdapter`** インターフェイスは、GPU アダプターを表します。これを用いて {{domxref("GPUDevice")}}、アダプターの情報、機能、制限を要求できます。 | ||
|
||
`GPUAdapter` オブジェクトは {{domxref("GPU.requestAdapter()")}} メソッドを用いて要求できます。 | ||
|
||
{{InheritanceDiagram}} | ||
|
||
## インスタンスプロパティ | ||
|
||
- {{domxref("GPUAdapter.features", "features")}} {{Experimental_Inline}} {{ReadOnlyInline}} | ||
- : アダプターが対応している追加の機能を表現する {{domxref("GPUSupportedFeatures")}} オブジェクトです。 | ||
- {{domxref("GPUAdapter.isFallbackAdapter", "isFallbackAdapter")}} {{Experimental_Inline}} {{ReadOnlyInline}} | ||
- : 論理値です。アダプターが[フォールバックアダプター](/ja/docs/Web/API/GPU/requestAdapter#フォールバックアダプター)である場合は `true` を返し、そうでない場合は `false` を返します。 | ||
- {{domxref("GPUAdapter.limits", "limits")}} {{Experimental_Inline}} {{ReadOnlyInline}} | ||
- : アダプターが対応している制限を表現する {{domxref("GPUSupportedLimits")}} オブジェクトです。 | ||
|
||
## インスタンスメソッド | ||
|
||
- {{domxref("GPUAdapter.requestAdapterInfo", "requestAdapterInfo()")}} {{Experimental_Inline}} | ||
- : アダプターに関する特定用の情報が格納された {{domxref("GPUAdapterInfo")}} オブジェクトで解決する {{jsxref("Promise")}} を返します。 | ||
- {{domxref("GPUAdapter.requestDevice", "requestDevice()")}} {{Experimental_Inline}} | ||
- : GPU とのやりとり用の第一インターフェイスである {{domxref("GPUDevice")}} オブジェクトで解決する {{jsxref("Promise")}} を返します。 | ||
|
||
## 例 | ||
|
||
```js | ||
async function init() { | ||
if (!navigator.gpu) { | ||
throw Error("WebGPU に対応していません。"); | ||
} | ||
|
||
const adapter = await navigator.gpu.requestAdapter(); | ||
if (!adapter) { | ||
throw Error("WebGPU アダプターを要求できませんでした。"); | ||
} | ||
|
||
const device = await adapter.requestDevice(); | ||
|
||
//... | ||
} | ||
``` | ||
|
||
## 仕様書 | ||
|
||
{{Specifications}} | ||
|
||
## ブラウザーの互換性 | ||
|
||
{{Compat}} | ||
|
||
## 関連情報 | ||
|
||
- [WebGPU API](/ja/docs/Web/API/WebGPU_API) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- | ||
title: "GPUAdapter: isFallbackAdapter プロパティ" | ||
slug: Web/API/GPUAdapter/isFallbackAdapter | ||
l10n: | ||
sourceCommit: b6984118ac9482e683a654edfefa4b426ca3c7ca | ||
--- | ||
|
||
{{APIRef("WebGPU API")}}{{SeeCompatTable}} | ||
|
||
{{domxref("GPUAdapter")}} インターフェイスの読み取り専用プロパティ **`isFallbackAdapter`** は、アダプターが[フォールバックアダプター](/ja/docs/Web/API/GPU/requestAdapter#フォールバックアダプター)である場合は `true` を返し、そうでない場合は `false` を返します。 | ||
|
||
## 値 | ||
|
||
論理値です。 | ||
|
||
## 例 | ||
|
||
```js | ||
async function init() { | ||
if (!navigator.gpu) { | ||
throw Error('WebGPU に対応していません。'); | ||
} | ||
|
||
const adapter = await navigator.gpu.requestAdapter(); | ||
if (!adapter) { | ||
throw Error('WebGPU アダプターを要求できませんでした。'); | ||
} | ||
|
||
const fallback = adapter.isFallbackAdapter; | ||
console.log(fallback); | ||
|
||
// ... | ||
|
||
``` | ||
## 仕様書 | ||
{{Specifications}} | ||
## ブラウザーの互換性 | ||
{{Compat}} | ||
## 関連情報 | ||
- [WebGPU API](/ja/docs/Web/API/WebGPU_API) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
--- | ||
title: "GPUAdapter: limits プロパティ" | ||
slug: Web/API/GPUAdapter/limits | ||
l10n: | ||
sourceCommit: b6984118ac9482e683a654edfefa4b426ca3c7ca | ||
--- | ||
|
||
{{APIRef("WebGPU API")}}{{SeeCompatTable}} | ||
|
||
{{domxref("GPUAdapter")}} インターフェイスの読み取り専用プロパティ **`limits`** は、アダプターが対応している制限を表現する {{domxref("GPUSupportedLimits")}} オブジェクトを返します。 | ||
|
||
ドライブバイフィンガープリンティングで利用できる一意な情報を減らすため、ブラウザーは各 GPU の正確な制限を報告するのではなく、それぞれの制限で異なる段階ごとの値を報告する可能性が高いです。たとえば、ある制限の段階は 2048、8192、32768 である可能性があります。GPU の実際の制限が 16384 である場合は、このブラウザーは 8192 として報告します。 | ||
|
||
異なるブラウザーは異なる扱いをする可能性があり、段階の値は時間の経過で変わる可能性があるため、正確な制限の値を予想するのは難しいです。徹底的にテストすることが推奨されます。 | ||
|
||
## 値 | ||
|
||
{{domxref("GPUSupportedLimits")}} オブジェクトのインスタンスです。 | ||
|
||
## 例 | ||
|
||
以下のコードでは、`GPUAdapter.limits` の `maxBindGroups` の値を問い合わせ、6 以上であるかをチェックします。理論上のサンプルアプリケーションは理想的には 6 個のバインドグループを必要とするので、返された値が 6 以上の場合は `requiredLimits` オブジェクトに最大値 6 を追加適用し、{{domxref("GPUAdapter.requestDevice()")}} を用いてこの制限の要件を満たすデバイスを要求します。 | ||
|
||
```js | ||
async function init() { | ||
if (!navigator.gpu) { | ||
throw Error("WebGPU に対応していません。"); | ||
} | ||
|
||
const adapter = await navigator.gpu.requestAdapter(); | ||
if (!adapter) { | ||
throw Error("WebGPU アダプターを要求できませんでした。"); | ||
} | ||
|
||
const requiredLimits = {}; | ||
|
||
// アプリケーションは理想的には 6 個のバインドグループを必要とするので、 | ||
// アプリケーションが必要とする分の要求を試みる | ||
if (adapter.limits.maxBindGroups >= 6) { | ||
requiredLimits.maxBindGroups = 6; | ||
} | ||
|
||
const device = await adapter.requestDevice({ | ||
requiredLimits, | ||
}); | ||
|
||
// ... | ||
} | ||
``` | ||
|
||
## 仕様書 | ||
|
||
{{Specifications}} | ||
|
||
## ブラウザーの互換性 | ||
|
||
{{Compat}} | ||
|
||
## 関連情報 | ||
|
||
- [WebGPU API](/ja/docs/Web/API/WebGPU_API) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
--- | ||
title: "GPUAdapter: requestAdapterInfo() メソッド" | ||
slug: Web/API/GPUAdapter/requestAdapterInfo | ||
l10n: | ||
sourceCommit: b6984118ac9482e683a654edfefa4b426ca3c7ca | ||
--- | ||
|
||
{{APIRef("WebGPU API")}}{{SeeCompatTable}} | ||
|
||
{{domxref("GPUAdapter")}} インターフェイスの **`requestAdapterInfo()`** メソッドは、アダプターに関する特定用の情報が格納された {{domxref("GPUAdapterInfo")}} オブジェクトで解決する {{jsxref("Promise")}} を返します。 | ||
|
||
このメソッドの背景の意図は、開発者がユーザーの GPU の特定の詳細を要求し、GPU に固有のバグの回避策を先手を取って適用したり、異なる GPU のアーキテクチャにより合う異なるコードパスを提供したりできるようにすることです。このような情報を提供すると、フィンガープリンティングに利用でき、セキュリティリスクが発生します。そのため、共有される情報は最小限にとどめられ、異なるブラウザーのベンダー間で情報の種類と粒度を共通化するでしょう。 | ||
|
||
> **メモ:** 仕様書には `requestAdapterInfo()` 用の引数として、上記のセキュリティリスクを低減することを意図した `unmaskHints` が存在します。これに対応すれば、開発者は本当に知る必要がある値を指定することができるようになり、ユーザーはメソッドが呼び出されたとき情報を共有してよいかを尋ねる許可プロンプトを提示されるようになるでしょう。許可プロンプトで守られる場合、メソッドのフィンガープリンティングの対象としての有用度は下がるので、ブラウザーのベンダーはより有用な情報を共有するようになるでしょう。 | ||
## 構文 | ||
|
||
```js-nolint | ||
requestAdapterInfo() | ||
``` | ||
|
||
### 引数 | ||
|
||
なし | ||
|
||
### 返値 | ||
|
||
{{domxref("GPUAdapterInfo")}} オブジェクトのインスタンスで解決する {{jsxref("Promise")}} です。 | ||
|
||
## 例 | ||
|
||
```js | ||
async function init() { | ||
if (!navigator.gpu) { | ||
throw Error("WebGPU に対応していません。"); | ||
} | ||
|
||
const adapter = await navigator.gpu.requestAdapter(); | ||
if (!adapter) { | ||
throw Error("WebGPU アダプターを要求できませんでした。"); | ||
} | ||
|
||
const adapterInfo = await adapter.requestAdapterInfo(); | ||
console.log(adapterInfo.vendor); | ||
console.log(adapterInfo.architecture); | ||
|
||
// ... | ||
} | ||
``` | ||
|
||
## 仕様書 | ||
|
||
{{Specifications}} | ||
|
||
## ブラウザーの互換性 | ||
|
||
{{Compat}} | ||
|
||
## 関連情報 | ||
|
||
- [WebGPU API](/ja/docs/Web/API/WebGPU_API) |
Oops, something went wrong.