estructura DXGKARG_SUBMITCOMMAND (d3dkmddi.h)
La estructura de DXGKARG_SUBMITCOMMAND describe el búfer de acceso directo a memoria (DMA) que un controlador de miniporte de pantalla envía a la unidad de ejecución de comandos de hardware durante una llamada a DxgkDdiSubmitCommand.
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] Si el controlador no es compatible con varios motores (es decir, el controlador no admite la creación de contexto), hDevice es un identificador para el dispositivo de visualización (contexto de gráficos) del que se originó la solicitud de envío. Se proporciona un identificador de dispositivo a la función DxgkDdiSubmitCommand del controlador en la unión que DXGKARG_SUBMITCOMMAND contiene.
Para algunas operaciones de paginación, hDevice es NULL (por ejemplo, operaciones de paginación que expulsan el contenido de todo el búfer de fotogramas durante la administración de energía). Las operaciones de paginación se indican mediante la marca de campo de bits de paginación en el miembro Flags .
hContext
[in] Si el controlador es compatible con varios motores (es decir, el controlador admite la creación del contexto), un identificador para el contexto del dispositivo desde el que se originó la solicitud de envío. Se proporciona un identificador de contexto a la función DxgkDdiSubmitCommand del controlador en la unión que DXGKARG_SUBMITCOMMAND contiene.
Para algunas operaciones de paginación, hContext es NULL (por ejemplo, operaciones de paginación que expulsan el contenido de todo el búfer de fotogramas durante la administración de energía). Las operaciones de paginación se indican mediante la marca de campo de bits de paginación en el miembro Flags .
DmaBufferSegmentId
[in] Identificador del segmento de memoria en el que se pagina el búfer DMA.
El identificador puede ser cero si el controlador indicó no asignar el búfer DMA al segmento estableciendo el miembro DmaBufferSegmentSet de la estructura DXGK_CONTEXTINFO en 0 en una llamada a la función DxgkDdiCreateContext del controlador. Si DmaBufferSegmentId es cero, el búfer DMA se asignó como bloque contiguo de memoria del sistema.
DmaBufferPhysicalAddress
[in] Un tipo de datos PHYSICAL_ADDRESS (que se define como LARGE_INTEGER) que indica la dirección física en la que se pagina el búfer DMA.
Si DmaBufferSegmentId es cero, DmaBufferPhysicalAddress es la dirección física en la memoria del sistema donde se encuentra el búfer DMA.
Si DmaBufferSegmentId es distinto de cero, DmaBufferPhysicalAddress es la dirección física del segmento para el búfer DMA; es decir, la dirección apunta a una dirección física del segmento de apertura , que es un espacio de direcciones contiguo definido en memoria física (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).
Tenga en cuenta que DmaBufferPhysicalAddress siempre hace referencia al principio del búfer DMA aunque el controlador pueda ser necesario para aplicar revisiones o enviar una sección del búfer DMA que no incluye el principio del búfer DMA (es decir, si el miembro DmaBufferSubmissionStartOffset es distinto de cero).
DmaBufferSize
[in] Tamaño, en bytes, del búfer DMA.
DmaBufferSize representa toda la longitud del búfer DMA; sin embargo, la solicitud para aplicar revisiones o enviar podría hacer referencia solo a una parte del búfer DMA.
DmaBufferSubmissionStartOffset
[in] Desplazamiento, en bytes, desde el principio del búfer DMA hasta el inicio de la parte del búfer DMA que requiere revisión o envío. El desplazamiento que se recibe en el momento de la revisión coincide con el desplazamiento que se recibe en el momento del envío.
DmaBufferSubmissionEndOffset
[in] Desplazamiento, en bytes, desde el principio del búfer DMA hasta el final de la parte del búfer DMA que requiere revisión o envío. El desplazamiento que se recibe en el momento de la revisión coincide con el desplazamiento que se recibe en el momento del envío.
pDmaBufferPrivateData
[in] Puntero a los datos privados residentes en el controlador asociados al búfer DMA que se rellenaron durante la función DxgkDdiRender, DxgkDdiPresent o DxgkDdiPatch .
Para las operaciones de paginación, se usa un único búfer de paginación para varios envíos independientes. En ese escenario, el controlador puede indicar que devuelve el puntero de datos del controlador privado adecuado en una llamada a su función DxgkDdiBuildPagingBuffer , para tener un único intervalo de datos privados de controlador para todos los envíos o uno para cada envío.
DmaBufferPrivateDataSize
[in] Tamaño de los datos del controlador privado a los que pDmaBufferPrivateData apunta, en bytes.
DmaBufferPrivateDataSize representa toda la longitud del búfer de datos del controlador privado; sin embargo, la parte asociada al envío actual podría ser menor.
KMD no debe validar los datos privados cuando este miembro es cero.
DmaBufferPrivateDataSubmissionStartOffset
[in] Desplazamiento, en bytes, desde el principio de los datos privados del búfer DMA que pDmaBufferPrivateData especifica para el inicio de la parte de los datos privados asociados al envío actual. DmaBufferPrivateDataSubmissionStartOffset siempre es cero para una solicitud que no sea de clasificación.
DmaBufferPrivateDataSubmissionEndOffset
[in] Desplazamiento, en bytes, desde el principio de los datos privados del búfer DMA que pDmaBufferPrivateData especifica al final de la parte de los datos privados asociados al envío actual.
SubmissionFenceId
[in] Identificador único que el controlador puede escribir en el comando de barrera en el búfer de anillo, que es el búfer donde se ponen en cola los búferes DMA para que se ejecute la unidad de procesamiento de gráficos (GPU). Para obtener más información sobre estos tipos de identificadores, consulte Suministro de identificadores de barrera.
VidPnSourceId
[in] El número de identificación de base cero del origen del vídeo presente en una ruta de acceso de una topología de red (VidPN) de vídeo presente para una operación de volteo. Este miembro solo es válido cuando la marca de campo de bits Flipo FlipWithNoWait está establecida en el miembro Flags .
FlipInterval
[in] Valor con tipo D3DDDI_FLIPINTERVAL_TYPE que indica el intervalo de volteo (es decir, si el volteo se produce después de cero, uno, dos, tres o cuatro sincronizaciones verticales). FlipInterval solo es válido si se establece la marca De campo de bits Flip (es decir, TRUE) en el miembro Flags .
Flags
[in] Estructura DXGK_SUBMITCOMMANDFLAGS que identifica información sobre el búfer DMA que se va a enviar.
EngineOrdinal
[in] Reservado para uso futuro.
DmaBufferVirtualAddress
Este miembro está reservado y debe establecerse en cero. Se admite a partir de Windows 7.
NodeOrdinal
Índice de base cero del nodo para el que se crea el contexto. Identifica el nodo cuando el contexto es NULL. Se admite a partir de Windows 8.
La función DxgkDdiSubmitCommand del controlador de miniporte de pantalla debe tener en cuenta que varios procesos pueden acceder al objeto de dispositivo que el miembro hDevice especifica al mismo tiempo.
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista (WDDM 1.0) |
Encabezado | d3dkmddi.h (incluye D3dkmddi.h) |