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
Les attributs de l’allocation de mémoire. ObjectType
Type : ULONGLONG
Le 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
La taille de page allouée. Pour plus d’informations sur les valeurs autorisées, consultez PageSize. AllocatorId
Type : ULONGLONG
L’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 intergiciels. Pour plus d’informations sur les ID d’allocateur, consultez XALLOC_ALLOCATOR_IDS. Alignment
Type : ULONGLONG
Le type d’alignement requis pour l’allocation. Pour plus d’informations sur les valeurs autorisées, consultez Alignment. MemoryType
Type : ULONGLONG
Le type de mémoire souhaité pour l’allocation. Vous pouvez choisir parmi plusieurs types de pages visibles par le GPU et comportements de mise en cache, ou parmi des valeurs utiles pour les allocations de mémoire réservées au CPU. Pour plus d’informations sur les valeurs autorisées, consultez MemoryType. Address32BitMapping
Type : ULONGLONG
S’il est défini à 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 selon le type. Par exemple, si vous avez défini un allocateur pour votre système de particules, vous pourriez définir votre propre ID d’allocateur pour votre titre sous le nom 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 pourrait avoir l’ID ObjectType 2, puisque 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 aussi ne pas définir d’ID avec une granularité aussi grossière; vous pourriez plutôt vous baser sur l’ID d’allocateur pour obtenir 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 à 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 précis pour le bloc de mémoire retourné. Vous pouvez également considérer ce paramètre comme une valeur de 2n, où n est l’alignement souhaité. Il peut avoir les valeurs indiquées dans le tableau suivant.
L’allocateur par défaut retourne 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 de 16 octets :
    • Les allocations inférieures à 4 Ko sont regroupées de manière compacte
    • Les allocations supérieures ou égales à 4 Ko sont alignées sur un multiple de 4 Ko
  • Taille de page de 64 Ko ou de 2 Mo, ou alignement autre que 16 octets :
    • Les allocations <= 4 Ko sont arrondies au multiple de 256 octets supérieur
    • Les allocations <= 64 Ko sont arrondies au multiple de 2 Ko supérieur
    • 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