Win32 API 日本語リファレンス
ホームGraphics.Direct3D12 › ID3D12Device8

ID3D12Device8

COM
IID9218e6bb-f944-4f7e-a75c-b1b2c7b701f3継承元ID3D12Device7自前メソッド開始 vtbl68

公式ドキュメント

仮想アダプターを表します。このインターフェイスは ID3D12Device7 を拡張したものです。

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 68 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(DWORD visibleMask, DWORD numResourceDescs, D3D12_RESOURCE_DESC1* pResourceDescs, D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1)
visibleMaskDWORDinリソースを可視化するGPUノードを示すビットマスク。単一GPUでは0でよい。
numResourceDescsDWORDinpResourceDescs配列に含まれるリソース記述子の個数を指定する。
pResourceDescsD3D12_RESOURCE_DESC1*in割り当て情報を求める対象リソース記述子(拡張版)の配列。
pResourceAllocationInfo1D3D12_RESOURCE_ALLOCATION_INFO1*outoptional各リソースの個別割り当て情報を受け取る出力配列。
vtbl 69 HRESULT CreateCommittedResource2(D3D12_HEAP_PROPERTIES* pHeapProperties, D3D12_HEAP_FLAGS HeapFlags, D3D12_RESOURCE_DESC1* pDesc, D3D12_RESOURCE_STATES InitialResourceState, D3D12_CLEAR_VALUE* pOptimizedClearValue, ID3D12ProtectedResourceSession* pProtectedSession, GUID* riidResource, void** ppvResource)

リソースと暗黙のヒープ (オプションで保護されたセッション用) の両方を作成します。ヒープはリソース全体を格納できる大きさになり、リソースはそのヒープにマップされます。

pHeapPropertiesD3D12_HEAP_PROPERTIES*inリソースのヒープのプロパティを指定する D3D12_HEAP_PROPERTIES 構造体へのポインター。
HeapFlagsD3D12_HEAP_FLAGSinヒープのオプション。D3D12_HEAP_FLAGS 列挙定数のビットごとの OR による組み合わせで指定します。
pDescD3D12_RESOURCE_DESC1*inミップ領域を含めてリソースを記述する D3D12_RESOURCE_DESC1 構造体へのポインター。
InitialResourceStateD3D12_RESOURCE_STATESin

リソースの初期状態。D3D12_RESOURCE_STATES 列挙定数のビットごとの OR による組み合わせで指定します。

D3D12_HEAP_TYPE_UPLOAD ヒープとともにリソースを作成する場合、InitialResourceState には D3D12_RESOURCE_STATE_GENERIC_READ を設定する必要があります。

D3D12_HEAP_TYPE_READBACK ヒープとともにリソースを作成する場合、InitialResourceState には D3D12_RESOURCE_STATE_COPY_DEST を設定する必要があります。

pOptimizedClearValueD3D12_CLEAR_VALUE*inoptional

クリアカラーの既定値を記述する D3D12_CLEAR_VALUE 構造体を指定します。

pOptimizedClearValue には、クリア操作が最も最適化される値を指定します。作成するリソースが D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET または D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL フラグを持つテクスチャの場合は、クリア操作で最も頻繁に使用する値を選択してください。他の値でクリア操作を呼び出すこともできますが、リソース作成時に渡した値と一致する場合ほど効率的ではありません。

D3D12_RESOURCE_DIMENSION_BUFFER を使用する場合、pOptimizedClearValue には nullptr を設定する必要があります。

pProtectedSessionID3D12ProtectedResourceSession*inoptionalコンテンツ保護のためのセッションを表すオブジェクトへの省略可能なポインター。指定した場合、このセッションはリソースを保護すべきであることを示します。ID3D12ProtectedResourceSessionID3D12Device4::CreateProtectedResourceSession を呼び出して取得できます。
riidResourceGUID*in

ppvResource に返すリソースインターフェイスのグローバル一意識別子 (GUID) への参照。

riidResource には通常 ID3D12ResourceGUID を指定しますが、任意のインターフェイスの GUID を指定できます。リソースオブジェクトがこの GUID のインターフェイスをサポートしていない場合、作成は E_NOINTERFACE で失敗します。

ppvResourcevoid**outoptional

作成されたリソースオブジェクトへの要求されたインターフェイスポインターを受け取るメモリブロックへの省略可能なポインター。

