DXGKARG_SUBMITCOMMAND 구조체(d3dkmddi.h)

DXGKARG_SUBMITCOMMAND 구조는 DxgkDdiSubmitCommand를 호출하는 동안 디스플레이 미니포트 드라이버가 하드웨어 명령 실행 단위에 제출하는 DMA(직접 메모리 액세스) 버퍼를 설명합니다.

구문

typedef struct _DXGKARG_SUBMITCOMMAND {
  union {
    [in] HANDLE hDevice;
    [in] HANDLE hContext;
  };
  [in] UINT                           DmaBufferSegmentId;
  [in] PHYSICAL_ADDRESS               DmaBufferPhysicalAddress;
  [in] UINT                           DmaBufferSize;
  [in] UINT                           DmaBufferSubmissionStartOffset;
  [in] UINT                           DmaBufferSubmissionEndOffset;
  [in] VOID                           *pDmaBufferPrivateData;
  [in] UINT                           DmaBufferPrivateDataSize;
  [in] UINT                           DmaBufferPrivateDataSubmissionStartOffset;
  [in] UINT                           DmaBufferPrivateDataSubmissionEndOffset;
  [in] UINT                           SubmissionFenceId;
  [in] D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
  [in] D3DDDI_FLIPINTERVAL_TYPE       FlipInterval;
  [in] DXGK_SUBMITCOMMANDFLAGS        Flags;
  [in] UINT                           EngineOrdinal;
       D3DGPU_VIRTUAL_ADDRESS         DmaBufferVirtualAddress;
       UINT                           NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;

멤버

[in] hDevice

드라이버가 다중 엔진을 인식하지 않는 경우(즉, 드라이버가 컨텍스트 생성을 지원하지 않음), 제출 요청이 시작된 디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다. 디바이스 핸들은 DXGKARG_SUBMITCOMMAND 포함된 공용 구조체에서 드라이버의 DxgkDdiSubmitCommand 함수에 제공됩니다.

일부 페이징 작업의 경우 hDevice 는 NULL입니다(예: 전원 관리 중에 전체 프레임 버퍼의 콘텐츠를 제거하는 페이징 작업). 페이징 작업은 Flags 멤버의 페이징 비트 필드 플래그로 표시됩니다.

[in] hContext

드라이버가 다중 엔진을 인식하는 경우(즉, 드라이버가 컨텍스트 생성을 지원함), 제출 요청이 시작된 디바이스 컨텍스트에 대한 핸들입니다. 컨텍스트 핸들은 DXGKARG_SUBMITCOMMAND 포함된 공용 구조체에서 드라이버의 DxgkDdiSubmitCommand 함수에 제공됩니다.

일부 페이징 작업의 경우 hContext 는 NULL입니다(예: 전원 관리 중에 전체 프레임 버퍼의 콘텐츠를 제거하는 페이징 작업). 페이징 작업은 Flags 멤버의 페이징 비트 필드 플래그로 표시됩니다.

[in] DmaBufferSegmentId

DMA 버퍼가 페이징된 메모리 세그먼트의 식별자입니다.

드라이버가 드라이버의 DxgkDdiCreateContext 함수 호출에서 DXGK_CONTEXTINFO 구조체의 DmaBufferSegmentSet 멤버를 0으로 설정하여 DMA 버퍼를 세그먼트에 매핑하지 않도록 지정한 경우 식별자는 0일 수 있습니다. DmaBufferSegmentId 가 0이면 DMA 버퍼가 시스템 메모리의 연속 블록으로 할당되었습니다.

[in] DmaBufferPhysicalAddress

DMA 버퍼가 페이징된 실제 주소를 나타내는 PHYSICAL_ADDRESS 데이터 형식(LARGE_INTEGER 정의됨)입니다.

DmaBufferSegmentId 가 0이면 DmaBufferPhysicalAddress 는 DMA 버퍼가 있는 시스템 메모리의 실제 주소입니다.

DmaBufferSegmentId 가 0이 아닌 경우 DmaBufferPhysicalAddress 는 DMA 버퍼의 세그먼트 실제 주소입니다. 즉, 주소는 실제 메모리(DXGK_SEGMENTDESCRIPTOR)에 정의된 연속 주소 공간인 조리개 세그먼트의 실제 주소를 가리킵니다 . BaseAddress + DmaBuffer.SegmentOffset).

DmaBufferPhysicalAddress 는 드라이버가 DMA 버퍼의 시작을 포함하지 않는 DMA 버퍼의 섹션(즉, DmaBufferSubmissionStartOffset 멤버가 0이 아닌 경우)을 패치하거나 제출해야 하는 경우에도 항상 DMA 버퍼의 시작을 나타냅니다.

[in] DmaBufferSize

