Compartir a través de


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)

Consulte también

D3DDDI_PATCHLOCATIONLIST

DXGKARG_PRESENT

DXGKARG_RENDER

DXGK_ALLOCATIONLIST

DXGK_CONTEXTINFO

DXGK_PATCHFLAGS

dxgkDdiBuildPagingBuffer

dxgkDdiCreateContext

dxgkDdiPatch de

DxgkDdiPresent

dxgkDdiRender