다음을 통해 공유


방법: 드라이버 지원 확인

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

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

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

런타임은 드라이버 및 하드웨어 지원에 관계없이 다중 스레딩 및 명령 목록을 지원합니다. 다중 스레드 또는 명령 목록에 대한 드라이버 및 하드웨어 지원이 없는 경우 런타임은 기능을 에뮬레이트합니다. 다중 스레딩에 대한 자세한 내용은 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 구조체가 다중 스레딩 지원에 대한 정보로 초기화됩니다.
    • DriverConcurrentCreates가 TRUE드라이버는 여러 스레드에서 동시에 둘 이상의 리소스를 동시에 만들 수 있습니다.

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

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

Direct3D 11을 사용하는 방법

다중 스레딩