DMA 버퍼의 크기(바이트)입니다.

DmaBufferSize 는 DMA 버퍼의 전체 길이를 나타냅니다. 그러나 패치 또는 제출 요청은 DMA 버퍼의 일부만 참조할 수 있습니다.

[in] DmaBufferSubmissionStartOffset

DMA 버퍼의 시작부터 패치 또는 제출이 필요한 DMA 버퍼 부분의 시작 부분까지의 오프셋(바이트)입니다. 패치 시간에 수신되는 오프셋은 제출 시 수신되는 오프셋과 일치합니다.

[in] DmaBufferSubmissionEndOffset

패치 또는 제출이 필요한 DMA 버퍼 부분의 끝까지의 오프셋(바이트)입니다. 패치 시간에 수신되는 오프셋은 제출 시 수신되는 오프셋과 일치합니다.

[in] pDmaBufferPrivateData

DxgkDdiRender, DxgkDdiPresent 또는 DxgkDdiPatch 함수 중에 채워진 DMA 버퍼와 연결된 드라이버 상주 개인 데이터에 대한 포인터 입니다.

페이징 작업의 경우 단일 페이징 버퍼가 여러 독립 제출에 사용됩니다. 이 시나리오에서 드라이버는 DxgkDdiBuildPagingBuffer 함수에 대한 호출에서 적절한 프라이빗 드라이버 데이터 포인터를 반환하여 모든 제출에 대해 단일 드라이버 프라이빗 데이터 범위를 포함하거나 각 제출에 대해 하나씩 지정할 수 있습니다.

[in] DmaBufferPrivateDataSize

pDmaBufferPrivateData 가 가리키는 프라이빗 드라이버 데이터의 크기(바이트)입니다.

DmaBufferPrivateDataSize 는 프라이빗 드라이버 데이터 버퍼의 전체 길이를 나타냅니다. 그러나 현재 제출과 연결된 부분은 더 작을 수 있습니다.

[in] DmaBufferPrivateDataSubmissionStartOffset

pDmaBufferPrivateData 가 지정하는 DMA 버퍼 프라이빗 데이터의 시작부터 현재 제출과 연결된 프라이빗 데이터 부분의 시작 부분까지의 오프셋(바이트)입니다. DmaBufferPrivateDataSubmissionStartOffset 은 비페이징 요청에 대해 항상 0입니다.

[in] DmaBufferPrivateDataSubmissionEndOffset

pDmaBufferPrivateData 가 지정하는 DMA 버퍼 프라이빗 데이터의 시작부터 현재 제출과 연결된 프라이빗 데이터 부분의 끝까지의 오프셋(바이트)입니다.

[in] SubmissionFenceId

드라이버가 링 버퍼의 펜스 명령에 쓸 수 있는 고유 식별자이며, GPU(그래픽 처리 장치)를 실행하기 위해 DMA 버퍼가 큐에 대기되는 버퍼입니다. 이러한 유형의 식별자에 대한 자세한 내용은 펜스 식별자 제공을 참조하세요.

[in] VidPnSourceId

비디오 프레젠테이션 네트워크(VidPN) 토폴로지 경로에 있는 비디오 원본의 0부터 시작하는 식별 번호로, 대칭 이동 작업을 수행합니다. 이 멤버는 Flip 또는 FlipWithNoWait 비트 필드 플래그가 Flags 멤버에 설정된 경우에만 유효합니다.

[in] FlipInterval

대칭 이동 간격(즉, 0, 1, 2, 3 또는 4 세로 동기화 후 대칭 이동이 발생하는 경우)을 나타내는 D3DDDI_FLIPINTERVAL_TYPE 형식의 값입니다. FlipInterval 은 대 칭 이동 비트 필드 플래그(즉, TRUE)가 Flags 멤버에 설정된 경우에만 유효합니다.

[in] Flags

제출할 DMA 버퍼에 대한 정보를 식별하는 DXGK_SUBMITCOMMANDFLAGS 구조체입니다.

[in] EngineOrdinal

다음에 사용하도록 예약됩니다.

DmaBufferVirtualAddress

이 멤버는 예약되어 있으며 0으로 설정해야 합니다.

Windows 7부터 지원합니다.

NodeOrdinal

컨텍스트가 만들어지는 노드의 인덱스(0부터 시작)입니다. 컨텍스트가 NULL일 때 노드를 식별합니다.

Windows 8 시작 지원.

설명

디스플레이 미니포트 드라이버의 DxgkDdiSubmitCommand 함수는 여러 프로세스가 hDevice 멤버가 동시에 지정하는 디바이스 개체에 액세스할 수 있음을 알고 있어야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista(WDDM 1.0)
헤더 d3dkmddi.h(D3dkmddi.h 포함)

추가 정보

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand