D3D12_FEATURE_DATA_ARCHITECTURE1 구조체(d3d12.h)
애플리케이션이 특정 어댑터 속성에 더 잘 최적화할 수 있도록 각 어댑터의 아키텍처 세부 정보에 대한 세부 정보를 제공합니다.
통사론
typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1 {
UINT NodeIndex;
BOOL TileBasedRenderer;
BOOL UMA;
BOOL CacheCoherentUMA;
BOOL IsolatedMMU;
} D3D12_FEATURE_DATA_ARCHITECTURE1;
회원
NodeIndex
다중 어댑터 작업에서는 디바이스의 실제 어댑터가 관련되어 있음을 나타냅니다.
다중 어댑터 시스템
TileBasedRenderer
하드웨어 및 드라이버가 타일 기반 렌더러를 지원하는지 여부를 지정합니다.
런타임은 하드웨어 및 드라이버가 타일 기반 렌더러를 지원하는 경우 이 멤버를 TRUE
UMA
하드웨어 및 드라이버가 UMA를 지원하는지 여부를 지정합니다. 하드웨어 및 드라이버가 UMA를 지원하는 경우 런타임은 이 멤버를 TRUE 설정합니다.
CacheCoherentUMA
하드웨어 및 드라이버가 캐시 일관성 UMA를 지원하는지 여부를 지정합니다. 하드웨어 및 드라이버가 캐시 일관성 UMA를 지원하는 경우 런타임은 이 멤버를 TRUE 설정합니다.
IsolatedMMU
SAL: Out
하드웨어 및 드라이버가 격리된 MMU(메모리 관리 단위)를 지원하는지 여부를 지정합니다. 런타임은 GPU가 MEM_WRITE_WATCH(자세한 내용은 VirtualAlloc참조) 및 PAGE_READONLY 같은 CPU 페이지 테이블 속성을 적용하는 경우 이 멤버를 TRUE 설정합니다(자세한 내용은 메모리 보호 상수참조).
TRUE
발언
UMA 및 CacheCoherentUMA를 사용하는 방법
D3D12 앱은 메모리 상주 관리 및 최적의 힙 속성 제공에 대해 염려해야 합니다. D3D12 앱은 D3D12_HEAP_TYPE_DEFAULT 힙의 리소스에 대한 상주만 관리하여 많은 GPU 아키텍처에서 간소화된 상태를 유지하고 합리적으로 잘 실행할 수 있습니다. 이러한 앱은 DXGI_MEMORY_SEGMENT_GROUP_LOCAL IDXGIAdapter3::QueryVideoMemoryInfo 호출하기만 하면 되며 동일한 메모리 세그먼트 그룹에서 D3D12_HEAP_TYPE_UPLOAD D3D12_HEAP_TYPE_READBACK 대해 관대해야 합니다.그러나 이러한 간단한 디자인은 한계를 뛰어넘는 애플리케이션에 비해 너무 제한적입니다. 따라서 D3D12_FEATURE_DATA_ARCHITECTURE 애플리케이션이 기본 어댑터 속성을 더 잘 최적화하는 데 도움이 됩니다.
일부 애플리케이션은 불연속 어댑터를 더 잘 최적화하고 시스템 메모리 및 비디오 메모리 예산을 관리하는 복잡성을 추가로 고려해야 할 수 있습니다.
업로드 힙의 크기가 기본 텍스처의 크기와 비교할 경우 메모리 사용률이 거의 두 배로 증가할 수 있습니다.
이러한 최적화를 지원할 때 애플리케이션은 두 개의 상주 예산을 검색하거나 UMA 거짓
일부 애플리케이션은 통합/UMA 어댑터, 특히 모바일 디바이스에서 배터리 수명을 연장하는 데 관심이 있는 어댑터에 더 잘 최적화하려고 할 수 있습니다.
UMA에서 항상 필요하지 않은 경우 간단한 D3D12 애플리케이션은 특성이 서로 다른 힙 간에 데이터를 복사해야 합니다.
그러나 UMA 속성은 그 자체로 GPU 디자인의 모호한 회색 영역을 포함합니다.
UMA가 모든 GPU 액세스 가능 메모리를 CPU에 자유롭게 액세스할 수 있도록 만들 수 있다고 가정하지 마세요.
캐시코헤렌투마
CacheCoherentUMA true이면 애플리케이션은 힙의 특성을 포기하고 어디서나 업로드 힙에 해당하는 사용자 지정 힙을 사용하는 것을 더 강력하게 즐겁게 할 수 있습니다. WriteToSubresource 제공하는 UMA 최적화는 더 많은 시나리오가 공유 사용의 이점을 활용하기 때문에 더 일반적으로 권장됩니다. 메모리 모델은 더 많은 시나리오와 더 광범위한 채택에 매우 도움이 됩니다. 혜택을 쉽게 얻을 수 없는 일부 코너 사례는 여전히 존재할 수 있습니다., 하지만 그들은 훨씬 희귀 하 고 다른 옵션 보다 덜 해로운 해야 합니다. 고급 개발자의 경우: CacheCoherentUMA 메모리 계층 구조의 상당한 양의 캐시도 CPU와 GPU 간에 통합되거나 통합됨을 의미합니다. 가장 독특한 특징은 업로드 힙이 실제로 CacheCoherentUMA쓰기 저장된다는 것입니다. 이러한 아키텍처의 경우 업로드 힙에서 쓰기 결합을 사용하는 것은 일반적으로 해로울 수 있습니다.
대부분의 단일 어댑터 애플리케이션에서는 하위 수준 세부 정보를 무시해야 합니다. 일반적으로 단일 어댑터 애플리케이션은 환경을 간소화하고 힙을 업로드하기 위해 CPU 쓰기가 쓰기 조합에 친숙한 패턴을 사용하도록 할 수 있습니다. 하위 수준 세부 정보는 다중 어댑터 애플리케이션에 대한 개념을 강화하는 데 도움이 됩니다. 다중 어댑터 애플리케이션은 어댑터 간에 데이터를 효율적으로 이동하기 위해 최적의 사용자 지정 힙 속성을 선택할 수 있을 만큼 어댑터 아키텍처 속성을 잘 이해해야 할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
헤더 | d3d12.h |
참고 항목
핵심 구조