PFND3DDDI_CREATERESOURCE fonction de rappel (d3dumddi.h)
La fonction CreateResource crée une ressource.
Syntaxe
PFND3DDDI_CREATERESOURCE Pfnd3dddiCreateresource;
HRESULT Pfnd3dddiCreateresource(
HANDLE hDevice,
D3DDDIARG_CREATERESOURCE *unnamedParam2
)
{...}
Paramètres
hDevice
Handle du périphérique d’affichage (contexte graphique) utilisé pour créer la ressource.
unnamedParam2
pResource [in, out]
Pointeur vers une structure de D3DDDIARG_CREATERESOURCE qui décrit la ressource créée.
Valeur retournée
CreateResource retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
S_OK | La ressource est créée avec succès. |
E_OUTOFMEMORY | CreateResource n’a pas pu allouer la mémoire nécessaire pour qu’il se termine. |
D3DERR_NOTAVAILABLE | CreateResource n’a pas pu créer la ressource pour des raisons autres que l’impossibilité d’allouer de la mémoire. CreateResource peut renvoyer cette erreur uniquement lors de la création de tampons de vertex ou d’index. |
Remarques
L’appel à CreateResource peut contenir une liste de surfaces. Le membre SurfCount de la structure D3DDDIARG_CREATERESOURCE spécifiée par le paramètre pResource spécifie le nombre de surfaces à créer, y compris les niveaux de carte MIP. Par exemple, une ressource MIP-map de texture 256x256x9 contient une liste de neuf surfaces où le membre SurfCount et le nombre de niveaux de carte MIP sont tous deux définis sur 9. Une carte de cube qui contient neuf niveaux de carte MIP doit avoir le nombre de niveaux de carte MIP défini sur 9 et SurfCount sur 54. Une chaîne de permutation à trois surfaces doit avoir SurfCount défini sur 3 et le nombre de niveaux de carte MIP défini sur 0. Notez que le nombre de niveaux de carte MIP est toujours inférieur ou égal à la valeur dans SurfCount.
En réponse à l’appel CreateResource , le pilote d’affichage en mode utilisateur peut appeler la fonction pfnAllocateCb pour créer une ou plusieurs allocations de mémoire. Le pilote d’affichage en mode utilisateur doit déterminer s’il doit créer plusieurs allocations par surface, une allocation pour toutes les surfaces ou une allocation par surface. Pour plus d’informations sur les allocations, consultez Gestion de la mémoire vidéo et planification GPU.
Les ressources peuvent être partagées par plusieurs appareils (hDevice) et processus. Le runtime spécifie qu’une ressource est partagée en définissant l’indicateur de champ bit SharedResource dans le membre Indicateurs de D3DDDIARG_CREATERESOURCE. Si cet indicateur de champ de bits est défini, le pilote d’affichage en mode utilisateur doit respecter les restrictions suivantes sur les ressources partagées :
- Le pilote d’affichage en mode utilisateur peut appeler les fonctions pfnAllocateCb et pfnDeallocateCb exactement une fois chacune.
- Le pilote d’affichage en mode utilisateur ne peut pas créer d’allocations supplémentaires pour la ressource après la création initiale de la ressource et ne peut également détruire les allocations de ressources qu’au moment où la ressource elle-même est détruite.
- Lorsque la fonction DestroyResource du pilote d’affichage en mode utilisateur est appelée pour une ressource partagée qui a été créée ou ouverte via un appel à la fonction CreateResource ou OpenResource du pilote, le pilote doit définir le membre hResource de la structure D3DDDICB_DEALLOCATE sur non NULL et le membre NumAllocations de D3DDDICB_DEALLOCATE sur zéro dans un appel à la fonction pfnDeallocateCb pour détruire ou fermer la ressource. Autrement dit, les allocations associées à une ressource partagée ne peuvent pas être détruites ou fermées individuellement ; la ressource doit être détruite ou fermée atomiquement en un seul appel à pfnDeallocateCb.
- Le nombre d’allocations doit être cohérent pour le type de ressource (autrement dit, un autre processus qui crée le même type de ressource doit générer le même nombre et le même type d’allocations). En outre, le changement de nom n’est pas autorisé pour ces ressources.
- Les bits non définis du membre Flags sont réservés .
- Si l’indicateur de champ de bits principal n’est pas défini dans Indicateurs, les membres RefreshRate et Output sont réservés.
- Si l’indicateur de champ de bits RenderTarget, DecodeRenderTarget ou VideoProcessRenderTarget n’est pas défini dans Indicateurs, les membres MultisampleType et MultisampleQuality sont réservés .
- Si l’indicateur de champ de bits VertexBuffer n’est pas défini dans Indicateurs, le membre Fvf est réservé.
- Si les indicateurs de champ de bits Texture, CubeMap et Volume ne sont pas définis dans Indicateurs, le membre MipLevels est réservé.
La nouvelle DDI CreateResource diffère de la DDI DdCreateSurface pour le modèle de pilote d’affichage Microsoft Windows 2000 des manières suivantes :
- Dans la nouvelle DDI CreateResource , les surfaces ne sont jamais attachées explicitement. Toutes les pièces jointes sont impliquées par la création atomique.
- Dans la nouvelle DDI CreateResource , la création partielle de mappages de cube n’est pas autorisée.
Si le runtime demande de créer une mémoire tampon de vertex ou d’index et si le pilote d’affichage en mode utilisateur ne peut pas créer la mémoire tampon pour des raisons autres que de mémoire insuffisante (par exemple, un manque de prise en charge matérielle), le pilote doit échouer avec D3DERR_NOTAVAILABLE.
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 | d3dumddi.h (inclure D3dumddi.h) |