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 드라이버에 적용됩니다.
- D3DDDI_FLUSH_FLAGS (신규)
- D3DDDIARG_COPYFLAGS (신규)
- D3DDDIARG_COUNTER_INFO (신규)
- D3DDDIARG_UPDATESUBRESOURCEUP (신규)
- D3DDDICAPS_SIMPLE_INSTANCING_SUPPORT (신규)
- CreateResource2(WDDM 1.3 이상 Direct3D 수준 9 드라이버는 CaptureBuffer 플래그 값이 설정된 경우 E_INVALIDARG 오류 코드를 반환해야 함)
- D3D11_1_DDI_FLUSH_FLAGS (D3DWDDM1_3DDI_TRIM_MEMORY 상수가 추가됨)
- D3DDDI_DEVICEFUNCS (pfnFlush1, pfnCheckCounterInfo, pfnCheckCounter, pfnUpdateSubresourceUP 멤버가 추가됨)
- D3DDDI_POOL (D3DDDIPOOL_STAGINGMEM 상수가 추가됨)
- D3DDDICAPS_TYPE (D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT 상수가 추가됨)
- GetCaps (주의의 새 정보)
WDDM 1.3부터 DDI 구현 요구 사항
WDDM 1.3부터 사용자 모드 드라이버가 구현하려면 다음 함수가 필요하거나 선택 사항입니다.
함수 그룹 | Description |
---|---|
WDDM 1.3 이전의 선택 사항인 Direct3D 9 함수입니다. 이제 필수: |
|
WDDM 1.3부터 사용할 수 있는 Direct3D 9 함수입니다. 드라이버는 이러한 함수를 모두 구현하거나 다음 함수를 구현하지 않아야 합니다. |
|
바로 위의 WDDM 1.3 이상 선택적 함수가 구현되면 이러한 함수는 다음과 같은 동작을 변경합니다. |
이러한 시나리오는 GetCaps가 호출되는 경우에 적용됩니다.
|
이러한 Direct3D 11 함수는 다음과 같은 동작을 변경합니다. |
|
리소스 만들기, 매핑 및 매핑 해제 함수 호출에 대한 동작 변경
WDDM 1.3 이상 드라이버에서 구현되는 이러한 함수의 경우 Direct3D 런타임은 지도 기본 시나리오에 대해 제한된 입력 값 집합을 제공합니다. 이러한 제한된 값은 기능 수준 11.1 이상을 지원하는 드라이버에만 적용됩니다.
이러한 입력 D3D11DDIARG_CREATERESOURCE 구조체 멤버는 제한됩니다.
멤버 | Description |
---|---|
ResourceDimension 및 사용량 |
이러한 동작 변경은 Direct3D 런타임이 ResourceDimension에 대한 형식 D3D10DDIRESOURCE_BUFFER 제공하고 사용량에 D3D10_DDI_USAGE_DEFAULT 입력하는 경우에만 적용됩니다. |
BindFlags |
Direct3D 런타임은 D3D10_DDI_BIND_SHADER_RESOURCE 및 D3D11_DDI_BIND_UNORDERED_ACCESS 값만 설정합니다. |
MapFlags |
여기에 나열된 다른 모든 멤버 요구 사항이 충족되면 런타임에서 D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE 및 D3D10_DDI_MAP_READWRITE 값을 설정할 수 있습니다. 드라이버는 이러한 값을 지원해야 합니다. D3D10_DDI_MAP_WRITE_DISCARD 및 D3D10_DDI_MAP_WRITE_NOOVERWRITE 값이 잘못되었습니다. |
MiscFlags |
런타임은 D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS 및 D3D11_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에 제공된 데이터와 일치하도록 RowPitch 및 DepthPitch를 설정해야 합니다. |
ResourceUnmap에 대한 이러한 입력 매개 변수는 제한됩니다.
매개 변수 | Description |
---|---|
hDevice |
Direct3D 런타임의 입력 값은 제한되지 않지만 원래 ResourceMap 호출의 hDevice 값과 일치하는 값입니다. |
hResource |
Runtime은 CreateResource(D3D11)에 대한 만들기 호출에서 MapFlags에 대한 0이 아닌 값이 설정된 경우 D3D10DDIRESOURCE_BUFFER 리소스만 설정합니다. |
하위 리소스 |
런타임은 값만 0으로 설정합니다. |