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

D3D12_DESCRIPTOR_RANGE_FLAGS

列挙型フラグ
基底型i4

メンバー 6

名前10進16進説明
D3D12_DESCRIPTOR_RANGE_FLAG_NONE00x0既定の動作です。ディスクリプターは静的であり、データについては既定の想定が行われます (SRV/CBV の場合は DATA_STATIC_WHILE_SET_AT_EXECUTE、UAV の場合は DATA_VOLATILE)。
D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE10x1

このフラグのみが設定されている場合、ディスクリプターは揮発性であり、データについては既定の想定が行われます (SRV/CBV の場合は DATA_STATIC_WHILE_SET_AT_EXECUTE、UAV の場合は DATA_VOLATILE)。

このフラグを DATA_VOLATILE と組み合わせた場合、ディスクリプターとデータの両方が揮発性となり、ルートシグネチャ バージョン 1.0 と同等になります。

このフラグを DATA_STATIC_WHILE_SET_AT_EXECUTE と組み合わせた場合、ディスクリプターは揮発性になります。この場合でもコマンドリストの実行中に変更することは許可されないため、実行中にルートディスクリプターテーブル経由で設定されている間はデータが静的である、という追加の宣言と組み合わせても有効です。基となるディスクリプターは、データが静的であると保証される期間よりも長い間、実質的に静的だからです。

D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE20x2ディスクリプターは静的で、データは揮発性です。
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE40x4ディスクリプターは静的で、データは実行時に設定されている間は静的です。
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC80x8ディスクリプターとデータの両方が静的です。これにより、ドライバーによる最適化の可能性が最大になります。
D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS655360x10000静的ディスクリプターと同じ利点 (D3D12_DESCRIPTOR_RANGE_FLAG_NONE を参照) が得られますが、最適化としてバッファーをルートディスクリプターに昇格させることはドライバーに許可されません。バッファーは境界チェックを維持する必要がある一方、ルートディスクリプターには境界チェックがないためです。

公式ドキュメント

ルートシグネチャ 1.1 の記述において、ディスクリプターとそれが参照するデータの両方の揮発性 (volatility) を指定します。これにより、ドライバーによる一部の最適化が可能になります。

解説(Remarks)

この列挙型は D3D12_DESCRIPTOR_RANGE1 構造体で使用されます。

ディスクリプターが参照するデータのみの揮発性を指定するには、D3D12_ROOT_DESCRIPTOR_FLAGS を参照してください。

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

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS : int {
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536
} D3D12_DESCRIPTOR_RANGE_FLAGS;
[Flags]
public enum D3D12_DESCRIPTOR_RANGE_FLAGS : int
{
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536,
}
<Flags>
Public Enum D3D12_DESCRIPTOR_RANGE_FLAGS As Integer
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536
End Enum
import enum

class D3D12_DESCRIPTOR_RANGE_FLAGS(enum.IntFlag):
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536
// D3D12_DESCRIPTOR_RANGE_FLAGS (flags)
pub const D3D12_DESCRIPTOR_RANGE_FLAG_NONE: i32 = 0;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE: i32 = 1;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE: i32 = 2;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE: i32 = 4;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC: i32 = 8;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: i32 = 65536;
// D3D12_DESCRIPTOR_RANGE_FLAGS
const (
	D3D12_DESCRIPTOR_RANGE_FLAG_NONE int32 = 0
	D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE int32 = 1
	D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE int32 = 2
	D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE int32 = 4
	D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC int32 = 8
	D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS int32 = 65536
)
const
  D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0;
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1;
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2;
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4;
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8;
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536;
// D3D12_DESCRIPTOR_RANGE_FLAGS
pub const D3D12_DESCRIPTOR_RANGE_FLAG_NONE: i32 = 0;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE: i32 = 1;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE: i32 = 2;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE: i32 = 4;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC: i32 = 8;
pub const D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS: i32 = 65536;
const
  D3D12_DESCRIPTOR_RANGE_FLAG_NONE* = 0
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE* = 1
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE* = 2
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE* = 4
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC* = 8
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS* = 65536
enum D3D12_DESCRIPTOR_RANGE_FLAGS : int {
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 1,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 2,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 4,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 8,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 65536,
}
#define global D3D12_DESCRIPTOR_RANGE_FLAG_NONE                                            0x0
#define global D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE                            0x1
#define global D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE                                   0x2
#define global D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE                0x4
#define global D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC                                     0x8
#define global D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS 0x10000
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。