estructura DXGKARG_PRESENT (d3dkmddi.h)
La estructura de DXGKARG_PRESENT describe una operación de copia de origen a principal.
Sintaxis
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
Miembros
[out] pDmaBuffer
Puntero al inicio del búfer DMA, que se alinea en 4 KB. Este búfer se puede enviar a través de DMA al hardware gráfico. Antes de que el controlador de miniporte de pantalla vuelva de la función DxgkDdiPresent , el controlador debe establecer pDmaBuffer en el siguiente byte vacío que sigue al último byte en el que escribió el controlador o el controlador debe apuntar a la ubicación (un byte más allá del espacio de búfer) si no hay más espacio disponible. Esta ubicación habría sido correcta si el búfer era lo suficientemente grande.
[in] DmaSize
Tamaño, en bytes, del búfer DMA al que apunta pDmaBuffer .
[in] pDmaBufferPrivateData
Puntero a una estructura de datos privada residente en controladores que está asociada al búfer DMA al que apunta pDmaBuffer .
[in] DmaBufferPrivateDataSize
Número de bytes que permanecen en la estructura de datos privada a la que pDmaBufferPrivateData apunta a para la operación actual.
[in] pAllocationList
Matriz de estructuras de DXGK_ALLOCATIONLIST que describen el origen, el destino o ambos para la operación de copia. El controlador accede al identificador de asignación de origen a través del miembro hDeviceSpecificAllocation del elemento pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (es decir, elemento 1). El controlador accede al identificador de asignación de destino a través del miembro hDeviceSpecificAllocation del elemento pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (es decir, elemento 2).
Los identificadores especificados en los elementos de la lista de asignación son los identificadores específicos del dispositivo que devuelve la función DxgkDdiOpenAllocation del controlador cuando se abrieron las asignaciones. Si un origen o destino no está presente para la operación, el miembro hDeviceSpecificAllocation del elemento respectivo es NULL. Este miembro está disponible a partir de Windows 7.
Nota
El miembro hDeviceSpecificAllocation del primer elemento de la lista de asignación (elemento 0) siempre es NULL.
[in] pAllocationInfo
Reservado para uso del sistema. El controlador de minipuerto de pantalla debe ignorar este miembro. Este miembro está disponible a partir de Windows 7.
[in] pPresentMultiPlaneOverlayInfo
Puntero a una estructura de tipo DXGK_PRESENTMULTIPLANEOVERLAYINFO que especifica información sobre una entrada VidPN y un plano de superposición que se va a mostrar.
Se admite a partir de Windows 8.
[in/out] pPatchLocationListOut
Matriz de estructuras de D3DDDI_PATCHLOCATIONLIST para la lista de ubicaciones de revisión que rellena el controlador de miniporte para mostrar. Antes de que el controlador vuelva de una llamada a su función DxgkDdiPresent , el controlador debe establecer pPatchLocationListOut en el siguiente elemento D3DDDI_PATCHLOCATIONLIST que sigue al último elemento D3DDDI_PATCHLOCATIONLIST que el controlador actualizó.
[in] PatchLocationListOutSize
Número de elementos de la lista de ubicación de revisión que pPatchLocationListOut especifica. El controlador de miniporte de pantalla no es necesario para rellenar todos los elementos de toda la lista; El controlador debe usar solo los elementos necesarios para describir la ubicación de revisión dentro del búfer DMA.
[in/out] MultipassOffset
Valor UINT que especifica el progreso de la operación de copia si la función DxgkDdiPresent del controlador de miniporte para mostrar debe devolver STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER para obtener un nuevo búfer DMA. Cuando se llama primero a la función DxgkDdiPresent del controlador con una nueva lista RECT , MultipassOffset se inicializa en cero. Antes de que el controlador vuelva desde la llamada dxgkDdiPresent , el controlador establece MultipassOffset para mostrar el progreso de la copia para las llamadas de DxgkDdiPresent posteriores con el mismo búfer de comandos. El subsistema del kernel de gráficos de Microsoft DirectX no cambia aún más el valor.
[in] Color
El color A8R8G8B8 en una operación de relleno de color, que se especifica mediante la marca de campo de bits ColorFill establecida en el miembro Flags o una operación de clave de color, que se especifica mediante la marca de campo de bits SrcColorKey o DstColorKey . Tenga en cuenta que solo se establece una de las marcas de campo de bits ColorFill, SrcColorKey y DstColorKey en cualquier momento.
Si el formato principal es RGB pálido, Color contiene el índice de paleta en lugar del valor D3DDDIFMT_A8R8G8B8 del tipo de enumeración D3DDDIFORMAT .
[in] DstRect
Estructura RECT para el rectángulo de destino que se usa para calcular el factor de extensión.
[in] SrcRect
Estructura RECT para el rectángulo de origen que se usa para calcular el factor de extensión.
[in] SubRectCnt
Número de subctángulos de destino en la matriz que pDstSubRects especifica.
[in] pDstSubRects
Matriz de estructuras RECT para la lista de subrecursos de destino en los que se copia la función DxgkDdiPresent .
[in] FlipInterval
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).
[in] Flags
Estructura DXGK_PRESENTFLAGS que identifica, en marcas de campo de bits, el tipo de operación presente que se va a realizar. Tenga en cuenta que las marcas de campo de bits ColorFill, SrcColorKey y DstColorKey en Flags son mutuamente excluyentes.
[in] DmaBufferSegmentId
Identificador del segmento de memoria en el que se pagina el búfer DMA. Si el identificador es cero, el búfer DMA no se pagina correctamente.
[in] DmaBufferPhysicalAddress
Un PHYSICAL_ADDRESS tipo de datos (que se define como LARGE_INTEGER) que indica la dirección física en la que se pagina el búfer DMA. Si la dirección física es cero, el búfer DMA no se pagina correctamente.
[in] Reserved
Reservado para uso del sistema. El controlador debe omitir este miembro.
DmaBufferGpuVirtualAddress
Un D3DGPU_VIRTUAL_ADDRESS tipo de datos que indica la dirección virtual en la que se pagina el búfer DMA. Si la dirección física es cero, el búfer DMA no se pagina correctamente.
NumSrcAllocations
Número de asignaciones de contexto en el origen.
NumDstAllocations
Número de asignaciones de contexto en el destino.
PrivateDriverDataSize
Tamaño de pPrivateDriverData.
pPrivateDriverData
Puntero a un búfer que contiene datos opcionales del controlador privado.
Comentarios
La proporción de las áreas rectangulares de origen y destino que los miembros SrcRect y DstRect especifican se usan para calcular un factor extendido. El controlador puede tener en cuenta el cálculo del factor extendido cuando realiza la operación de copia.
El controlador no es necesario para realizar ningún recorte. El subsistema del kernel de gráficos de Microsoft DirectX preclips la lista de subctángulos de destino que el miembro pDstSubRects especifica para las coordenadas del rectángulo de destino que el miembro DstRect especifica y para la pantalla (principal). Tenga en cuenta que si se proporciona una lista de subctángulos de destino en pDstSubRects, el controlador solo debe usar SrcRect y DstRect para calcular el factor de extensión y debe usar las coordenadas de los subctángulos de destino para la operación de copia real.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Encabezado | d3dkmddi.h (incluye D3dkmddi.h) |