Skip to main content
Permite o controle direto dos registros SPI_TMPRING_SIZE e COMPUTE_TMPRING_SIZE e dos anéis de gráficos e de computação, respectivamente.

Sintaxe

Parâmetros

Flags   _In_
Tipo: D3D12XBOX_SET_SHADER_SCRATCH_SPACE_FLAGS
Escolha computação, gráficos ou ambos. Destination   _In_
Tipo: D3D12_GPU_VIRTUAL_ADDRESS
Endereço base do espaço de rascunho (scratch); deve estar alinhado a 1KB ou ser nulo. Definir esse valor como nulo reprograma os padrões do driver definidos no momento. SizeBytes   _In_
Tipo: UINT64
Tamanho do espaço de rascunho, alinhado a 1KB; deve ser 0 se o endereço for nulo. SizePerWaveInBytes   _In_
Tipo: UINT
Tamanho do espaço de rascunho por wave; deve estar alinhado a 1KB, deve ser menor ou igual ao tamanho total do espaço de rascunho e deve ser 0 se o endereço for nulo.

Valor retornado

Tipo: void

Comentários

Nosso hardware oferece suporte a alterações em pipeline nos registros tmpring_size, mas uma liberação completa do pipeline é necessária quando o endereço de memória subjacente do espaço de rascunho é reutilizado. Isso leva ao seguinte: por padrão, o driver gráfico aloca um único espaço de rascunho para gráficos e computação e define os registros tmpring_size para acomodar apenas algumas waves por SIMD. Isso significa que a ocupação é baixa quando o scratch nos shaders está habilitado. Por padrão, devido a haver apenas uma única alocação de computação, a computação assíncrona não pode ser usada simultaneamente com a computação gráfica, o que significa que shaders com scratch não podem ser usados na computação assíncrona de forma alguma. Os desenvolvedores podem substituir os tamanhos de scratch por meio da API especializada de criação de dispositivo do XBOX, mas não podem substituir esse comportamento. Esta API permite reprogramar esse comportamento padrão de modo que seja possível obter maior ocupação e sobreposição de trabalho em gráficos e na computação assíncrona. Nenhuma sincronização é executada internamente e nenhuma verificação é feita nos ponteiros de memória para evitar reutilização; portanto, é muito importante que os usuários implementem sua própria sincronização para garantir que não ocorra reutilização de memória quando o registro tmpring_size for reprogramado. É possível consultar o tamanho de scratch necessário por wave usando as seguintes APIs
E aqui está um exemplo de como ele pode ser definido, permitindo, por exemplo, que 8 waves compartilhem o espaço de rascunho (observe que, na prática, esse número de waves é pequeno demais)
Por fim, o hardware não oferece suporte a ocupação superior a 16 quando SCRATCH_EN está habilitado, pois a programação de tmpring_size não permite especificar mais de 32 waves por unidade de computação.

Requisitos

Cabeçalho: d3d12_xs.h Biblioteca: d3d12_xs.lib Plataformas compatíveis: XBOX Series X|S

Confira também

ID3D12GraphicsCommandList6
Last modified on October 6, 2026