Compartir a través de


estructura DXGI1_2_DDI_BASE_FUNCTIONS (dxgiddi.h)

Contiene punteros a funciones que un controlador de pantalla de Windows Display Driver Model (WDDM) 1.2 y versiones posteriores pueden implementar para realizar tareas de bajo nivel, como presentar fotogramas representados a una salida, controlar gamma, recibir notificaciones sobre superficies interoperables compartidas y de interfaz de dispositivo gráfico de Windows (GDI) y administrar una transición de pantalla completa.

Sintaxis

typedef struct DXGI1_2_DDI_BASE_FUNCTIONS {
  HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
  HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
  HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
  HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
  HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
  HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
  HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
  HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
  HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
  HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
  HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
  HRESULT()(void *) * pfnGetMultiplaneOverlayFilterRange;
  HRESULT()(DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT *) * pfnCheckMultiplaneOverlaySupport;
  HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
} DXGI1_2_DDI_BASE_FUNCTIONS;

Miembros

pfnPresent

Puntero a la función PresentDXGI del controlador.

pfnGetGammaCaps

Puntero a la función GetGammaCapsDXGI del controlador.

pfnSetDisplayMode

Puntero a la función SetDisplayModeDXGI del controlador.

pfnSetResourcePriority

Puntero a la función SetResourcePriorityDXGI del controlador.

pfnQueryResourceResidency

Puntero a la función QueryResourceResidencyDXGI del controlador.

pfnRotateResourceIdentities

Puntero a la función RotateResourceIdentitiesDXGI del controlador.

pfnBlt

Puntero a la función BltDXGI del controlador.

El tiempo de ejecución de Direct3D podría establecer el miembro Flags de la estructura de DXGI_DDI_ARG_BLT a la que apunta el parámetro pBltData de tal manera que requiera que la función Blt1DXGI realice una operación de transferencia de bloques de bits (bitblt) que resuelva recursos de muestreo múltiple, realice la conversión de formato de color y realice una conversión de ajuste o reducción a la vez. Sin embargo, el tiempo de ejecución de Direct3D nunca establecerá el miembro Flags de DXGI_DDI_ARG_BLT1 en cero (es decir, sin marcas establecidas) junto con el valor DXGI_DDI_MODE_ROTATION_IDENTITY establecido en el miembro Rotate de DXGI_DDI_ARG_BLT1 (es decir, para indicar que no hay rotación) para realizar una operación de copia de memoria recta. En su lugar, a menos que ambos recursos sean de muestreo múltiple, el entorno de ejecución de Direct3D llama a la función ResourceCopy o ResourceCopyRegion(D3D11_1) del controlador para realizar una operación de copia de memoria recta.

La calidad del ajuste o reducción que realiza el controlador de pantalla en modo de usuario debe ser tan buena como el ajuste o la reducción que realiza un filtro bilineal.

El tiempo de ejecución de Direct3D llamará a la función Blt1DXGI del controlador con poca frecuencia. Es decir, el tiempo de ejecución debe llamar a Blt1DXGI no más de una vez o dos veces por fotograma porque el tiempo de ejecución usa Blt1DXGI principalmente para admitir una presentación.

Cuando el tiempo de ejecución llama a Blt1DXGI para una presentación, el tiempo de ejecución establece la marca de campo de bits Present en el miembro Flags de DXGI_DDI_ARG_BLT1. El tiempo de ejecución establece la marca de campo de bits Present para informar al controlador de que hay requisitos adicionales para el bitblt y que puede ser necesaria la sincronización adicional (por ejemplo, el tiempo de ejecución podría necesitar realizar una sincronización adicional en configuraciones de equipo que contienen dos adaptadores de gráficos que cada uno controla partes independientes de la pantalla). Cuando se establece la marca de campo de bits Present , el controlador debe realizar una operación de copia desde los búferes de reserva de una aplicación a la superficie compartida de DWM. Dado que la sincronización para este tipo de operación de copia es inexacta, los artefactos de desmontaje deben ser el peor tipo de artefactos que experimenta un usuario. Para este tipo de operación de copia, el controlador no debe usar un enfoque de varios pasos resolviendo primero en la superficie de destino y, a continuación, convertir el color de los resultados en contexto porque los posibles artefactos serían mucho peores.

Si el controlador admite la devolución de DXGI_DDI_ERR_UNSUPPORTED durante la creación de una superficie principal (es decir, devolver DXGI_DDI_ERR_UNSUPPORTED desde una llamada a su función CreateResource(D3D10) con la marca D3D10_DDI_BIND_PRESENT establecida en el miembro BindFlags de D3D10DDIARG_CREATERESOURCE junto con el miembro pPrimaryDesc de D3D10DDIARG_CREATERESOURCE establecido en distinto de NULL), el controlador también debe admitir la rotación durante una operación de copia. Si el controlador nunca devuelve DXGI_DDI_ERR_UNSUPPORTED de una llamada a su función CreateResource(D3D10) o CreateResource(D3D11), el entorno de ejecución nunca pasará el valor de DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180 o DXGI_DDI_MODE_ROTATION_ROTATE270 al miembro Rotate de DXGI_DDI_ARG_BLT1. Por lo tanto, en esta situación, la función Blt1DXGI del controlador no es necesaria para admitir la rotación.

El tiempo de ejecución establece un valor en el miembro Rotate de DXGI_DDI_ARG_BLT1 para indicar el número de grados para girar en sentido contrario el contenido del origen antes de que el controlador copie el contenido en el destino. La rotación se especifica en incrementos de 90 grados.

Nota

Cuando la función Blt1DXGI del controlador copia el contenido con formato sRGB de una superficie de origen a una superficie de destino que no sea sRGB, el controlador debe copiar el contenido de sRGB sin cambios (es decir, el controlador no debe realizar la conversión sRGB a lineal).

Restricciones de origen

La función Blt1DXGI siempre usa un subrecurso de origen completo (frente a algún área sub rectangular) para realizar la operación bitblt. Además, el origen es una representación D3D10DDIRESOURCE_TEXTURE2D (especificada en el miembro ResourceDimension de D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE cuando el origen se crea en una llamada a la función CreateResource(D3D10) del controlador de visualización en modo de usuario o CreateResource(D3D11), respectivamente). Cuando el tiempo de ejecución establece el campo de bits Resolver en el miembro Flags de DXGI_DDI_ARG_BLT1, el origen es un recurso de ejemplo múltiple. El recurso de origen está restringido a un recurso en el que se estableció la marca de D3D10_DDI_BIND_PRESENT en el miembro BindFlags de D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE. El formato del origen (especificado en el miembro Format de D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE) está restringido a formatos de modo de presentación, especificados por los valores siguientes de la enumeración DXGI_FORMAT :

  • DXGI_FORMAT_B5G6R5_UNORM
  • DXGI_FORMAT_B5G5R5A1_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM (consulte la nota a continuación).
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

Nota

Si el controlador admite el formato de origen DXGI_FORMAT_B8G8R8A8_UNORM, se aplican las restricciones siguientes:

  • Cuando el controlador realiza una operación bitblt desde un formato de punto flotante a un formato entero como BGRA8888, debe codificar implícitamente gamma en los resultados.
  • Por el contrario, cuando el controlador realiza una operación bitblt de un formato entero a un formato de punto flotante, debe quitar implícitamente la codificación gamma de los resultados.

Restricciones de destino

El destino también es una representación D3D10DDIRESOURCE_TEXTURE2D . El formato del destino también está restringido a los formatos de modo de presentación. El recurso de destino está restringido a un recurso enlazado como destino de representación (D3D10_DDI_BIND_RENDER_TARGET establecido en el miembro BindFlags de D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE).

Creación de un búfer de retroceso estéreo

A partir de Windows 8, si el controlador debe crear un búfer de retroceso estéreo, debe establecer miembros de la estructura D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE, respectivamente, apuntado por el parámetro pCreateResource de las funciones CreateResource(D3D10) o CreateResource(D3D11), como se indica a continuación:

  1. Establezca el miembro ArraySize en un valor de 2.
  2. Establezca el valor de marca D3D10_DDI_BIND_PRESENT en el miembro BindFlags .

Además, para admitir la presentación estéreo, la función BltDXGI debe permitir cualquier valor para los miembros DstSubresource y SrcSubresource de la estructura DXGI_DDI_ARG_BLT que se encuentran dentro del intervalo de los recursos de origen y destino.

pfnResolveSharedResource

Puntero a la función ResolveSharedResourceDXGI del controlador.

pfnBlt1

Puntero a la función Blt1DXGI del controlador.

pfnOfferResources

Puntero a la función pfnOfferResources del controlador.

pfnReclaimResources

Llamado por el tiempo de ejecución de DXGI para reclamar recursos de memoria de vídeo que el controlador de pantalla en modo de usuario ofreció previamente para reutilizarse. Implementado por WDDM 1.2 y controladores de pantalla en modo usuario posteriores.

pfnGetMultiplaneOverlayCaps

Llamado por el entorno de ejecución de La infraestructura de gráficos de Microsoft DirectX (DXGI) para solicitar que el controlador de pantalla en modo de usuario obtenga funcionalidades básicas del plano de superposición. Opcionalmente, implementado por windows Display Driver Model (WDDM) 1.3 y posteriores controladores de pantalla en modo usuario. La sintaxis de pfnGetMultiplaneOverlayCaps sigue:

pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;

HRESULT __stdcall* GetMultiPlaneOverlayCaps(
    DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *pCaps
)
{ ... }

El parámetro pCaps es un puntero a una estructura DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS que especifica las funcionalidades del plano de superposición.

pfnGetMultiplaneOverlayCaps devuelve uno de los siguientes valores:

  • S_OK: el controlador proporcionó correctamente las funcionalidades del plano de superposición.
  • D3DDDIERR_DEVICEREMOVED: el controlador detectó que se quitó el adaptador de pantalla, por lo que el controlador no completó la operación. Si el controlador no es consciente de la eliminación del adaptador, no es necesario que el controlador devuelva este código de error.

pfnGetMultiplaneOverlayFilterRange

Este miembro está reservado y debe establecerse en cero. Se admite a partir de Windows 8.1.

pfnCheckMultiplaneOverlaySupport

Llamado por el entorno de ejecución de la infraestructura de gráficos de Microsoft DirectX (DXGI) para comprobar los detalles sobre la compatibilidad de hardware con superposiciones multiplano. La sintaxis de pfnCheckMultiplaneOverlaySupport es:

PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;

HRESULT __stdcall* pfnCheckMultiplaneOverlaySupport(
   D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT *pSupport
)
{ ... }

El parámetro pSupport es un puntero a una estructura de DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT que describe cómo mostrar en la superficie de destino.

Si pfnCheckMultiplaneOverlaySupport se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

pfnPresentMultiplaneOverlay

Puntero a la función pfnPresentMultiplaneOverlay (DXGI) del controlador. Se admite a partir de Windows 8.1.

pSupport

Puntero a una estructura de DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT que describe cómo mostrar en la superficie de destino.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8, WDDM 1.2
Servidor mínimo compatible Windows Server 2012
Encabezado dxgiddi.h (incluya D3d10umddi.h)

Consulte también

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_3_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS