XALLOC_ATTRIBUTES
Contém valores que descrevem os atributos de uma alocação de memória.Sintaxe
Membros
AttributesTipo: ULONGLONG Os atributos da alocação de memória. ObjectType
Tipo: ULONGLONG O tipo de alocação, conforme definido pelo subsistema que executa a alocação de memória. Para obter mais informações, consulte ObjectType. PageSize
Tipo: ULONGLONG O tamanho de página alocado. Para obter mais informações sobre os valores permitidos, consulte PageSize. AllocatorId
Tipo: ULONGLONG A ID do alocador do subsistema que executa a alocação. Cada alocação é associada a uma ID de alocador, que identifica o subsistema que está solicitando a alocação (ou a liberação) de memória. Há três fontes potenciais de alocações: componentes de título, de plataforma e de middleware. Para obter mais informações sobre IDs de alocador, consulte XALLOC_ALLOCATOR_IDS. Alignment
Tipo: ULONGLONG O tipo de alinhamento necessário para a alocação. Para obter mais informações sobre os valores permitidos, consulte Alignment. MemoryType
Tipo: ULONGLONG O tipo de memória desejado para a alocação. Você pode escolher um dentre vários tipos de página visíveis para a GPU e comportamentos de cache, em comparação com valores úteis para alocações de memória somente da CPU. Para obter mais informações sobre os valores permitidos, consulte MemoryType. Address32BitMapping
Tipo: ULONGLONG Se definido como 1, força a alocação a obter um endereço abaixo de 4GB (exigido pela GPU, por exemplo). reserved
Tipo: ULONGLONG Reservado para uso interno.
Comentários
Essa estrutura é usada pelas definições de sintaxe de XMEMALLOC_ROUTINE e XMEMFREE_ROUTINE para, respectivamente, alocação e desalocação de memória.
As seções a seguir fornecem mais informações sobre os valores permitidos e os detalhes de alocação.
ObjectType
Os valores de ObjectType são definidos pelo alocador que executa a alocação, e seu título pode usar esses valores para rastrear diferentes tipos de objeto à medida que são alocados ou para variar o comportamento do seu alocador, dependendo do tipo. Por exemplo, se você definisse um alocador para o seu sistema de partículas, poderia definir sua própria ID de alocador para o título comoTitleAllocatorID_ParticleSystem e defini-la como 4, além de um pool para conter partículas que colidem apenas com o plano do chão no seu mecanismo. Esse pool poderia ter a ID de ObjectType 2, porque você já usou 0 para emissores e 1 para partículas que colidem. Tudo depende do que exatamente você deseja rastrear e de como seu mecanismo está estruturado.
Como alternativa, você pode não definir IDs com uma granularidade tão grosseira; em vez disso, você pode se basear na ID do alocador para diferentes comportamentos de alocação e usar a ID de ObjectType apenas para fins de rastreamento, com cada tipo de objeto no seu jogo tendo seu próprio valor, independentemente do subsistema.
O valor de ObjectType deve ser um inteiro entre 0 e 16383.
MemoryType
Você pode especificar o tipo de memória a ser alocada definindo o valor de MemoryType. O parâmetro MemoryType deve ser definido como um dos valores a seguir.PageSize
Você pode especificar o tamanho das páginas usadas na alocação de memória definindo o valor de PageSize. Esse parâmetro pode ter um dos valores mostrados na tabela a seguir.Alignment
Ao definir o valor de Alignment, seu código solicita um alinhamento específico para o bloco de memória retornado. Você também pode ver esse parâmetro como um valor de 2n, em que n é o alinhamento desejado. Ele pode ter os valores mostrados na tabela a seguir.O alocador padrão sempre retorna um alinhamento mínimo de 16 bytes.
Subalocação de memória não gráfica
A memória não gráfica (memória alocada usando XALLOC_MEMTYPE_HEAP_CACHEABLE) é subalocada com base no tamanho de página e no alinhamento da alocação.- Tamanho de página de 4 KB e alinhamento de 16 bytes:
- Alocações menores que 4 KB são compactadas
- Alocações maiores ou iguais a 4 KB são alinhadas a um múltiplo de 4 KB
- Tamanho de página de 64 KB ou 2 MB ou um alinhamento diferente de 16 bytes:
- Alocações <= 4 KB são arredondadas para cima até um múltiplo de 256 bytes
- Alocações <= 64 KB são arredondadas para cima até um múltiplo de 2 KB
- Alocações <= 128 KB são arredondadas para cima até 128 KB
- Todas as outras alocações são arredondadas para cima até um limite de 2 MB
Requisitos
Cabeçalho: xmem.h Plataformas compatíveis: consoles da família XBOX One e consoles XBOX SeriesConfira também
Visão geral da memória gráfica do GDKXALLOC_ALLOCATOR_IDS
XMEMALLOC_ROUTINE
XMEMFREE_ROUTINE
XMem
