Open1
Rustクレート リーディングリスト+α
wgpu
wgpu-hal
- trait Adapter
- trait Api
- trait CommandEncoder
- trait Device
- trait Instance
- trait Queue
- trait Surface
wgpu-hal - DirectX API対応関係メモ
wgpu-hal | DirectX|DXGI | 備考 |
---|---|---|
Adapter::open | ID3D12Device::CreateCommandQueue | |
Adapter::texture_format_capabilities | ID3D12Device::CheckFeatureSupport | D3D12_FEATURE::D3D12_FEATURE_FORMAT_SUPPORT |
Adapter::surface_capabilities | N/A | |
Adapter::get_presentation_timestamp | N/A | |
Instance::init | todo:dxgi |
LoadLibraryA もここで実行する バックエンドがDX12(OpenGL)の場合はd3d12.dll (opengl32.dll ) |
Instance::create_surface | todo:dxgi | |
Instance::destroy_surface | - | NOP |
Instance::enumerate_adapters | todo:dxgi | |
Queue::submit | ID3D12CommandQueue::ExecuteCommandLists | |
Queue::present | IDXGISwapchain3::Present | |
Queue::get_timestamp_period | ID3D12CommandQueue::GetTimestampFrequency | |
Surface::configure | IDXGISwapChain::ResizeBuffers | |
Surface::unconfigure | ID3D12Fence::GetCompletedValue, ID3D12CommandQueue::Signal | 解放する前に待つ |
Surface::acquire_texture | IDXGISwapChain3::GetCurrentBackBufferIndex | ここらへんの理解が特にあいまい |
Surface::discard_texture | - | ここらへんの理解が特にあいまい |
その他メモ
-
このクレートではランタイム時にプラットフォーム固有コードの呼び出しを決定する。wgpu-halモジュールを直接使うことで、いくつかの制約が課されるも、コンパイル時に決定することができそう。
- Fully unsafe: zero overhead, zero validation.
- Compile-time backend selection via traits.
etc...
-
Clone(Drop)トレイトの実装をWindows API(COM API)のIUnknownインターフェイスのAddRef(Release)と対応させている
-
OpenGLESバックエンドのときは自身のAPIとglowをつなぎこんでいるかもしれない