Share via


Basculer entre les modes Standard et Non standard

Un pilote DirectX 9.0 crée la surface principale standard pour un mode d’affichage standard et une surface principale factice pour le mode non standard afin que le runtime puisse basculer entre les modes si nécessaire. Les deux surfaces représentent la même mémoire vidéo, sauf affichées dans différents formats. Le pilote bascule entre les modes standard et non standard lorsqu’un retournement de page est demandé, comme illustré dans l’ordre suivant :

  1. L’application demande un commutateur de mode.

    Une application appelle la fonction ChangeDisplaySettings pour modifier le mode vidéo à une profondeur de bits correspondante. Pour le mode 10:10:10:2, la profondeur de bits est de 32 bits par pixel. Pour plus d’informations sur ChangeDisplaySettings, consultez la documentation relative à la Microsoft Windows SDK.

  2. Le pilote crée la surface primaire standard.

    Le runtime appelle la fonction DdCreateSurface du pilote pour demander la création de la surface primaire. Cette surface primaire utilise le format d’affichage standard (par exemple, D3DFMT_A8B8G8R8) et n’a pas de mémoire tampon arrière.

  3. Le pilote crée la chaîne de surface primaire factice.

    Le runtime appelle la fonction DdCreateSurface du pilote pour demander la création de la surface principale factice. Le runtime spécifie le bit de capacité DDSCAPS2_EXTENDEDFORMATPRIMARY (0x40000000) dans le membre dwCaps2 de la structure DDSCAPS2 pour cette surface afin d’indiquer que la surface utilise un mode d’affichage non standard (par exemple, D3DFMT_A2R10G10B10). Le runtime spécifie également le bit de fonctionnalité DDSCAPS_OFFSCREENPLAIN dans le membre dwCaps de DDSCAPS2 pour indiquer que la surface a un format de pixel explicite.

    Étant donné que cette surface est destinée à n’être qu’un autre nom pour la surface principale existante, le pilote ne doit pas allouer de mémoire vidéo supplémentaire à la surface.

    Pour cette surface, le runtime spécifie également les bits de capacité DDSCAPS_FLIP et DDSCAPS_COMPLEX dans dwCaps et un ensemble de mémoires tampons arrière attachées de la même façon que le runtime configure une chaîne de basculement de surface primaire standard. Le pilote doit allouer de la mémoire vidéo pour ces mémoires tampons arrière, car aucun autre appel à la fonction DdCreateSurface du pilote n’est effectué pour ces mémoires tampons d’arrière-mémoire ; autrement dit, le runtime crée plusieurs objets surface uniquement pour le principal standard.

  4. Le pilote retourne la surface au format non standard.

    Tandis que le périphérique d’affichage affiche le format standard, l’application compose une image non standard dans l’une de ces mémoires tampons arrière. Une fois cette image prête pour l’affichage, le runtime spécifie l’une des surfaces non standard comme cible dans un appel à la fonction DdFlip du pilote. Le pilote reprogramme ensuite le périphérique d’affichage pour générer le format non standard.

  5. L'application s'exécute.

    L’application génère d’autres appels à la fonction DdFlip du pilote entre les mémoires tampons non standard, et le pilote continue d’afficher le format non standard. L’application peut également générer des appels à la fonction D3dDrawPrimitives2 du pilote à l’aide du code d’opération D3DDP2OP_BLT pour copier la mémoire tampon arrière dans la mémoire tampon avant, mais ces appels sont toujours effectués entre deux objets surface non standard. À moins que le pilote ne prenne en charge le format non standard en mode fenêtré, le pilote ne traite pas les blts entre les formats de surface non standard et standard. Pour plus d’informations sur le cas du mode fenêtré, consultez Prise en charge des opérations de Two-Dimensional.

  6. Le pilote retourne la surface au format standard.

    Lorsque l’application est fermée ou réduite, le runtime spécifie la surface primaire de format standard comme destination dans un appel à la fonction DdFlip du pilote. Le pilote reprogramme ensuite le périphérique d’affichage pour générer le format standard.

  7. Le pilote détruit la surface factice.

    Lorsque le pilote détruit la surface factice, il doit s’assurer que le format standard est reprogrammé dans le périphérique d’affichage.