ppvResource には nullptr を指定でき、機能テストを行えます。ppvResourcenullptr の場合、オブジェクトは作成されず、pDesc が有効であれば S_FALSE が返されます。

戻り値

型: HRESULT

関数が成功した場合は S_OK を返します。それ以外の場合は HRESULTエラーコードを返します。

戻り値 説明
E_OUTOFMEMORY リソースを作成するためのメモリが不足しています。

その他の返される可能性のある値については、Direct3D 12 のリターンコードを参照してください。

解説(Remarks)

このメソッドはリソースとヒープの両方を作成します。ヒープはリソース全体を格納できる大きさになり、リソースはそのヒープにマップされます。作成されたヒープは、アプリケーションからヒープオブジェクトを取得できないため、暗黙のヒープと呼ばれます。リソースへの最後の参照を解放する前に、アプリケーションは GPU がこのリソースを読み書きしなくなっていることを保証する必要があります。

暗黙のヒープは、メソッドがアプリケーションに制御を返す前に、GPU からアクセスできるように常駐化されます。常駐性 (Residency) も参照してください。

リソースの GPU 仮想アドレスのマッピングは変更できません。ID3D12CommandQueue::UpdateTileMappings およびボリュームタイルリソースを参照してください。

このメソッドは複数のスレッドから同時に呼び出すことができます。

vtbl 70 HRESULT CreatePlacedResource1(ID3D12Heap* pHeap, ULONGLONG HeapOffset, D3D12_RESOURCE_DESC1* pDesc, D3D12_RESOURCE_STATES InitialState, D3D12_CLEAR_VALUE* pOptimizedClearValue, GUID* riid, void** ppvResource)

特定のヒープ内に配置されるリソースを作成します。配置リソース (placed resource) は利用可能なリソースオブジェクトの中で最も軽量で、作成と破棄が最も高速です。

pHeapID3D12Heap*inリソースを配置するヒープを表す ID3D12Heap インターフェイスへのポインター。
HeapOffsetULONGLONGinリソースまでのオフセット (バイト単位)。HeapOffset はリソースのアラインメントの倍数でなければならず、HeapOffset とリソースサイズの合計はヒープサイズ以下でなければなりません。テクスチャリソースのサイズを把握するには GetResourceAllocationInfo を使用する必要があります。
pDescD3D12_RESOURCE_DESC1*inミップ領域を含めてリソースを記述する D3D12_RESOURCE_DESC1 構造体へのポインター。
InitialStateD3D12_RESOURCE_STATESin

リソースの初期状態。D3D12_RESOURCE_STATES 列挙定数のビットごとの OR による組み合わせで指定します。

D3D12_HEAP_TYPE_UPLOAD ヒープとともにリソースを作成する場合、InitialStateD3D12_RESOURCE_STATE_GENERIC_READ でなければなりません。D3D12_HEAP_TYPE_READBACK ヒープとともにリソースを作成する場合、InitialStateD3D12_RESOURCE_STATE_COPY_DEST でなければなりません。

pOptimizedClearValueD3D12_CLEAR_VALUE*inoptional

クリアカラーの既定値を記述する D3D12_CLEAR_VALUE を指定します。

pOptimizedClearValue には、クリア操作が最も最適化される値を指定します。作成するリソースが D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET または D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL フラグを持つテクスチャの場合、アプリケーションはクリア操作で最も頻繁に使用する値を選択してください。

他の値でクリア操作を呼び出すこともできますが、リソース作成時に渡した値と一致する場合ほど効率的ではありません。

D3D12_RESOURCE_DIMENSION_BUFFER とともに使用する場合、pOptimizedClearValue は NULL でなければなりません。

riidGUID*in

リソースインターフェイスのグローバル一意識別子 (GUID)。これは入力パラメーターです。

リソースへのインターフェイスの REFIID (GUID) は __uuidof マクロを使用して取得できます。たとえば __uuidof(ID3D12Resource) は、リソースへのインターフェイスの GUID を取得します。riid には通常 ID3D12Resource の GUID を指定しますが、任意のインターフェイスの GUID を指定できます。リソースオブジェクトがこの GUID のインターフェイスをサポートしていない場合、作成は E_NOINTERFACE で失敗します。

ppvResourcevoid**outoptionalリソースへのポインターを受け取るメモリブロックへのポインター。ppvResource には NULL を指定でき、機能テストを行えます。ppvResource が NULL の場合、オブジェクトは作成されず、pResourceDesc とその他のパラメーターが有効であれば S_FALSE が返されます。

戻り値

型: HRESULT

リソースを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。その他の返される可能性のある値については、Direct3D 12 のリターンコードを参照してください。

解説(Remarks)

ID3D12Device::CreatePlacedResource を参照してください。

vtbl 71 void CreateSamplerFeedbackUnorderedAccessView(ID3D12Resource* pTargetedResource, ID3D12Resource* pFeedbackResource, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor)

サンプラーフィードバックのために、バインドに適した記述子を作成します。

pTargetedResourceID3D12Resource*inoptional記述子を作成する対象のリソース (テクスチャなど)。
pFeedbackResourceID3D12Resource*inoptional記述子を作成するフィードバックリソース (テクスチャなど)。
DestDescriptorD3D12_CPU_DESCRIPTOR_HANDLEinCPU 記述子ハンドル。
vtbl 72 void GetCopyableFootprints1(D3D12_RESOURCE_DESC1* pResourceDesc, DWORD FirstSubresource, DWORD NumSubresources, ULONGLONG BaseOffset, D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts, DWORD* pNumRows, ULONGLONG* pRowSizeInBytes, ULONGLONG* pTotalBytes)

コピー可能なリソースレイアウトを取得します。アップロードヒープ内の領域をサブアロケートする際に、D3D12_PLACED_SUBRESOURCE_FOOTPRINT および D3D12_SUBRESOURCE_FOOTPRINT を埋めるのに役立ちます。

pResourceDescD3D12_RESOURCE_DESC1*inリソースの記述。D3D12_RESOURCE_DESC1 構造体へのポインターとして指定します。
FirstSubresourceDWORDinリソース内の最初のサブリソースのインデックス。有効な値の範囲は 0 から D3D12_REQ_SUBRESOURCES までです。
NumSubresourcesDWORDinリソース内のサブリソースの数。有効な値の範囲は 0 から (D3D12_REQ_SUBRESOURCES - FirstSubresource) までです。
BaseOffsetULONGLONGinpLayouts 配列内の各 D3D12_PLACED_SUBRESOURCE_FOOTPRINTOffset に加算されるオフセット (バイト単位)。
pLayoutsD3D12_PLACED_SUBRESOURCE_FOOTPRINT*outoptional各サブリソースの記述と配置が格納される、D3D12_PLACED_SUBRESOURCE_FOOTPRINT 構造体の配列 (長さ NumSubresources) へのポインター。
pNumRowsDWORD*outoptional各サブリソースの行数が格納される、整数変数の配列 (長さ NumSubresources) へのポインター。
pRowSizeInBytesULONGLONG*outoptional

各サブリソースについて、1 行のパディングなしのサイズ (バイト単位) が各エントリに格納される、整数変数の配列 (長さ NumSubresources) へのポインター。

たとえば、Texture2D リソースの幅が 32 でピクセルあたりのバイト数が 4 の場合、pRowSizeInBytes は 128 を返します。

pRowSizeInBytes行ピッチ (row pitch) と混同しないでください。pLayouts を調べて行ピッチを取得すると、D3D12_TEXTURE_DATA_PITCH_ALIGNMENT に合わせてアラインされるため 256 になります。

pTotalBytesULONGLONG*outoptional合計サイズ (バイト単位) が格納される整数変数へのポインター。pResourceDesc が無効な場合、pTotalBytes の値は UINT64_MAX に設定されます。

解説(Remarks)

注釈と例については、ID3D12Device::GetCopyableFootprints を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID3D12Device8 "{9218E6BB-F944-4F7E-A75C-B1B2C7B701F3}"
#usecom global ID3D12Device8 IID_ID3D12Device8 "{}"
#comfunc global ID3D12Device8_GetResourceAllocationInfo2                68 int,int,var,var
#comfunc global ID3D12Device8_CreateCommittedResource2                  69 var,int,var,int,var,sptr,var,sptr
#comfunc global ID3D12Device8_CreatePlacedResource1                     70 sptr,int64,var,int,var,var,sptr
#comfunc global ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView  71 sptr,sptr,int
#comfunc global ID3D12Device8_GetCopyableFootprints1                    72 var,int,int,int64,var,var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。