Superposition de DDI

Cette section s’applique uniquement à Windows 7 et versions ultérieures, ainsi qu’à Windows Server 2008 R2 et versions ultérieures du système d’exploitation Windows.

La DDI de superposition est une extension de la DDI Direct3D version 9 pour vérifier la prise en charge de la superposition. La DDI de superposition se compose des points d’entrée suivants :

  • La valeur D3DDDICAPS_CHECKOVERLAYSUPPORT de l’énumération D3DDDICAPS_TYPE est utilisée par le runtime Direct3D pour vérifier si le périphérique d’affichage prend en charge une superposition particulière. Le runtime définit D3DDDICAPS_CHECKOVERLAYSUPPORT dans le membre Type de la structure D3DDDIARG_GETCAPS vers laquelle pointe le paramètre pData de la fonction GetCaps du pilote lorsque le runtime appelle GetCaps. Le runtime définit également le membre pInfo de D3DDDIARG_GETCAPS sur un pointeur vers une structure DDICHECKOVERLAYSUPPORTINPUT qui décrit la superposition. Si le pilote prend en charge la superposition, il définit les membres d’une structure D3DOVERLAYCAPS et retourne un pointeur vers cette structure dans le membre pData de D3DDDIARG_GETCAPS. Sinon, si le pilote ne prend pas en charge la superposition, le pilote échoue à l’appel à sa fonction GetCaps avec D3DDDIERR_UNSUPPORTEDOVERLAYFORMAT ou D3DDDIERR_UNSUPPORTEDOVERLAY selon que l’absence de prise en charge était basée sur le format de superposition. D3DOVERLAYCAPS est décrit dans la documentation du Kit de développement logiciel (SDK) DirectX.

    Le pilote définit les membres MaxOverlayDisplayWidth et MaxOverlayDisplayHeight de D3DOVERLAYCAPS pour indiquer les restrictions que le pilote et le matériel peuvent avoir, qui impliquent la taille de superposition finale (après étirement des données de superposition).

    Le pilote définit les bits de capacité D3DOVERLAYCAPS_STRETCHX (0x00000040) et D3DOVERLAYCAPS_STRETCHY (0x00000080) dans le membre Caps de D3DOVERLAYCAPS pour indiquer que le matériel de superposition est capable d’étirer et de réduire arbitrairement les données de superposition. Les pilotes ne doivent pas essayer d’émuler l’étirement de superposition via le GPU et doivent uniquement définir ces majuscules si le matériel de superposition prend en charge l’étirement. Moins de surcharge est généralement nécessaire pour que l’application effectue l’étirement gpu dans le cadre de la phase de traitement et de composition vidéo que pour que le pilote effectue une passe distincte à la toute fin pour émuler l’étirement de superposition.

  • Le pilote doit gérer les nouveaux indicateurs de champ binaire suivants à partir de la structure D3DDDI_OVERLAYINFOFLAGS . Une structure D3DDDI_OVERLAYINFOFLAGS identifie le type d’opération de superposition à effectuer. Une structure D3DDDI_OVERLAYINFOFLAGS est spécifiée dans le membre Flags de la structure D3DDDI_OVERLAYINFO dans un appel à la fonction CreateOverlay ou UpdateOverlay du pilote.

    LimitedRGB
    La superposition est une plage RVB limitée plutôt qu’une plage RVB complète. Dans la plage RVB limitée, la plage RVB est compressée de sorte que 16:16:16 est noir et 235:235:235 est blanc.

    YCbCrBT709
    La superposition est BT.709, ce qui indique la télévision haute définition (HDTV), plutôt que BT.601.

    YCbCrxvYCC
    La superposition est étendue YCbCr (xvYCC) plutôt que YCbCr conventionnelle.

  • Lorsque le format d’affichage est de 64 bits au lieu de 32 bits (par exemple, lorsque le Gestionnaire Windows Desktop (DWM) utilise D3DFMT_A16B16G16R16F pour le mode d’affichage), le runtime place les 32 bits inférieurs de la touche de couleur de superposition dans le membre DstColorKeyLow de la structure D3DDDI_OVERLAYINFO et les 32 bits supérieurs dans le membre DstColorKeyHigh de D3DDDI_OVERLAYINFO.