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.
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.
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) |