다음을 통해 공유


ID3D11Debug::SetFeatureMask 메서드(d3d11sdklayers.h)

디버그 기능을 켜고 끄는 플래그의 비트 필드를 설정합니다.

구문

HRESULT SetFeatureMask(
  UINT Mask
);

매개 변수

Mask

형식: UINT

비트 OR 연산을 사용하여 결합된 기능 마스크 플래그의 조합입니다. 플래그가 있으면 해당 기능이 켜기로 설정되고, 그렇지 않으면 기능이 꺼지도록 설정됩니다. 기능 마스크 플래그에 대한 설명은 비고를 참조하세요.

반환 값

형식: HRESULT

이 메서드는 Direct3D 11 반환 코드 중 하나를 반환합니다.

설명

참고 세션 0 프로세스에서 이 API를 호출하면 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE 반환됩니다.
 
다음 기능 마스크 플래그 중 하나를 설정하면 렌더링 작업 메서드(아래 나열됨)가 호출될 때 몇 가지 추가 작업을 수행하게 됩니다.
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에 대한 이전 호출에 의해 설정된 설정에 따라 발생합니다.
 

이러한 기능 마스크 플래그는 다음 렌더링 작업 메서드에 적용됩니다.

다음 기능 마스크 플래그 중 하나를 설정하면 IDXGIDevice2::OfferResourcesIDXGIDevice2::ReclaimResources 메서드의 동작을 제어하여 테스트 및 디버깅에 도움이 될 수 있습니다.
참고 이러한 플래그는 Windows 8부터 사용할 수 있는 Direct3D 11.1 런타임에서 지원됩니다.
 
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::OfferResourcesIDXGIDevice2::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 을 호출하는 경우 런타임은 부분 프레젠테이션 정보를 무시합니다.
다음 플래그는 Direct3D 11.2 런타임에서 지원됩니다.
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
라이브러리 D3D11.lib

추가 정보

ID3D11Debug 인터페이스