D3D11_FEATURE_DATA_D3D11_OPTIONS 结构 (d3d11.h)
介绍当前图形驱动程序中的 Direct3D 11.1 功能选项。
注意
Direct3D 11.1 运行时支持此结构,该运行时在 Windows 8 及更高版本的操作系统上可用。
语法
typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
BOOL OutputMergerLogicOp;
BOOL UAVOnlyRenderingForcedSampleCount;
BOOL DiscardAPIsSeenByDriver;
BOOL FlagsForUpdateAndCopySeenByDriver;
BOOL ClearView;
BOOL CopyWithOverlap;
BOOL ConstantBufferPartialUpdate;
BOOL ConstantBufferOffsetting;
BOOL MapNoOverwriteOnDynamicConstantBuffer;
BOOL MapNoOverwriteOnDynamicBufferSRV;
BOOL MultisampleRTVWithForcedSampleCountOne;
BOOL SAD4ShaderInstructions;
BOOL ExtendedDoublesShaderInstructions;
BOOL ExtendedResourceSharing;
} D3D11_FEATURE_DATA_D3D11_OPTIONS;
成员
OutputMergerLogicOp
指定逻辑操作在混合状态下是否可用。 如果逻辑操作在混合状态下可用,运行时将此成员设置为 TRUE ,否则为 FALSE 。 对于功能级别 9.1、9.2 和 9.3,此成员为 FALSE。 对于功能级别 10、10.1 和 11,此成员是可选的。 对于功能级别 11.1,此成员为 TRUE 。
UAVOnlyRenderingForcedSampleCount
指定驱动程序是否可以在没有呈现目标视图的情况下呈现 (RTV) 或深度模具视图 (DSV) ,并且仅) 绑定 UAV (无序访问视图。 如果驱动程序可以在没有 RTV 或 DSV 的情况下呈现,并且只绑定 UAV,否则,运行时将此成员设置为 TRUE ,否则 为 FALSE 。 如果为 TRUE,则可以在没有 RTV 或 DSV 且仅绑定 UAV 的情况下呈现时,将 D3D11_RASTERIZER_DESC1 的 ForcedSampleCount 成员设置为 1、4 或 8。 对于 功能级别 11.1,此成员始终为 TRUE ,除了 1、4 或 8 之外,还可以将 ForcedSampleCount 设置为 16。 ForcedSampleCount 的默认值为 0,这意味着与值设置为 1 时相同。 对于仅限 UAV 的呈现,始终可以将 ForcedSampleCount 设置为 0 或 1,独立于此成员的设置方式。
DiscardAPIsSeenByDriver
指定驱动程序是否支持 ID3D11DeviceContext1::D iscardView 和 ID3D11DeviceContext1::D iscardResource 方法。 如果驱动程序支持这些方法,则运行时将此成员设置为 TRUE ,否则将 设置为 FALSE 。 如何设置此成员并不指示驱动程序是否实际使用这些方法;也就是说,如果这些方法对硬件无效,驱动程序可能会忽略这些方法。 如果 为 FALSE,则运行时不会向驱动程序公开这些方法,因为驱动程序不支持它们。 可以在开发期间监视此成员,以排除硬件上的旧驱动程序,否则这些方法可能很有用。 无需根据此成员是 TRUE 还是 FALSE 编写单独的代码路径;只要适用,就可以调用这些方法。
FlagsForUpdateAndCopySeenByDriver
指定驱动程序是否支持 ID3D11DeviceContext1::CopySubresourceRegion1 和 ID3D11DeviceContext1::UpdateSubresource1 方法公开的新语义。 如果驱动程序支持用于复制和更新的新语义,则运行时会将此成员设置为 TRUE 。 运行时仅将旧版驱动程序的此成员设置为 FALSE 。 运行时处理此成员的方式类似于 DiscardAPIsSeenByDriver 成员。
ClearView
指定驱动程序是否支持 ID3D11DeviceContext1::ClearView 方法。 如果驱动程序支持此方法,则运行时将此成员设置为 TRUE ,否则将 设置为 FALSE 。 如果 为 FALSE,则运行时不会向驱动程序公开此方法,因为驱动程序不支持此方法。
CopyWithOverlap
指定是否可以使用重叠的源矩形和目标矩形调用 ID3D11DeviceContext1::CopySubresourceRegion1 。 如果可以使用重叠的源矩形和目标矩形调用 CopySubresourceRegion1,则运行时会将此成员设置为 TRUE,否则将设置为 FALSE。 如果 为 FALSE,则运行时不会向驱动程序公开此方法,因为驱动程序不支持此方法。
ConstantBufferPartialUpdate
指定驱动程序是否支持常量缓冲区的部分更新。 如果驱动程序支持部分更新常量缓冲区,则运行时将此成员设置为 TRUE ,否则为 FALSE 。 如果 为 FALSE,则运行时不会向驱动程序公开此操作,因为驱动程序不支持此操作。
ConstantBufferOffsetting
指定驱动程序是否支持为着色器设置常量缓冲区中的偏移量的新语义。 如果驱动程序支持在调用 ID3D11DeviceContext1::VSSetConstantBuffers1 方法等新方法时允许指定偏移量,则运行时会将此成员设置为 TRUE,否则为 FALSE。 如果 为 FALSE,则运行时不会向驱动程序公开此操作,因为驱动程序不支持此操作。
MapNoOverwriteOnDynamicConstantBuffer
指定是否可以使用动态常量缓冲区上的D3D11_MAP_WRITE_NO_OVERWRITE调用 ID3D11DeviceContext::Map, (即驱动程序是否支持此操作) 。 如果驱动程序支持此操作,则运行时将此成员设置为 TRUE ,否则将 设置为 FALSE 。 如果 为 FALSE,则运行时将失败此方法,因为驱动程序不支持该操作。
MapNoOverwriteOnDynamicBufferSRV
指定是否可以在动态缓冲区 SRV (调用 ID3D11DeviceContext::Map 与 D3D11_MAP_WRITE_NO_OVERWRITE ,即驱动程序是否支持此操作) 。 如果驱动程序支持此操作,则运行时将此成员设置为 TRUE ,否则将 设置为 FALSE 。 如果 为 FALSE,则运行时将失败此方法,因为驱动程序不支持该操作。
MultisampleRTVWithForcedSampleCountOne
指定在使用绑定 RTV 进行呈现时,驱动程序是否支持多重采样呈现。 如果为 TRUE,则可以在绑定多重采样 RTV 的情况下将 D3D11_RASTERIZER_DESC1 的 ForcedSampleCount 成员设置为 1。 驱动程序可以在 功能级别 10 和更高级别支持此选项。 如果 为 FALSE,则光栅器状态创建将失败,因为驱动程序是旧驱动程序或功能级别太低。
SAD4ShaderInstructions
指定硬件和驱动程序是否支持着色器中的 msad4 内部函数。 如果硬件和驱动程序支持调用着色器中的 msad4 内部函数,则运行时会将此成员设置为 TRUE。 如果 为 FALSE,则驱动程序为旧驱动程序或硬件不支持 选项;对于使用 msad4 的着色器,运行时将无法创建着色器。
ExtendedDoublesShaderInstructions
指定硬件和驱动程序是否支持 fma 内部函数和其他扩展双精度指令 (着色器中的 DDIV 和 DRCP) 。 fma 内部函数发出扩展的 doubles DFMA 指令。 如果硬件和驱动程序支持着色器 (着色器模型 5 及更高) 扩展双精度指令,则运行时将此成员设置为 TRUE。 支持此选项也意味着支持基本的双精度着色器指令。 可以使用 D3D11_FEATURE_DOUBLES 值来查询双精度着色器的支持。 如果 为 FALSE,则硬件和驱动程序不支持 选项;对于使用扩展双精度指令的着色器,运行时将无法创建着色器。
ExtendedResourceSharing
指定硬件和驱动程序是否 扩展了对共享 Texture2D 资源类型和格式的支持。 如果硬件和驱动程序支持扩展的 Texture2D 资源共享,则运行时会将此成员设置为 TRUE 。
注解
如果 Microsoft Direct3D 设备支持功能级别 11.1 (D3D_FEATURE_LEVEL_11_1) ,则当你使用 D3D11_FEATURE_D3D11_OPTIONS 调用 ID3D11Device::CheckFeatureSupport 时,CheckFeatureSupport 将返回指向D3D11_FEATURE_DATA_D3D11_OPTIONS的指针,其中除 SAD4ShaderInstructions 和 ExtendedDoublesShaderInstructions 外的所有成员都设置为 TRUE成员,硬件和驱动程序选择性地支持这些成员,因此可以是 TRUE 或 FALSE。
功能级别 11.1 提供以下附加功能:
- 每个着色器阶段的 UAV 具有 64 个 UAV 绑定槽,而不是 8 个。
- 独立于目标的光栅化,使你能够将 D3D11_RASTERIZER_DESC1 的 ForcedSampleCount 成员设置为 1、4、8 或 16,并使用单个样本呈现到 RTV。
- 仅 UAV 呈现,其中 D3D11_RASTERIZER_DESC1 的 ForcedSampleCount 成员设置为最多 16 (对于功能级别 11) 最多只有 8 个。
- DiscardAPIsSeenByDriver 和 FlagsForUpdateAndCopySeenByDriver
- ClearView、 CopyWithOverlap、 ConstantBufferPartialUpdate、 ConstantBufferOffsetting 和 MapNoOverwriteOnDynamicConstantBuffer
- MapNoOverwriteOnDynamicBufferSRV 和 MultisampleRTVWithForcedSampleCountOne
要求
最低受支持的客户端 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 和适用于 Windows Server 2008 R2 的平台更新 [桌面应用 |UWP 应用] |
标头 | d3d11.h |