> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12_FEATURE_DATA_D3D12_OPTIONS

> 描述当前图形驱动程序中的 Direct3D 12 功能选项。

描述当前图形驱动程序中的 Direct3D 12 功能选项。

## 语法

```cpp theme={null}
typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
{
    BOOL DoublePrecisionFloatShaderOps;
    BOOL OutputMergerLogicOp;
    D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
    D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
    D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
    BOOL PSSpecifiedStencilRefSupported;
    BOOL TypedUAVLoadAdditionalFormats;
    BOOL ROVsSupported;
    D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
    UINT MaxGPUVirtualAddressBitsPerResource;
    BOOL StandardSwizzle64KBSupported;
    D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
    BOOL CrossAdapterRowMajorTextureSupported;
    BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
    D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
} D3D12_FEATURE_DATA_D3D12_OPTIONS
```

### 成员

*DoublePrecisionFloatShaderOps*\
类型:BOOL

指定是否允许对着色器操作使用 **double** 类型。
如果为 **TRUE**,则允许 double 类型;否则为 **FALSE**。
支持的操作等效于 Direct3D 11 的 [D3D11\_FEATURE\_DATA\_D3D11\_OPTIONS](https://learn.microsoft.com/en-us/windows/desktop/api/d3d11/ns-d3d11-d3d11_feature_data_d3d11_options) 结构的 **ExtendedDoublesShaderInstructions** 成员。

要使用任何使用 **double** 类型编译的 HLSL 着色器,
运行时必须将 **DoublePrecisionFloatShaderOps** 设置为 **TRUE**。

*OutputMergerLogicOp*\
类型:BOOL

指定混合状态中是否可以使用逻辑运算。如果混合状态中可以使用逻辑运算,则运行时将此成员设置为 **TRUE**,否则设置为 **FALSE**。对于功能级别 9.1、9.2 和 9.3,此成员为 **FALSE**。对于功能级别 10、10.1 和 11,此成员是可选的。对于功能级别 11.1 和 12,此成员为 **TRUE**。

*MinPrecisionSupport*\
类型:D3D12\_SHADER\_MIN\_PRECISION\_SUPPORT

[D3D12\_SHADER\_MIN\_PRECISION\_SUPPORT](/reference/graphics/d3d12/enums/d3d12_shader_min_precision_support_public) 类型值的组合,使用按位或运算进行组合。结果值指定驱动程序为着色器阶段支持的最低精度级别。零值表示驱动程序仅支持所有着色器阶段的完整 32 位精度。

*TiledResourcesTier*\
类型:D3D12\_TILED\_RESOURCES\_TIER

指定硬件和驱动程序是否支持平铺资源。运行时将此成员设置为 [D3D12\_TILED\_RESOURCES\_TIER](/reference/graphics/d3d12/enums/d3d12_tiled_resources_tier_public) 类型的值,指示硬件和驱动程序是否支持平铺资源以及支持的层级。

*ResourceBindingTier*\
类型:D3D12\_RESOURCE\_BINDING\_TIER

指定硬件和驱动程序支持资源绑定的级别。运行时将此成员设置为 [D3D12\_RESOURCE\_BINDING\_TIER](/reference/graphics/d3d12/enums/d3d12_resource_binding_tier_public) 类型的值,指示层级。

*PSSpecifiedStencilRefSupported*\
类型:BOOL

指定是否支持像素着色器模板引用。如果为 **TRUE**,则支持;否则为 **FALSE**。

*TypedUAVLoadAdditionalFormats*\
类型:BOOL

指定是否支持加载类型化无序访问视图 (UAV) 的其他格式。
如果为 **TRUE**,则支持;否则为 **FALSE**。

*ROVsSupported*\
类型:BOOL

指定是否支持[光栅化器顺序视图](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-glossary) (ROV)。如果为 **TRUE**,则支持;否则为 **FALSE**。

*ConservativeRasterizationTier*\
类型:D3D12\_CONSERVATIVE\_RASTERIZATION\_TIER

指定硬件和驱动程序支持保守光栅化的级别。运行时将此成员设置为 [D3D12\_CONSERVATIVE\_RASTERIZATION\_TIER](/reference/graphics/d3d12/enums/d3d12_conservative_rasterization_tier_public) 类型的值,指示层级。

*MaxGPUVirtualAddressBitsPerResource*\
类型:UINT

不要使用此字段;改为使用 [D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) 查询
(具有 **MaxGPUVirtualAddressBitsPerResource** 成员的结构),该查询更为准确。

*StandardSwizzle64KBSupported*\
类型:BOOL

如果硬件支持具有 64KB 标准 swizzle 模式的纹理,则为 TRUE。
支持此模式可以实现零拷贝纹理优化,同时为纹理中的每个维度提供接近等边的局部性。
有关纹理 swizzle 选项和限制,请参阅 [D3D12\_TEXTURE\_LAYOUT](/reference/graphics/d3d12_x/enums/d3d12_texture_layout)。

*CrossNodeSharingTier*\
类型:D3D12\_CROSS\_NODE\_SHARING\_TIER

一个 [D3D12\_CROSS\_NODE\_SHARING\_TIER](/reference/graphics/d3d12/enums/d3d12_cross_node_sharing_tier_public) 枚举常量,指定具有多个节点的适配器在节点之间的共享级别,
例如层 1 模拟、层 1 或层 2。

*CrossAdapterRowMajorTextureSupported*\
类型:BOOL

FALSE 表示设备仅支持进出跨适配器行主纹理的复制操作。
TRUE 表示设备支持跨适配器行主纹理的着色器资源视图、无序访问视图和渲染目标视图。
"跨适配器"表示在多个适配器之间(即使来自不同的 IHV)。

*VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation*\
类型:BOOL

在没有几何着色器仿真的情况下,是否支持来自任何为光栅化器提供数据的着色器的视口 (VP) 和渲染目标 (RT) 数组索引。
比较 [D3D11\_FEATURE\_DATA\_D3D11\_OPTIONS3](https://learn.microsoft.com/en-us/windows/desktop/api/d3d11/ns-d3d11-d3d11_feature_data_d3d11_options3) 结构的 **VPAndRTArrayIndexFromAnyShaderFeedingRasterizer** 成员。
在 [ID3D12ShaderReflection::GetRequiresFlags](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12shader/nf-d3d12shader-id3d12shaderreflection-getrequiresflags) 中,请参阅 #define D3D\_SHADER\_REQUIRES\_VIEWPORT\_AND\_RT\_ARRAY\_INDEX\_FROM\_ANY\_SHADER\_FEEDING\_RASTERIZER。

*ResourceHeapTier*\
类型:D3D12\_RESOURCE\_HEAP\_TIER

指定硬件和驱动程序要求与资源类型相关的堆归属的级别。
运行时将此成员设置为 [D3D12\_RESOURCE\_HEAP\_TIER](/reference/graphics/d3d12/enums/d3d12_resource_heap_tier_public) 枚举常量。

## 备注

请参阅 [D3D12\_FEATURE](/reference/graphics/d3d12/enums/d3d12_feature_public)。

## 要求

**头文件:** d3d12\_xs.h 或 d3d12\_x.h\
**库:** d3d12\_xs.lib 或 d3d12\_x.lib\
**支持的平台**:XBOX Series 主机和 XBOX One 系列

## 另请参阅

[保守光栅化](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/conservative-rasterization)

[核心结构](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-structures)

[D3D12\_FEATURE](/reference/graphics/d3d12/enums/d3d12_feature_public)

[光栅化器顺序视图](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/rasterizer-order-views)


## Related topics

- [D3D12_CONSERVATIVE_RASTERIZATION_TIER](/zh-CN/reference/graphics/d3d12/enums/d3d12_conservative_rasterization_tier_public.md)
- [D3D12_RESOURCE_BINDING_TIER](/zh-CN/reference/graphics/d3d12/enums/d3d12_resource_binding_tier_public.md)
- [D3D12_CROSS_NODE_SHARING_TIER](/zh-CN/reference/graphics/d3d12/enums/d3d12_cross_node_sharing_tier_public.md)
- [D3D12_SHADER_MIN_PRECISION_SUPPORT](/zh-CN/reference/graphics/d3d12/enums/d3d12_shader_min_precision_support_public.md)
- [D3D12_RESOURCE_HEAP_TIER](/zh-CN/reference/graphics/d3d12/enums/d3d12_resource_heap_tier_public.md)
