WebCodecs の統合
WebGPU で不透明な「外部テクスチャ」を作成する API を公開HTMLVideoElement
~importExternalTexture()
のオブジェクト。これらのオブジェクトを使用すると、ソースの YUV カラーモデル データから直接、ゼロコピーの方法で動画フレームを効率的にサンプリングできます。
しかし、最初の WebGPU 仕様では、WebCodecs の VideoFrame
オブジェクトから GPUExternalTexture
オブジェクトを作成することができませんでした。この機能は、すでに WebCodec を使用していて、動画処理パイプラインに WebGPU を統合したいと考えている高度な動画処理アプリで重要です。WebCodecs インテグレーションにより、GPUExternalTexture
と copyExternalImageToTexture()
呼び出しのソースとして VideoFrame
を使用できるようになりました。次の例と chromestatus エントリをご覧ください。
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
WebCodecs を使用した動画のアップロードの試験運用版のサンプルをご覧ください。
GPUAdapter requestDevice() から返されたデバイスの紛失
GPUAdapter
の requestDevice()
メソッドが GPUDevice
の作成に使用されていたために失敗した場合、null
で拒否される Promise を返すのではなく、すぐに紛失としてマークされた GPUDevice
で履行されるようになりました。問題 chromium:1234617 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
importExternalTexture() が呼び出された場合に動画の再生をスムーズにする
HTMLVideoElement
で importExternalTexture()
が呼び出されると、動画がビューポートに表示されない場合、関連する動画再生はスロットリングされなくなります。問題 chromium:1425252 をご覧ください。
仕様の適合性
GPUPipelineError()
コンストラクタの message
引数は省略可能です。変更 chromium:4613967 をご覧ください。
WGSL ソースの code
に \0
が含まれている場合、createShaderModule()
を呼び出すとエラーが発生します。問題 dawn:1345 をご覧ください。
createSampler()
でテクスチャをサンプリングする際に使用されるデフォルトの最大詳細レベル(lodMaxClamp
)は 32 です。chromium:4608063 の変更をご覧ください。
デベロッパー エクスペリエンスの向上
サポートされていないプラットフォームで WebGPU を使用すると、デベロッパーに注意を促すメッセージが DevTools JavaScript コンソールに表示されます。chrome:4589369 の変更をご覧ください。
getMappedRange()
が失敗すると、デベロッパーがコマンドをキューに送信することなく、バッファ検証のエラー メッセージが DevTools JavaScript コンソールに即座に表示されます。chromium:4597950 の変更をご覧ください。
夜明けの最新情報
disallow_unsafe_apis
デバッグ切り替えボタンの名前が allow_unsafe_apis
に変更され、デフォルトで無効になりました。この切り替えにより、まだ安全ではない API エントリ ポイントまたはパラメータの組み合わせでの検証エラーが抑制されます。これはデバッグに役立ちます。
問題 dawn:1685 をご覧ください。
wgpu::ShaderModuleWGSLDescriptor
のサポートが終了した source
属性は廃止され、code
に置き換えられました。変更 dawn:130321 をご覧ください。
欠落していた wgpu::RenderBundle::SetLabel()
メソッドが実装されました。変更 dawn:134502 をご覧ください。
アプリは、wgpu::RequestAdapterOptionsBackendType
オプションでアダプタを取得するときに、特定のバックエンドをリクエストできます。下記の例と問題 dawn:1875 をご覧ください。
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
新しい SwapChain::GetCurrentTexture()
メソッドが追加され、スワップチェーン テクスチャの用途が追加されました。これにより、返された wgpu::Texture
をコピーで使用できます。下記の例と問題 dawn:1551 をご覧ください。
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
ここでは、主なハイライトの一部のみを取り上げています。コミットの一覧をご確認ください。
WebGPU の新機能
「WebGPU の新機能」シリーズに記載されている全内容のリスト。
Chrome 128
- サブグループのテスト
- ラインとポイントの深度バイアス設定のサポート終了
- 未キャプチャ エラーの DevTools の警告を PreventDefault で非表示にする
- WGSL はまずサンプリングを補間
- 夜明けの最新情報
Chrome 127
Chrome 126
- maxTextureArrayLayers の上限を引き上げる
- Vulkan バックエンドでのバッファ アップロードの最適化
- シェーダーのコンパイル時間の改善
- 送信するコマンド バッファは一意である必要があります
- 夜明けの最新情報
Chrome 125
Chrome 124
Chrome 123
- WGSL での DP4a 組み込み関数のサポート
- WGSL の無制限のポインタ パラメータ
- WGSL で複合要素を逆参照するための糖衣構文
- ステンシル アスペクトと深度アスペクトの読み取り専用状態を分離
- 夜明けの最新情報
Chrome 122
Chrome 121
- Android で WebGPU をサポートする
- Windows でのシェーダーのコンパイルに FXC ではなく DXC を使用
- コンピューティング パスとレンダリング パスでのタイムスタンプ クエリ
- シェーダー モジュールへのデフォルトのエントリ ポイント
- GPUExternalTexture 色空間として display-p3 をサポートする
- メモリヒープ情報
- 夜明けの最新情報
Chrome 120
Chrome 119
- フィルタ可能な 32 ビット浮動小数点のテクスチャ
- unorm10-10-10-2 頂点形式
- rgb10a2uint テクスチャ形式
- 夜明けの最新情報
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みと読み取り専用のストレージ テクスチャの試験運用版サポート
- 夜明けの最新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループの設定解除
- デバイスが失われた場合の非同期パイプライン作成のエラーをミュート
- SPIR-V シェーダー モジュールの作成に関するアップデート
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したキャッシュ パイプライン
- 夜明けの最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter から返されたデバイスの紛失
requestDevice()
importExternalTexture()
が呼び出された場合に動画の再生をスムーズにする- 仕様の適合性
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報
Chrome 115
- サポートされている WGSL 言語の拡張機能
- Direct3D 11 の試験運用版サポート
- AC 電源でデフォルトでディスクリート GPU を取得
- デベロッパー エクスペリエンスの向上
- 夜明けの最新情報