Skip to main content

XALLOC_ATTRIBUTES

Contient des valeurs qui décrivent les attributs d’une allocation de mémoire.

Syntaxe

Membres

Attributes
Type : ULONGLONG
Attributs de l’allocation de mémoire. ObjectType
Type : ULONGLONG
Type d’allocation, tel que défini par le sous-système qui effectue l’allocation de mémoire. Pour plus d’informations, consultez ObjectType. PageSize
Type : ULONGLONG
Taille de page allouée. Pour plus d’informations sur les valeurs autorisées, consultez PageSize. AllocatorId
Type : ULONGLONG
ID d’allocateur du sous-système qui effectue l’allocation. Chaque allocation est associée à un ID d’allocateur, qui identifie le sous-système qui demande l’allocation (ou la libération) de mémoire. Il existe trois sources potentielles d’allocations : le titre, la plateforme et les composants middleware. Pour plus d’informations sur les ID d’allocateur, consultez XALLOC_ALLOCATOR_IDS. Alignment
Type : ULONGLONG
Type d’alignement requis pour l’allocation. Pour plus d’informations sur les valeurs autorisées, consultez Alignment. MemoryType
Type : ULONGLONG
Type de mémoire souhaité pour l’allocation. Vous pouvez choisir l’un des différents types de pages visibles par le GPU et comportements de mise en cache, ou des valeurs utiles pour les allocations de mémoire réservées au processeur. Pour plus d’informations sur les valeurs autorisées, consultez MemoryType. Address32BitMapping
Type : ULONGLONG
Si la valeur est 1, force l’allocation à obtenir une adresse inférieure à 4 Go (requise par le GPU, par exemple). reserved
Type : ULONGLONG
Réservé à un usage interne.

Remarques

Cette structure est utilisée par les définitions de syntaxe XMEMALLOC_ROUTINE et XMEMFREE_ROUTINE pour, respectivement, l’allocation et la désallocation de mémoire.
Le code source de l’implémentation par défaut de XMemAlloc et de XMemFree est installé avec le Microsoft Game Development Kit (GDK). Pour plus d’informations, consultez les fonctions XMemAllocDefault et XMemFreeDefault dans \GXDK\gameKit\Source\amd64\heap.c.
Les sections suivantes fournissent plus d’informations sur les valeurs autorisées et les détails d’allocation.

ObjectType

Les valeurs de ObjectType sont définies par l’allocateur qui effectue l’allocation, et votre titre peut utiliser ces valeurs soit pour suivre différents types d’objets au fur et à mesure de leur allocation, soit pour faire varier le comportement de votre allocateur en fonction du type. Par exemple, si vous avez défini un allocateur pour votre système de particules, vous pouvez définir votre propre ID d’allocateur pour votre titre sous la forme TitleAllocatorID_ParticleSystem et lui attribuer la valeur 4, ainsi qu’un pool destiné à contenir les particules qui n’entrent en collision qu’avec le plan du sol dans votre moteur. Ce pool peut avoir l’ID ObjectType 2, car vous avez déjà utilisé 0 pour les émetteurs et 1 pour les particules qui entrent en collision. Tout dépend de ce que vous voulez suivre précisément et de la façon dont votre moteur est structuré. Vous pouvez également ne pas définir d’ID avec une granularité aussi grossière ; vous pouvez plutôt vous appuyer sur l’ID d’allocateur pour différents comportements d’allocation, et utiliser l’ID ObjectType uniquement à des fins de suivi, chaque type d’objet de votre jeu ayant sa propre valeur, quel que soit le sous-système. La valeur de ObjectType doit être un entier compris entre 0 et 16383.

MemoryType

Vous pouvez spécifier le type de mémoire à allouer en définissant la valeur de MemoryType. Le paramètre MemoryType doit être défini sur l’une des valeurs suivantes.

PageSize

Vous pouvez spécifier la taille des pages utilisées dans l’allocation de mémoire en définissant la valeur de PageSize. Ce paramètre peut avoir l’une des valeurs indiquées dans le tableau suivant.

Alignment

En définissant la valeur de Alignment, votre code demande un alignement spécifique pour le bloc de mémoire renvoyé. Vous pouvez également considérer ce paramètre comme une valeur de 2n, où n est l’alignement souhaité. Il peut prendre les valeurs indiquées dans le tableau suivant.
L’allocateur par défaut renvoie toujours un alignement minimal de 16 octets.

Sous-allocation de mémoire non graphique

La mémoire non graphique (mémoire allouée à l’aide de XALLOC_MEMTYPE_HEAP_CACHEABLE) est sous-allouée en fonction de la taille de page et de l’alignement de l’allocation.
  • Taille de page de 4 Ko et alignement sur 16 octets :
    • Les allocations inférieures à 4 Ko sont étroitement regroupées
    • Les allocations supérieures ou égales à 4 Ko sont alignées sur un multiple de 4 Ko
  • Taille de page de 64 Ko ou 2 Mo, ou alignement autre que 16 octets :
    • Les allocations <= 4 Ko sont arrondies au multiple supérieur de 256 octets
    • Les allocations <= 64 Ko sont arrondies au multiple supérieur de 2 Ko
    • Les allocations <= 128 Ko sont arrondies à 128 Ko
    • Toutes les autres allocations sont arrondies à une limite de 2 Mo

Configuration requise

En-tête : xmem.h Plateformes prises en charge : consoles de la famille XBOX One et consoles XBOX Series

Voir aussi

Vue d’ensemble de la mémoire graphique pour le GDK
XALLOC_ALLOCATOR_IDS
XMEMALLOC_ROUTINE
XMEMFREE_ROUTINE
XMem
Last modified on October 6, 2026