PFND3D11_1DDI_RESOURCECOPYREGION fonction de rappel (d3d10umddi.h)

Copie une région de sous-ressource source vers un emplacement sur une sous-ressource de destination.

Syntaxe

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

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

DstSubresource [in]

Index qui indique la sous-ressource de destination vers laquelle effectuer la copie.

unnamedParam4

DstX [in]

Coordonnée x de la sous-ressource de destination.

unnamedParam5

DstY [in]

Coordonnée y de la sous-ressource de destination. Pour les sous-ressources unidimensionnelles (1D), DstY est défini sur zéro.

unnamedParam6

DstZ [in]

Coordonnée z de la sous-ressource de destination. Pour les sous-ressources unidimensionnelles (1D) et bidimensionnelles (2D), DstZ est défini sur zéro.

unnamedParam7

hSrcResource [in]

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

unnamedParam8

SrcSubresource [in]

Index qui indique la sous-ressource source à partir de laquelle copier.

unnamedParam9

pSrcBox [in, facultatif]

Pointeur vers une structure de D3D10_DDI_BOX qui spécifie une zone qui correspond à la sous-ressource source ou de destination. Si pSrcBox a la valeur NULL, le pilote doit copier l’intégralité de la sous-ressource source dans la destination.

Si les membres de la structure D3D10_DDI_BOX sont tels que left>=right, top>=bottom ou front>=back, pSrcBox est considéré comme vide et ResourceCopyRegion(D3D11_1) ne doit effectuer aucune opération de copie.

[in] CopyFlags

Valeur qui spécifie les caractéristiques de l’opération de copie sous la forme d’un bit OU des valeurs du type d’énumération D3D11_1_DDI_COPY_FLAGS .

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 ResourceCopyRegion(D3D11_1) du pilote d’affichage en mode utilisateur pour informer le pilote de copier à partir de la sous-ressource source spécifiée vers un emplacement sur la sous-ressource de destination spécifiée. Les sous-ressources source et de destination peuvent être la même sous-ressource de la même ressource. Les ressources source et de destination doivent être du même type de ressource et avoir des types de format (DXGI_FORMAT valeurs de type) qui sont convertibles les uns aux autres.

Pour les mémoires tampons, toutes les coordonnées doivent être en octets ; tandis que pour les textures, toutes les coordonnées doivent être en pixels. La zone vers laquelle pointe le paramètre pSrcBox ne doit pas s’étendre sur les bords de la sous-ressource source ou de la sous-ressource de destination. 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 (ce qui ne doit généralement pas se produire), le pilote peut retourner D3DDDIERR_DEVICEREMOVED.

Le pilote peut implémenter une fonction ResourceCopyRegion(D3D11_1) qui peut contenir une instruction switch pour traiter la copie et la conversion. Autrement dit, le pilote peut implémenter un ResourceCopyRegion(D3D11_1) et définir le membre pfnResourceConvertRegion de la structure D3D11_1DDI_DEVICEFUNCS pour qu’il pointe vers ResourceCopyRegion(D3D11_1) avec le membre pfnResourceCopyRegion de D3D11_1DDI_DEVICEFUNCS. Toutefois, pour améliorer les performances, le pilote peut implémenter des fonctions ResourceCopyRegion(D3D11_1) et ResourceConvertRegion(D3D11_1) distinctes .

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

Copie

Pour la copie, ResourceCopyRegion(D3D11_1) garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D11) 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 D3D11DDIARG_CREATERESOURCE .
  • Si la ressource source ou de destination a le D3D10_DDI_BIND_DEPTH_STENCIL bit défini dans le membre BindFlags de l’D3D10DDIARG_CREATERESOURCE ou s’il s’agit d’une ressource multi-échantillonnées, ResourceCopyRegion(D3D11_1) vérifie que le paramètre pSrcBox est NULL, tandis que les paramètres DstX, DstY et DstZ sont 0.
  • Les index de sous-ressource sont dans la plage.
  • Les restrictions d’alignement s’appliquent aux coordonnées.
  • Les ressources source et de destination ne font pas partie de la même sous-ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D11DDIARG_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.
ResourceCopyRegion(D3D11_1) ne garantit pas que la zone source qui est décalée par les décalages de destination s’adapte entièrement à la ressource. ResourceCopyRegion(D3D11_1) ne garantit pas non plus qu’aucune sous-ressource n’est actuellement mappée.

Conversion

Pour la conversion, ResourceCopyRegion(D3D11_1) garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D11) 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 D3D11DDIARG_CREATERESOURCE .
  • Si la ressource source ou de destination a le bit D3D10_DDI_BIND_DEPTH_STENCIL défini dans le membre BindFlags de D3D11DDIARG_CREATERESOURCE ou s’il s’agit d’une ressource à échantillon multiple, ResourceCopyRegion(D3D11_1) vérifie que le paramètre pSrcBox est NULL, tandis que les paramètres DstX, DstY et DstZ sont 0.
  • Les index de sous-ressource sont dans la plage.
  • Les restrictions d’alignement s’appliquent aux coordonnées.
  • Les ressources source et de destination ne font pas partie de la même sous-ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D11DDIARG_CREATERESOURCE se trouve dans le même groupe sans type.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D11DDIARG_CREATERESOURCE prend en charge l’opération de conversion appropriée.
  • 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.
ResourceCopyRegion(D3D11_1) ne garantit pas qu’aucune sous-ressource n’est actuellement mappée. ResourceCopyRegion(D3D11_1) ne garantit pas non plus que la zone source qui est décalée par les décalages de destination s’adapte entièrement à la ressource.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3d10umddi.h (include D3d10umddi.h)

Voir aussi

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb