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 버퍼 부분의 시작 부분까지의 오프셋(바이트)입니다. 패치 시간에 수신되는 오프셋은 제출 시 수신되는 오프셋과 일치합니다.
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(비디오 프레젠테이션 네트워크) 토폴로지 경로에 있는 비디오 현재 원본의 ID 번호(0부터 시작)입니다. 이 멤버는 Flip 또는 FlipWithNoWait 비트 필드 플래그가 Flags 멤버에 설정된 경우에만 유효합니다.
FlipInterval
[in] 대칭 이동 간격(즉, 대칭 이동이 0, 1, 2, 3 또는 4 세로 동기화 후 발생하는 경우)을 나타내는 D3DDDI_FLIPINTERVAL_TYPE형식화된 값입니다. FlipIntervalFlags 멤버에서 대칭 이동 비트 필드 플래그(즉, 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 포함) |