다음을 통해 공유


Direct3D 렌더링 성능 향상

WDDM(Windows 디스플레이 드라이버 모델) 1.3 이상 드라이버는 Direct3D 9 하드웨어가 하드웨어 명령 버퍼 및 카운터를 더 잘 사용하고 시스템 메모리를 하위 리소스에 효율적으로 복사할 수 있도록 하는 Microsoft Direct3D 렌더링 성능 향상을 지원할 수 있습니다. Direct3D 버전 10 하드웨어에 사용할 수 있는 기능 중 일부를 미러 이러한 기능은 Windows 8.1 새로운 기능입니다.

새로운 Direct3D 11.1 리소스 트리밍 및 지도 기본 성능 향상도 사용할 수 있습니다. 지도 기본 시나리오는 아래 동작 변경 섹션에 설명되어 있습니다.

렌더링 성능 참조

이 참조 섹션에서는 DDI(사용자 모드 디바이스 드라이버 인터페이스)에 대해 설명합니다.

사용자 모드 드라이버에서 구현한 Direct3D 렌더링 성능 함수

이 섹션에는 Microsoft Direct3D 렌더링 성능 향상을 지원하기 위해 WDDM(Windows Display Driver Model) 1.3 이상 사용자 모드 디스플레이 드라이버가 구현하는 함수가 포함되어 있습니다.

PFND3DDDI_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP

Direct3D 렌더링 성능 구조 및 열거형

이러한 사용자 모드 구조 및 열거형은 렌더링 성능 향상을 지원하며 Windows 8.1 대해 새로운 기능 또는 업데이트됩니다. 모두 D3D11_1_DDI_FLUSH_FLAGS 제외하고 Direct3D 수준 9 드라이버에 적용됩니다.

WDDM 1.3부터 DDI 구현 요구 사항

WDDM 1.3부터 사용자 모드 드라이버가 구현하려면 다음 함수가 필요하거나 선택 사항입니다.

함수 그룹 Description

WDDM 1.3 이전의 선택 사항인 Direct3D 9 함수입니다. 이제 필수:

WDDM 1.3부터 사용할 수 있는 Direct3D 9 함수입니다. 드라이버는 이러한 함수를 모두 구현하거나 다음 함수를 구현하지 않아야 합니다.

바로 위의 WDDM 1.3 이상 선택적 함수가 구현되면 이러한 함수는 다음과 같은 동작을 변경합니다.

  • BltDXGI — 네이티브 스테이징
  • Blt1DXGI — 네이티브 스테이징
  • CreateResource2 — 네이티브 스테이징, 큰 캡처 텍스처
  • GetCaps — 타임스탬프를 사용하여 간단한 인스턴스화
  • 잠금 — 네이티브 스테이징
  • TexBlt1 — 네이티브 스테이징
  • 잠금 해제 — 네이티브 스테이징
  • VolBlt1 - 네이티브 스테이징

이러한 시나리오는 GetCaps가 호출되는 경우에 적용됩니다.

  • D3DDDICAPS_GETD3DQUERYDATA 설정된 경우 드라이버는 필요에 따라 타임스탬프를 위한 지원을 보고할 수 있습니다. 즉, Direct3D 런타임은 지원을 마스킹하지 않습니다.
  • D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT 설정된 경우 드라이버는 인스턴싱에 대한 선택적 하드웨어 지원을 보고할 수 있습니다.

이러한 Direct3D 11 함수는 다음과 같은 동작을 변경합니다.

리소스 만들기, 매핑 및 매핑 해제 함수 호출에 대한 동작 변경

WDDM 1.3 이상 드라이버에서 구현되는 이러한 함수의 경우 Direct3D 런타임은 지도 기본 시나리오에 대해 제한된 입력 값 집합을 제공합니다. 이러한 제한된 값은 기능 수준 11.1 이상을 지원하는 드라이버에만 적용됩니다.

CreateResource(D3D11)함수

이러한 입력 D3D11DDIARG_CREATERESOURCE 구조체 멤버는 제한됩니다.

멤버 Description

ResourceDimension사용량

이러한 동작 변경은 Direct3D 런타임이 ResourceDimension대한 형식 D3D10DDIRESOURCE_BUFFER 제공하고 사용량에 D3D10_DDI_USAGE_DEFAULT 입력하는 경우에만 적용됩니다.

BindFlags

Direct3D 런타임은 D3D10_DDI_BIND_SHADER_RESOURCED3D11_DDI_BIND_UNORDERED_ACCESS 값만 설정합니다.

MapFlags

여기에 나열된 다른 모든 멤버 요구 사항이 충족되면 런타임에서 D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITED3D10_DDI_MAP_READWRITE 값을 설정할 수 있습니다. 드라이버는 이러한 값을 지원해야 합니다. D3D10_DDI_MAP_WRITE_DISCARDD3D10_DDI_MAP_WRITE_NOOVERWRITE 값이 잘못되었습니다.

MiscFlags

런타임은 D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWSD3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED 값만 설정합니다.

형식

런타임은 DXGI_FORMAT_UNKNOWN 값만 설정합니다.

SampleDesc

런타임은 DXGI_SAMPLE_DESC 설정합니다. 멤버를 1로 계산 하고 품질 멤버를 0으로 계산합니다.

MipLevels

런타임은 값을 1로 설정합니다.

ArraySize

런타임은 값을 1로 설정합니다.

pPrimaryDesc

런타임은 값을 NULL로 설정합니다.

ResourceMap함수

ResourceMap에 대한 이러한 입력 매개 변수는 제한됩니다.

매개 변수 Description

hResource

Direct3D 런타임은 CreateResource(D3D11)에 대한 만들기 호출에서 MapFlags에 대한 0이 아닌 값이 설정된 경우 D3D10DDIRESOURCE_BUFFER 리소스만 설정합니다.

런타임은 DXGI_FORMAT_UNKNOWN 값만 설정합니다.

하위 리소스

런타임은 값만 0으로 설정합니다.

DDIMap

여기에 나열된 다른 모든 멤버 요구 사항이 충족되면 런타임은 만들기 호출에서 CreateResource(D3D11)에 설정된 MapFlags 값과 일치하는 D3D10_DDI_MAP_READ,D3D10_DDI_MAP_WRITE 또는 D3D10_DDI_MAP_READWRITE 값을 설정할 수 있습니다.

플래그

런타임의 입력 값은 제한되지 않지만 드라이버는 D3D10_DDI_MAP_FLAG_DONOTWAIT 값을 지원할 수 있어야 합니다.

pMappedSubResource

런타임의 입력 값은 제한되지 않지만 드라이버는 유효한 CPU 캐시 가능 포인터를 D3D10DDI_MAPPED_SUBRESOURCE 할당해야 합니다. pData 멤버이며 버퍼의 크기와 pData에 제공된 데이터와 일치하도록 RowPitchDepthPitch를 설정해야 합니다.

ResourceUnmap함수

ResourceUnmap에 대한 이러한 입력 매개 변수는 제한됩니다.

매개 변수 Description

hDevice

Direct3D 런타임의 입력 값은 제한되지 않지만 원래 ResourceMap 호출의 hDevice 값과 일치하는 값입니다.

hResource

Runtime은 CreateResource(D3D11)에 대한 만들기 호출에서 MapFlags에 대한 0이 아닌 값이 설정된 경우 D3D10DDIRESOURCE_BUFFER 리소스만 설정합니다.

하위 리소스

런타임은 값만 0으로 설정합니다.