DXGKARG_SUBMITCOMMAND 구조체(d3dkmddi.h)
DXGKARG_SUBMITCOMMAND 구조는 DxgkDdiSubmitCommand를 호출하는 동안 디스플레이 미니포트 드라이버가 하드웨어 명령 실행 단위에 제출하는 DMA(직접 메모리 액세스) 버퍼를 설명합니다.
구문
typedef struct _DXGKARG_SUBMITCOMMAND {
union {
HANDLE hDevice;
HANDLE hContext;
};
UINT DmaBufferSegmentId;
PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
UINT DmaBufferSize;
UINT DmaBufferSubmissionStartOffset;
UINT DmaBufferSubmissionEndOffset;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
UINT DmaBufferPrivateDataSubmissionStartOffset;
UINT DmaBufferPrivateDataSubmissionEndOffset;
UINT SubmissionFenceId;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
DXGK_SUBMITCOMMANDFLAGS Flags;
UINT EngineOrdinal;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;
멤버
hDevice
[in] 드라이버가 다중 엔진을 인식하지 않는 경우(즉, 드라이버가 컨텍스트 생성을 지원하지 않음) hDevice 는 제출 요청이 시작된 디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다. 디바이스 핸들은 DXGKARG_SUBMITCOMMAND 포함된 공용 구조체에서 드라이버의 DxgkDdiSubmitCommand 함수에 제공됩니다.
일부 페이징 작업의 경우 hDevice 는 NULL입니다(예: 전원 관리 중에 전체 프레임 버퍼의 콘텐츠를 제거한 페이징 작업). 페이징 작업은 Flags 멤버의 페이징 비트 필드 플래그로 표시됩니다.
hContext
[in] 드라이버가 다중 엔진을 인식하는 경우(즉, 드라이버가 컨텍스트 만들기를 지원함), 제출 요청이 시작된 디바이스 컨텍스트에 대한 핸들입니다. 컨텍스트 핸들은 DXGKARG_SUBMITCOMMAND 포함된 공용 구조체에서 드라이버의 DxgkDdiSubmitCommand 함수에 제공됩니다.
일부 페이징 작업의 경우 hContext 는 NULL입니다(예: 전원 관리 중에 전체 프레임 버퍼의 콘텐츠를 제거한 페이징 작업). 페이징 작업은 Flags 멤버의 페이징 비트 필드 플래그로 표시됩니다.
DmaBufferSegmentId
[in] DMA 버퍼가 페이징된 메모리 세그먼트의 식별자입니다.
드라이버가 드라이버의 DxgkDdiCreateContext 함수를 호출할 때 DXGK_CONTEXTINFO 구조체의 DmaBufferSegmentSet 멤버를 0으로 설정하여 DMA 버퍼를 세그먼트에 매핑하지 않도록 표시된 경우 식별자는 0일 수 있습니다. DmaBufferSegmentId가 0이면 DMA 버퍼가 시스템 메모리의 연속 블록으로 할당되었습니다.
DmaBufferPhysicalAddress
[in] DMA 버퍼가 페이징된 실제 주소를 나타내는 PHYSICAL_ADDRESS 데이터 형식(LARGE_INTEGER 정의됨)입니다.
DmaBufferSegmentId가 0이면 DmaBufferPhysicalAddress는 DMA 버퍼가 있는 시스템 메모리의 실제 주소입니다.
DmaBufferSegmentId가 0이 아닌 경우 DmaBufferPhysicalAddress는 DMA 버퍼의 세그먼트 물리적 주소입니다. 즉, 주소는 실제 메모리(DXGK_SEGMENTDESCRIPTOR에 정의된 연속 주소 공간인 조리개 세그먼트의 실제 주소를 가리킵니다. BaseAddress + DmaBuffer.SegmentOffset).
DmaBufferPhysicalAddress는 드라이버가 DMA 버퍼의 시작을 포함하지 않는 DMA 버퍼의 섹션(즉, DmaBufferSubmissionStartOffset 멤버가 0이 아닌 경우)을 패치하거나 제출해야 하는 경우에도 항상 DMA 버퍼의 시작을 나타냅니다.
DmaBufferSize
[in] DMA 버퍼의 크기(바이트)입니다.
DmaBufferSize 는 DMA 버퍼의 전체 길이를 나타냅니다. 그러나 패치 또는 제출 요청은 DMA 버퍼의 일부만 참조할 수 있습니다.
DmaBufferSubmissionStartOffset
[in] DMA 버퍼의 시작부터 패치 또는 제출이 필요한 DMA 버퍼 부분의 시작 부분까지의 오프셋(바이트)입니다. 패치 시간에 수신되는 오프셋은 제출 시 수신되는 오프셋과 일치합니다.
DmaBufferSubmissionEndOffset
[in] DMA 버퍼의 시작부터 패치 또는 제출이 필요한 DMA 버퍼 부분의 끝까지 오프셋(바이트)입니다. 패치 시간에 수신되는 오프셋은 제출 시 수신되는 오프셋과 일치합니다.
pDmaBufferPrivateData
[in] DxgkDdiRender, DxgkDdiPresent 또는 DxgkDdiPatch 함수 중에 채워진 DMA 버퍼와 연결된 드라이버 상주 프라이빗 데이터에 대한 포인터 입니다.
페이징 작업의 경우 단일 페이징 버퍼가 여러 독립 제출에 사용됩니다. 이 시나리오에서 드라이버는 DxgkDdiBuildPagingBuffer 함수에 대한 호출에서 적절한 프라이빗 드라이버 데이터 포인터를 반환하여 모든 제출에 대한 단일 드라이버 프라이빗 데이터 범위 또는 각 제출에 대해 하나의 드라이버 프라이빗 데이터 범위를 갖도록 나타낼 수 있습니다.
DmaBufferPrivateDataSize
[in] pDmaBufferPrivateData 가 가리키는 프라이빗 드라이버 데이터의 크기(바이트)입니다.
DmaBufferPrivateDataSize 는 프라이빗 드라이버 데이터 버퍼의 전체 길이를 나타냅니다. 그러나 현재 제출과 연결된 부분은 더 작을 수 있습니다.
KMD는 이 멤버가 0일 때 프라이빗 데이터의 유효성을 검사해서는 안 됩니다.
DmaBufferPrivateDataSubmissionStartOffset
[in] pDmaBufferPrivateData 가 지정하는 DMA 버퍼 프라이빗 데이터의 시작부터 현재 제출과 연결된 프라이빗 데이터 부분의 시작 부분까지의 오프셋(바이트)입니다. DmaBufferPrivateDataSubmissionStartOffset 은 비페이징 요청에 대해 항상 0입니다.
DmaBufferPrivateDataSubmissionEndOffset
[in] pDmaBufferPrivateData 가 지정하는 DMA 버퍼 프라이빗 데이터의 시작부터 현재 제출과 연결된 프라이빗 데이터 부분의 끝까지의 오프셋(바이트)입니다.
SubmissionFenceId
[in] 드라이버가 링 버퍼의 펜스 명령에 쓸 수 있는 고유 식별자입니다. 이 버퍼는 GPU(그래픽 처리 장치)를 실행하기 위해 DMA 버퍼가 큐에 대기되는 버퍼입니다. 이러한 유형의 식별자에 대한 자세한 내용은 펜스 식별자 제공을 참조하세요.
VidPnSourceId
[in] 대칭 이동 작업을 위한 VidPN(비디오 현재 네트워크) 토폴로지 경로에 있는 비디오 원본의 0부터 시작하는 식별 번호입니다. 이 멤버는 Flip 또는 FlipWithNoWait 비트 필드 플래그가 Flags 멤버에 설정된 경우에만 유효합니다.
FlipInterval
[in] 대칭 이동 간격(즉, 0, 1, 2, 3 또는 4 세로 동기화 후에 대칭 이동이 발생하는 경우)을 나타내는 D3DDDI_FLIPINTERVAL_TYPE 형식의 값입니다. FlipInterval은 Flags 멤버에서 Flip 비트 필드 플래그(즉, TRUE)가 설정된 경우에만 유효합니다.
Flags
[in] 제출할 DMA 버퍼에 대한 정보를 식별하는 DXGK_SUBMITCOMMANDFLAGS 구조체입니다.
EngineOrdinal
[in] 향후 사용을 위해 예약되어 있습니다.
DmaBufferVirtualAddress
이 멤버는 예약되어 있으며 0으로 설정해야 합니다. Windows 7부터 지원됩니다.
NodeOrdinal
컨텍스트가 만들어지는 노드의 인덱스(0부터 시작)입니다. 컨텍스트가 NULL일 때 노드를 식별합니다. Windows 8 부터 지원합니다.
설명
디스플레이 미니포트 드라이버의 DxgkDdiSubmitCommand 함수는 여러 프로세스가 hDevice 멤버가 동시에 지정하는 디바이스 개체에 액세스할 수 있음을 알고 있어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista(WDDM 1.0) |
머리글 | d3dkmddi.h(D3dkmddi.h 포함) |