estructura DXGKARG_PATCH (d3dkmddi.h)
La estructura DXGKARG_PATCH describe un búfer de acceso directo a memoria (DMA) que requiere aplicación de revisiones (es decir, requiere la asignación de direcciones físicas).
Sintaxis
typedef struct _DXGKARG_PATCH {
union {
[in] HANDLE hDevice;
[in] HANDLE hContext;
};
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] VOID *pDmaBuffer;
[in] UINT DmaBufferSize;
[in] UINT DmaBufferSubmissionStartOffset;
[in] UINT DmaBufferSubmissionEndOffset;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
[in] UINT DmaBufferPrivateDataSubmissionStartOffset;
[in] UINT DmaBufferPrivateDataSubmissionEndOffset;
[in] const DXGK_ALLOCATIONLIST *pAllocationList;
[in] UINT AllocationListSize;
[in] const D3DDDI_PATCHLOCATIONLIST *pPatchLocationList;
[in] UINT PatchLocationListSize;
[in] UINT PatchLocationListSubmissionStart;
[in] UINT PatchLocationListSubmissionLength;
[in] UINT SubmissionFenceId;
[in] DXGK_PATCHFLAGS Flags;
[in] UINT EngineOrdinal;
} DXGKARG_PATCH;
Miembros
[in] hDevice
Si un controlador no es compatible con varios motores (es decir, el controlador no admite la creación de contexto), un identificador para el dispositivo de visualización (contexto de gráficos) desde el que se originó la solicitud de envío. Se proporciona un identificador de dispositivo a la función DxgkDdiPa tch del controlador en la unión que DXGKARG_PATCH 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 paginación campo de bits en el miembro marcas de.
[in] hContext
Si el controlador es compatible con varios motores (es decir, el controlador admite la creación de 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 DxgkDdiPatch del controlador en la unión que DXGKARG_PATCH 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 paginación campo de bits en el miembro marcas de.
[in] DmaBufferSegmentId
Identificador del segmento de memoria en el que se pagina el búfer DMA.
El identificador puede ser cero si el controlador indicado no asignar el búfer DMA al segmento estableciendo el DmaBufferSegmentSet miembro de la estructura DXGK_CONTEXTINFO a 0 en una llamada a la función DxgkDdiCreateContext del controlador. Si DmaBufferSegmentId es cero, el búfer DMA se asignó como un bloque contiguo de memoria del sistema.
[in] DmaBufferPhysicalAddress
Un tipo de datos PHYSICAL_ADDRESS (que se define como LARGE_INTEGER) que indica la dirección física en la que se paginaba 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 del búfer DMA (es decir, 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 DmaBufferSubmissionStartOffset miembro es distinto de cero).
[in] pDmaBuffer
Puntero al inicio del búfer DMA (es decir, la dirección virtual del principio del búfer DMA).
[in] DmaBufferSize
Tamaño, en bytes, del búfer DMA al que pDmaBuffer apunta.
Tenga en cuenta que 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.
[in] DmaBufferSubmissionStartOffset
Desplazamiento, en bytes, desde el principio del búfer DMA que pDmaBuffer especifica el inicio de la parte del búfer DMA que requiere aplicación de revisiones 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.
[in] DmaBufferSubmissionEndOffset
Desplazamiento, en bytes, desde el principio del búfer DMA que pDmaBuffer especifica al final de la parte del búfer DMA que requiere aplicación de revisiones 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.
[in] pDmaBufferPrivateData
Puntero a los datos privados residentes en el controlador que están asociados al búfer DMA al que pDmaBuffer apunta.
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, devolviendo el puntero de datos del controlador privado adecuado en una llamada a su función DxgkDdiBuildPagingBuffer, para tener un único intervalo de datos privados del controlador para todos los envíos o uno para cada envío.
[in] DmaBufferPrivateDataSize
Tamaño, en bytes, de los datos del controlador privado en pDmaBufferPrivateData.
Tenga en cuenta que 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.
[in] DmaBufferPrivateDataSubmissionStartOffset
Desplazamiento, en bytes, desde el principio de los datos privados del búfer DMA que pDmaBufferPrivateData especifica 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 asignación.
[in] DmaBufferPrivateDataSubmissionEndOffset
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.
[in] pAllocationList
Puntero a una matriz de estructuras de DXGK_ALLOCATIONLIST para la lista de asignaciones asociadas al búfer DMA al que pDmaBuffer.
Para las operaciones de paginación, pAllocationList es NULL porque los búferes de paginación no están asociados a listas de asignación.
[in] AllocationListSize
Número de elementos de la matriz que pAllocationList especifica.
Tenga en cuenta que allocationListSize representa el tamaño total de la lista de asignación; sin embargo, la parte de la lista de asignación asociada al envío actual podría ser menor.
Tenga en cuenta que para las operaciones de paginación allocationListSize es cero porque los búferes de paginación no están asociados a listas de asignación.
[in] pPatchLocationList
Puntero a una matriz de estructuras de D3DDDI_PATCHLOCATIONLIST para la lista de ubicaciones de revisión asociadas al búfer DMA al que pDmaBuffer.
Tenga en cuenta que la matriz puede comenzar con un elemento que está antes del intervalo que se usa para aplicar revisiones al búfer DMA.
Para las operaciones de paginación, pPatchLocationList es NULL porque los búferes de paginación no están asociados a listas de ubicación de revisión.
[in] PatchLocationListSize
Número de elementos de la matriz que pPatchLocationList especifica.
Tenga en cuenta que PatchLocationListSize representa el tamaño total de la lista de ubicación de revisión; sin embargo, el intervalo que el controlador debe procesar suele ser más pequeño.
Para las operaciones de paginación, PatchLocationListSize es cero porque los búferes de paginación no están asociados a listas de ubicación de revisión.
[in] PatchLocationListSubmissionStart
Índice del primer elemento de la lista patch-location que pPatchLocationList especifica que se debe procesar.
Para las operaciones de paginación, PatchLocationListSubmissionStart es cero.
[in] PatchLocationListSubmissionLength
El número de elementos de la lista de ubicación de revisión que pPatchLocationList especifica que se debe procesar.
Para las operaciones de paginación, patchLocationListSubmissionLength es cero.
[in] SubmissionFenceId
Identificador único que el controlador puede escribir en el comando de barrera al final del búfer DMA. Para obtener más información sobre este tipo de identificador, consulte Suministro de identificadores de barrera.
[in] Flags
Estructura de DXGK_PATCHFLAGS que identifica información sobre el búfer DMA que requiere aplicación de revisiones.
[in] EngineOrdinal
Reservado para uso futuro.
Observaciones
El controlador de miniporte para mostrar devuelve una matriz en el pAllocationList miembro de una estructura de DXGKARG_PRESENT o DXGKARG_RENDER de su DxgkDdiPresent o función DxgkDdiRender después de traducir el búfer de comandos a un búfer de acceso directo a memoria (DMA). El administrador de memoria de vídeo asigna direcciones físicas al physicalAddress miembros de las estructuras de DXGK_ALLOCATIONLIST de la matriz y pasa esta matriz a la función DxgkDdiPatch del controlador. DxgkDdiPatch revisiones en el búfer DMA con estas direcciones físicas.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows Vista |
encabezado de | d3dkmddi.h (incluya D3dkmddi.h) |