다음을 통해 공유


Windows 10 디스플레이 및 그래픽 드라이버의 새로운 기능

이 페이지에서는 Windows 10 버전 2004(WDDM 2.7)의 새로운 디스플레이 및 그래픽 드라이버에 대해 설명합니다. 이전 버전의 WDDM 2.X에서 추가된 기능을 보려면 이전 WDDM 2.X 버전의 새로운 기능을 참조하세요.

메시 셰이더

메시 셰이더는 래스터화를 사용할 때 Direct3D 12 그래픽 파이프라인의 유연성과 성능을 높이는 수단입니다. 입력 어셈블러의 일부 고정 함수 동작을 유연한 함수 동작으로 대체하여 입력 어셈블러, 특히 꼭짓점 및 기하 도형 셰이더 단계의 새로운 대체 역할을 합니다. 메시 셰이더를 사용하면 애플리케이션이 입력 어셈블러보다 더 일찍 컬링을 적용할 수 있습니다. GPU에서 인덱스 데이터를 처리하지 않고도 기본 형식을 선별할 수 있습니다. 이는 시간이 지남에 따라 3D 애플리케이션의 기본 개수가 점점 더 높아지는 것을 볼 때 매우 유용합니다.

픽셀 셰이더가 연결된 경우 메시 셰이더의 기본 출력은 픽셀 셰이더 단계로 직접 공급됩니다.

메시 셰이더 기능은 새로운 단계인 증폭 셰이더와 함께 메시 셰이더 단계를 도입합니다. 증폭 셰이더는 GPU 테셀레이션 단계를 대체합니다. 애플리케이션은 필요에 따라 메시 셰이더를 몇 번 호출하도록 증폭 셰이더를 설정합니다. 증폭 셰이더는 애플리케이션이 기하학적 세부 수준을 동적으로 제어할 수 있는 선택적 단계입니다.

메시 셰이더 기능에는 새로운 음영 언어 구문과 UMD 변경 내용이 포함됩니다. 메시 셰이더의 디바이스 기능을 보고하기 위해 D3D12DDI_D3D12_OPTIONS_DATA_0073 통해 보고된 MeshShaderTier라는 필드가 있습니다. 또한 두 개의 새로운 셰이더 단계가 도입되었기 때문에 D3D12DDIARG_CREATE_PIPELINE_STATE_0075hMeshShaderhAmplificationShader의 두 개의 새 필드가 있습니다. 작업을 시작하기 위해 DDI PFND3D12DDI_DISPATCH_MESH_0074 명령 목록과 간접 디스패치에 대한 D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH 있습니다.

DXR(DirectX 광선 추적) 1.1

WDDM 2.7은 Direct3D 12에서 DXR의 초기 릴리스를 기반으로 하는 몇 가지 새로운 기능과 향상된 기능을 제공합니다.

  • 인라인 레이트레이싱은 별도의 동적 셰이더 또는 셰이더 테이블을 사용하지 않는 다른 형태의 광선 추적입니다. DXR 1.0 스타일 레이트레이싱을 사용하는 셰이더가 "동적 셰이더 기반" 레이트레이싱이라고 부르며 적합하지 않은 모든 경우에서 개발자의 유연성과 편의성을 제공합니다. 인라인 레이트레이싱은 컴퓨팅 셰이더, 픽셀 셰이더 등을 비롯한 모든 셰이더 단계에서 사용할 수 있습니다. 이는 DDI 변경에 해당하지는 않지만 WDDM 2.7에서 사용할 수 있는 항목으로 여기서 언급되고 있습니다.

  • 애플리케이션은 ExecuteIndirect를 통해 DispatchRays를 호출하여 GPU에서 레이트레이싱 작업을 구성할 수 있습니다. 이는 광선 추적 작업을 컬링, 정렬 또는 조정하려는 애플리케이션에 유용할 수 있으며 이를 위해 셰이더를 사용합니다. 이와 함께 이제 D3D12DDI_INDIRECT_ARGUMENT_TYPE 열거형 값이 있습니다. 간접 광선 추적 디스패치를 사용하는 경우 간접 실행 버퍼의 각 요소는 D3D12DDIARG_DISPATCH_RAYS_0054 형식입니다.

  • 다양한 셰이더 조합을 고려하여 파이프라인 상태를 만드는 오버헤드는 3D 컴퓨터 그래픽에서 이러한 어려운 문제 중 하나입니다. DXR 1.1에는 도움이 될 수 있는 추가-to-state-object가 포함되어 있습니다. AddToStateObject()는 API에 노출되므로 애플리케이션에서 추가되는 항목에 비례하여 CPU 오버헤드가 있는 기존 상태 개체에 셰이더를 추가할 수 있습니다. 이와 함께 PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 및PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072 두 가지 디바이스 DDI 함수가 있습니다.

일반 기능 보고의 경우 보고 계층 1.1에 사용되는 D3D12DDI_RAYTRACING_TIER_1_1 새 열거형 값이 있습니다.

샘플러 피드백

샘플러 피드백은 텍스처 샘플링 정보 및 위치를 캡처하고 기록하기 위한 Direct3D 12 기능입니다. 샘플러 피드백이 없으면 이러한 세부 정보는 개발자에게 불투명합니다. 이 기능을 사용하면 애플리케이션에서 샘플링된 밉을 알 수 있는 기능뿐만 아니라 이러한 밉의 위치를 알 수 있습니다. 애플리케이션은 다음과 같은 샘플링 정보에 관심이 있을 수 있습니다.

  • 텍스처 스트리밍 시스템에서 다음에 로드할 내용을 정확하게 알고 있거나
  • 텍스처 공간 음영 렌더링 시스템에서 음영 처리해야 하는 사항을 정확하게 알고 있습니다.

샘플 작업의 피드백은 애플리케이션 검사 가능 정보를 가져오기 위해 트랜스코딩해야 하는 일종의 불투명 리소스 역할을 하는 "피드백 맵"에 기록됩니다. 피드백 자체의 작성에는 셰이더 모델 6_5에 HLSL 구문이 있습니다. 의미 체계는 Texture2D의 샘플 및 해당 변형에 대한 의미 체계와 매우 유사합니다.

샘플러 피드백은 새 음영 언어 구문을 잘 활용하지만 UMD 변경도 포함됩니다. 디바이스 기능 검사의 경우 D3D12DDI_D3D12_OPTIONS_DATA_0073 통해 보고된 SamplerFeedbackTier라는 상한이 있습니다. 리소스 만들기는 D3D12DDI_MIP_REGION_0075 형식의 새 필드, 샘플러 피드백 밉 영역을 사용하도록 수정되었습니다. 이와 함께 PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075 새로운 설명자 만들기 메서드도 있습니다.

Content Protection

선택적으로 보호된 리소스 지원은 WDDM 2.7의 Direct3D 12 비디오 작업에 추가되었습니다. 백그라운드에서 보호된 리소스는 WDDM 2.7 이전에 존재했지만 비디오가 아닌 API 간 공유 및 그래픽 또는 컴퓨팅에만 사용할 수 있었습니다.

보호된 리소스에 대한 지원은 드라이버에서 전역 항목으로 보고되지 않습니다. 작업별로 수행됩니다. 드라이버가 특정 작업에 대해 보호된 리소스를 지원한다고 보고하는 경우 이는 작업이 보호된 리소스를 읽고 쓸 수 있음을 의미하며 리소스 종류가 허용하는 경우 API 간 공유를 지원합니다. 언급할 가치가 있는 또 다른 점은 드라이버가 특정 형식에 대해 보호된 리소스 지원을 주장하는 경우 해당 형식도 보호되지 않는 리소스로 지원해야 한다는 것입니다.

WDDM 2.7을 사용하면 리소스 만들기 메서드가 선택적 D3D12DDI_HPROTECTEDRESOURCESESSION instance 사용하도록 수정됩니다. 드라이버에는 설정 및 할당을 알리기 위해 개체 생성 시 이 매개 변수가 제공됩니다. 또한 메모리 예산 검사는 작업에서 보호된 리소스를 사용할지 여부를 나타내기 위해 수정됩니다. protected-resource-session 매개 변수가 NULL이 아닌 경우 이는 작업이 보호된 리소스에 쓰임을 나타냅니다. 보호되지 않는 리소스에 쓰려면 작업 개체를 다시 만들어야 합니다.

출력이 보호된 리소스인 경우 디코더 및 동작 추정 참조는 보호된 리소스여야 합니다. 비디오 처리는 보호된 리소스에 쓸 때 보호된 리소스와 보호되지 않은 리소스의 조합에서 읽을 수 있습니다.

보호된 리소스에 쓰는 하나 이상의 작업을 기록하기 전에 NULL 이 아닌 보호된 리소스 세션을 사용하여 PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 호출해야 합니다. 보호되지 않는 리소스에 쓰는 하나 이상의 작업을 기록하기 전에 NULL을 사용하여 PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 호출해야 합니다.

WDDM 2.7에서 콘텐츠 보호를 위한 위의 단계별 DDI 변경 내용 둘러보기 외에도 자세한 내용은 시작점으로 D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 참조하세요.

도구에 대한 기록 버퍼 보고 개선

WDDM 2.7에서는 GPU 디버깅 도구의 기록 버퍼 사용에 이점을 주는 DDI 변경이 도입되었습니다. 이 변경으로 단일 명령 버퍼 제출에는 한 번에 하나의 명령 목록이 아닌 여러 명령 목록에 해당하는 작업이 포함될 수 있습니다. 이러한 변경을 통해 GPU 디버깅 도구는 애플리케이션의 성능 특성을 보다 정확하게 보고할 수 있습니다.

이 기능은 D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS 통해 보고됩니다. D3DDDI_BATCHEDMARKERDATA 해당하는 D3DDDIMLT_BATCHED 열거형 값의 새 D3DDDI_MARKERLOGTYPE 있습니다. ETW 이벤트 데이터 구조는 형식이 D3DDDIMLT_BATCHED 경우 몇 가지 D3DDDI_BATCHEDMARKERDATA 요소를 포함하도록 다시 작성되었습니다.

DisplayPort(DP) AUX/I2C

DP AUX(보조) 채널은 DP 디바이스의 기능, 링크 학습, 토폴로지 검색, I2C 버스 액세스 등을 읽는 데 사용되는 디바이스별 레지스터 파일인 DP 구성 데이터(DPCD)에 대한 액세스를 제공합니다. 시작점으로 DXGK_DP_INTERFACE 참조하세요.