PFND3D10DDI_RESOURCECOPY fonction de rappel (d3d10umddi.h)

La fonction ResourceCopy copie une ressource source entière vers une ressource de destination.

Syntaxe

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

Paramètres

unnamedParam1

hDevice [in]

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

hDstResource [in]

Handle de la ressource de destination vers laquelle effectuer la copie.

unnamedParam3

hSrcResource [in]

Handle de la ressource source à partir de laquelle effectuer la copie.

Valeur de retour

None

Remarques

Le pilote peut utiliser la fonction de rappel pfnSetErrorCb pour définir un code d’erreur.

Le runtime Microsoft Direct3D appelle la fonction ResourceCopy du pilote d’affichage en mode utilisateur pour informer le pilote de copier à partir de la ressource source spécifiée vers la ressource de destination spécifiée. Les ressources source et de destination ne peuvent pas être la même ressource. Les ressources source et de destination doivent avoir le même type de ressource et avoir les mêmes dimensions. Les types de format (valeurs de type DXGI_FORMAT) des deux ressources doivent être castables l’un à l’autre. La source et la ressource de destination ne doivent pas être mappées actuellement. En outre, les indicateurs de création de ressource limitent si la ressource peut participer à l’opération de copie.

Le pilote ne doit rencontrer aucune erreur, à l’exception de D3DDDIERR_DEVICEREMOVED. Par conséquent, si le pilote réussit une erreur, à l’exception de D3DDDIERR_DEVICEREMOVED, dans un appel à la fonction pfnSetErrorCb , le runtime Direct3D détermine que l’erreur est critique. Même si l’appareil a été supprimé, le pilote n’est pas tenu de retourner D3DDDIERR_DEVICEREMOVED ; toutefois, si la suppression de l’appareil a interférer avec le fonctionnement de ResourceCopy (ce qui ne doit généralement pas se produire), le pilote peut retourner D3DDDIERR_DEVICEREMOVED.

Note Les sections suivantes s’appliquent uniquement à Microsoft Direct3D version 10.1 et ultérieure (c’est-à-dire Windows Vista avec Service Pack 1 (SP1) et versions ultérieures, et Windows Server 2008 et versions ultérieures.
 
Le pilote peut implémenter une fonction ResourceCopy qui peut contenir une instruction switch pour traiter la copie et la conversion. Autrement dit, le pilote peut implémenter un ResourceCopy et peut définir le membre pfnResourceConvert de la structure D3D10_1DDI_DEVICEFUNCS pour qu’il pointe vers ResourceCopy avec le membre pfnResourceCopy de D3D10_1DDI_DEVICEFUNCS. Toutefois, pour améliorer les performances, le pilote peut implémenter des fonctions ResourceCopy et ResourceConvert distinctes.

La version Direct3D 10.1 de ResourceCopy présente une différence de fonctionnalité majeure par rapport à la version Direct3D 10.0 en ce qui concerne le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination qui ont été créées dans les appels à la fonction CreateResource(D3D10) du pilote. Pour la version Direct3D 10.0 de ResourceCopy, le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination doit correspondre. La version Direct3D 10.1 de ResourceCopy permet une légère relaxation pour le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination. La version Direct3D 10.1 de ResourceCopy permet de copier des ressources sources Tex2D sur des ressources de destination TexCube ou des ressources sources TexCube sur des ressources de destination Tex2D. En outre, la distinction entre TexCube au niveau des ressources a disparu dans Direct3D version 10.1. La version Direct3D 10.1 de ResourceCopy indique uniquement s’il peut copier un TexCube. Dans Direct3D version 10.0, la copie d’une ressource, la validation d’une cible de rendu multiple, etc. (c’est-à-dire diverses opérations qui exigeaient que le type de ressource soit identique) incluaient toutes la distinction de TexCube à prendre en compte dans le type de ressource. Dans Direct3D version 10.1, le runtime peut déterminer uniquement Tex2D.

Les sections suivantes répertorient les conditions de copie et de conversion :

Copie

Pour la copie, ResourceCopy garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D10) du pilote avec les conditions suivantes :

  • La ressource de destination n’a pas été créée avec la valeur D3D10_DDI_USAGE_IMMUTABLE définie dans le membre Usage de la structure D3D10DDIARG_CREATERESOURCE .
  • Les ressources source et de destination ont été créées avec le même type de ressource et la même dimensionnalité (mémoire tampon, texture unidimensionnelle (1D), et ainsi de suite) en définissant la même valeur dans le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE.
  • Les ressources source et de destination ne font pas partie exactement de la même ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D10DDIARG_CREATERESOURCE se trouve dans le même groupe sans type.
  • Les ressources source et de destination doivent avoir le même nombre d’échantillons et les mêmes niveaux de qualité ; sauf pour les ressources à échantillon unique, qui ne doivent avoir que le même nombre d’exemples.
ResourceCopy ne garantit pas qu’aucune sous-ressource n’est actuellement mappée.

Conversion

Pour la conversion, ResourceCopy garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D10) du pilote avec les conditions suivantes :

  • La ressource de destination n’a pas été créée avec la valeur D3D10_DDI_USAGE_IMMUTABLE définie dans le membre Usage de la structure D3D10DDIARG_CREATERESOURCE .
  • Les ressources source et de destination ont été créées avec le même type de ressource (mémoire tampon, texture unidimensionnelle (1D), et ainsi de suite) en définissant la même valeur dans le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE.
  • Les dimensions des ressources source et de destination correspondent pour la conversion.
  • Les ressources source et de destination ne font pas partie exactement de la même ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D10DDIARG_CREATERESOURCE prend en charge l’opération de conversion appropriée. Pour les ressources compressées mipped-block, les dimensions sont toutes validées comme étant une puissance de deux.
  • Les ressources source et de destination doivent avoir le même nombre d’échantillons et les mêmes niveaux de qualité ; sauf pour les ressources à échantillon unique, qui ne doivent avoir que le même nombre d’exemples.
ResourceCopy ne garantit pas qu’aucune sous-ressource n’est actuellement mappée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3d10umddi.h (include D3d10umddi.h)

Voir aussi

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb