다음을 통해 공유


방법: 드라이버 지원 확인

이 항목에서는 다중 스레딩 기능( 리소스 만들기명령 목록 포함)이 하드웨어 가속에 지원되는지 여부를 확인하는 방법을 보여 줍니다.

애플리케이션이 다중 스레딩의 그래픽 하드웨어 지원을 위해 검사 것이 좋습니다. 드라이버 및 그래픽 하드웨어가 다중 스레드 개체 만들기를 지원하지 않는 경우 다음과 같은 방법으로 성능을 제한할 수 있습니다.

  • 여러 개체를 동시에 만드는 것은 제한될 수 있습니다.
  • 즉각적인 컨텍스트를 사용하여 그래픽 명령을 렌더링하는 동안 개체를 만드는 것은 제한될 수 있습니다. 예를 들어 하드웨어가 다중 스레딩을 지원하지 않는 경우 애플리케이션은 만드는 데 매우 오랜 시간이 필요한 개체를 백그라운드 스레드에서 만들지 않아야 합니다. 매우 오래 걸리는 만들기 작업은 즉각적인 컨텍스트 렌더링을 차단하고 시각적 프레임 속도 더듬의 위험을 증가시킬 수 있습니다.

런타임은 드라이버 및 하드웨어 지원에 관계없이 다중 스레딩 및 명령 목록을 지원합니다. 다중 스레드 또는 명령 목록에 대한 드라이버 및 하드웨어 지원이 없는 경우 런타임은 기능을 에뮬레이트합니다. 다중 스레딩에 대한 자세한 내용은 Direct3D 11의 다중 스레딩 소개를 참조하세요.

다중 스레딩에 대한 드라이버 지원을 검사:

  1. ID3D11Device 인터페이스 개체를 초기화합니다. 기본적으로 다중 스레딩은 사용하도록 설정됩니다.
  2. ID3D11Device::CheckFeatureSupport를 호출합니다. D3D11_FEATURE_THREADING 값을 Feature 매개 변수에 전달하고, D3D11_FEATURE_DATA_THREADING 구조를 pFeatureSupportData 매개 변수에 전달하고, D3D11_FEATURE_DATA_THREADING 구조체의 크기를 FeatureSupportDataSize 매개 변수에 전달합니다.
  3. ID3D11Device::CheckFeatureSupport 메서드가 성공하면 이전 단계에서 전달한 D3D11_FEATURE_DATA_THREADING 구조체가 다중 스레딩 지원에 대한 정보로 초기화됩니다.
    • DriverConcurrentCreatesTRUE이면 드라이버는 서로 다른 스레드에서 동시에 둘 이상의 리소스를 동시에 만들 수 있습니다.

      DriverCommandListsTRUE이면 드라이버는 명령 목록을 지원합니다. 즉, 즉각적인 컨텍스트에서 실행된 렌더링 명령은 프레임 속도 더듬의 위험이 낮은 별도의 스레드에서 개체를 만드는 것과 동시에 발생할 수 있습니다.

    • DriverConcurrentCreatesFALSE인 경우 드라이버는 동시 생성을 지원하지 않습니다. 즉, 가능한 동시성의 양이 매우 제한적입니다. 그래픽 하드웨어는 서로 다른 스레드에 서로 다른 형식의 개체를 동시적으로 만들 수 없습니다. 또한 그래픽 하드웨어가 다른 스레드에서 리소스를 만들려고 시도하는 동안 그래픽 하드웨어는 직접 컨텍스트를 사용하여 렌더링 명령을 실행할 수 없습니다.

Direct3D 11을 사용하는 방법

다중 스레딩