> ## 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

> Describes Direct3D 12 feature options in the current graphics driver.

Describes Direct3D 12 feature options in the current graphics driver.

## Syntax

```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
```

### Members

*DoublePrecisionFloatShaderOps*\
Type: BOOL

Specifies whether **double** types are allowed for shader operations.
If **TRUE**, double types are allowed; otherwise **FALSE**.
The supported operations are equivalent to Direct3D 11's **ExtendedDoublesShaderInstructions** member of the [D3D11\_FEATURE\_DATA\_D3D11\_OPTIONS](https://learn.microsoft.com/en-us/windows/desktop/api/d3d11/ns-d3d11-d3d11_feature_data_d3d11_options) structure.

To use any HLSL shader that is compiled with a **double** type,
the runtime must set **DoublePrecisionFloatShaderOps** to **TRUE**.

*OutputMergerLogicOp*\
Type: BOOL

Specifies whether logic operations are available in blend state. The runtime sets this member to **TRUE** if logic operations are available in blend state and **FALSE** otherwise. This member is **FALSE** for feature level 9.1, 9.2, and 9.3.  This member is optional for feature level 10, 10.1, and 11.  This member is **TRUE** for feature level 11.1 and 12.

*MinPrecisionSupport*\
Type: D3D12\_SHADER\_MIN\_PRECISION\_SUPPORT

A combination of [D3D12\_SHADER\_MIN\_PRECISION\_SUPPORT](/reference/graphics/d3d12/enums/d3d12_shader_min_precision_support_public)-typed values that are combined by using a bitwise OR operation. The resulting value specifies minimum precision levels that the driver supports for shader stages. A value of zero indicates that the driver supports only full 32-bit precision for all shader stages.

*TiledResourcesTier*\
Type: D3D12\_TILED\_RESOURCES\_TIER

Specifies whether the hardware and driver support tiled resources. The runtime sets this member to a [D3D12\_TILED\_RESOURCES\_TIER](/reference/graphics/d3d12/enums/d3d12_tiled_resources_tier_public)-typed value that indicates if the hardware and driver support tiled resources and at what tier level.

*ResourceBindingTier*\
Type: D3D12\_RESOURCE\_BINDING\_TIER

Specifies the level at which the hardware and driver support resource binding. The runtime sets this member to a [D3D12\_RESOURCE\_BINDING\_TIER](/reference/graphics/d3d12/enums/d3d12_resource_binding_tier_public)-typed value that indicates the tier level.

*PSSpecifiedStencilRefSupported*\
Type: BOOL

Specifies whether pixel shader stencil ref is supported. If **TRUE**, it's supported; otherwise **FALSE**.

*TypedUAVLoadAdditionalFormats*\
Type: BOOL

Specifies whether the loading of additional formats for typed unordered-access views (UAVs) is supported.
If **TRUE**, it's supported; otherwise **FALSE**.

*ROVsSupported*\
Type: BOOL

Specifies whether [Rasterizer Order Views](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-glossary) (ROVs) are supported. If **TRUE**, they're supported; otherwise **FALSE**.

*ConservativeRasterizationTier*\
Type: D3D12\_CONSERVATIVE\_RASTERIZATION\_TIER

Specifies the level at which the hardware and driver support conservative rasterization. The runtime sets this member to a [D3D12\_CONSERVATIVE\_RASTERIZATION\_TIER](/reference/graphics/d3d12/enums/d3d12_conservative_rasterization_tier_public)-typed value that indicates the tier level.

*MaxGPUVirtualAddressBitsPerResource*\
Type: UINT

Don't use this field; instead, use the [D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) query
(a structure with a **MaxGPUVirtualAddressBitsPerResource** member), which is more accurate.

*StandardSwizzle64KBSupported*\
Type: BOOL

TRUE if the hardware supports textures with the 64KB standard swizzle pattern.
Support for this pattern enables zero-copy texture optimizations while providing near-equilateral locality for each dimension within the texture.
For texture swizzle options and restrictions, see [D3D12\_TEXTURE\_LAYOUT](/reference/graphics/d3d12_x/enums/d3d12_texture_layout).

*CrossNodeSharingTier*\
Type: D3D12\_CROSS\_NODE\_SHARING\_TIER

A [D3D12\_CROSS\_NODE\_SHARING\_TIER](/reference/graphics/d3d12/enums/d3d12_cross_node_sharing_tier_public) enumeration constant that specifies the level of sharing across nodes of an adapter that has multiple nodes,
such as Tier 1 Emulated, Tier 1, or Tier 2.

*CrossAdapterRowMajorTextureSupported*\
Type: BOOL

FALSE means the device only supports copy operations to and from cross-adapter row-major textures.
TRUE means the device supports shader resource views, unordered access views, and render target views of cross-adapter row-major textures.
"Cross-adapter" means between multiple adapters (even from different IHVs).

*VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation*\
Type: BOOL

Whether the viewport (VP) and Render Target (RT) array index from any shader feeding the rasterizer are supported without geometry shader emulation.
Compare the **VPAndRTArrayIndexFromAnyShaderFeedingRasterizer** member of the [D3D11\_FEATURE\_DATA\_D3D11\_OPTIONS3](https://learn.microsoft.com/en-us/windows/desktop/api/d3d11/ns-d3d11-d3d11_feature_data_d3d11_options3) structure.
In [ID3D12ShaderReflection::GetRequiresFlags](https://learn.microsoft.com/en-us/windows/desktop/api/d3d12shader/nf-d3d12shader-id3d12shaderreflection-getrequiresflags), see the #define D3D\_SHADER\_REQUIRES\_VIEWPORT\_AND\_RT\_ARRAY\_INDEX\_FROM\_ANY\_SHADER\_FEEDING\_RASTERIZER.

*ResourceHeapTier*\
Type: D3D12\_RESOURCE\_HEAP\_TIER

Specifies the level at which the hardware and driver require heap attribution related to resource type.
The runtime sets this member to a [D3D12\_RESOURCE\_HEAP\_TIER](/reference/graphics/d3d12/enums/d3d12_resource_heap_tier_public) enumeration constant.

## Remarks

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

## Requirements

**Header:** d3d12\_xs.h or d3d12\_x.h\
**Library:** d3d12\_xs.lib or d3d12\_x.lib\
**Supported Platforms**: XBOX Series consoles and XBOX One family

## See Also

[Conservative Rasterization](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/conservative-rasterization)

[Core Structures](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-structures)

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

[Rasterizer Ordered Views](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/rasterizer-order-views)


## Related topics

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