ID3D11Debug::SetFeatureMask 方法 (d3d11sdklayers.h)
设置将打开和关闭调试功能的标志的位字段。
语法
HRESULT SetFeatureMask(
UINT Mask
);
参数
Mask
类型: UINT
通过使用按位 OR 操作组合的功能掩码标志的组合。 如果存在标志,该功能将设置为 on,否则该功能将设置为 off。 有关功能掩码标志的说明,请参阅备注。
返回值
类型: HRESULT
此方法返回 Direct3D 11 返回代码之一。
备注
D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP (0x2) | 应用程序将等待 GPU 完成处理呈现操作,然后再继续。 |
D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP (0x1) | 运行时还将调用 ID3D11DeviceContext::Flush。 |
D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP (0x4) | 运行时将调用 IDXGISwapChain::P resent。 呈现缓冲区的呈现将根据之前调用 ID3D11Debug::SetSwapChain 和 ID3D11Debug::SetPresentPerRenderOpDelay 建立的设置进行。 |
这些功能掩码标志适用于以下呈现操作方法:
- ID3D11DeviceContext::Draw
- ID3D11DeviceContext::DrawIndexed
- ID3D11DeviceContext::DrawInstanced
- ID3D11DeviceContext::DrawIndexedInstanced
- ID3D11DeviceContext::DrawAuto
- ID3D11DeviceContext::ClearRenderTargetView
- ID3D11DeviceContext::ClearDepthStencilView
- ID3D11DeviceContext::CopySubresourceRegion
- ID3D11DeviceContext::CopyResource
- ID3D11DeviceContext::UpdateSubresource
- ID3D11DeviceContext::GenerateMips
- ID3D11DeviceContext::ResolveSubresource
D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE (0x8) | 在启用此标志时调用 IDXGIDevice2::OfferResources 来提供资源时,始终会放弃其内容。 使用此标志可以测试在回收时重新生成资源内容的代码路径。 不能将此标志与 D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE 结合使用。 |
D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE (0x10) | 在启用此标志时调用 IDXGIDevice2::OfferResources 来提供资源时,永远不会放弃其内容。 使用此标志测试不需要在回收时重新生成资源内容的代码路径。 不能将此标志与 D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE 结合使用。 |
IDXGIDevice2::OfferResources 和 IDXGIDevice2::ReclaimResources 方法的行为取决于系统范围的内存压力。 因此,对于大多数应用程序来说,内容丢失且必须重新生成的情况并不常见。 通过 Direct3D 调试层中的上述新选项,可以一致地模拟该方案并测试代码路径。
Direct3D 11.1 运行时支持以下标志。
D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS (0x40) | 禁用以下默认调试行为。 |
启用调试层后,它会执行某些操作来揭示应用程序问题。 通过设置D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS功能掩码标志,可以在不获取以下默认调试行为的情况下启用调试层:
- 如果应用程序调用 ID3D11DeviceContext1::D iscardView,运行时将使用随机颜色填充资源。
- 如果应用程序使用部分表示参数调用 IDXGISwapChain1::P resent1 ,则运行时将忽略部分表示信息。
D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION (0x80) | 禁用以下默认调试行为。 |
默认情况下, (即,在不设置 D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION) 的情况下,调试层会验证在设备上下文 ((例如,绘制、复制等) )上执行的每个操作的 平铺 资源的所有图块映射是否正确使用。 根据 (使用的平铺资源的大小(如果有任何) ),此验证可能是处理器密集型且速度缓慢。 应用可能希望最初在上运行平铺资源磁贴映射验证;然后,当他们确定调用模式是安全的,可以通过设置D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION来禁用验证。
如果在创建平铺资源时设置了D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION,则调试层不会在其整个生存期内对该资源的图块映射执行跟踪。 或者,如果为任何给定的设备上下文方法调用设置了D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION, (例如绘制或复制调用) 涉及平铺资源,则调试层会跳过该调用的所有图块映射验证。
要求
目标平台 | Windows |
标头 | d3d11sdklayers.h |
Library | D3D11.lib |