Ir para o conteúdo
PS5PCEM
ParcialGráficos

Detile de texturas

As texturas de PS5 ficam armazenadas em padrões de swizzle GFX10, não em linhas lineares. O PS5PCEM aplica as equações de endereço na CPU e, na GPU, para as superfícies grandes de 4, 8 e 16 bytes que se qualificam.

Notas do repositório até 10 de outubro de 2026

As equações de endereço

Uma textura em tiles faz XOR da coordenada do pixel com bits de pipe, de banco e de amostra, para que pixels vizinhos caiam em canais de memória diferentes. O PS5PCEM implementa as equações GFX10 para layouts lineares, tiles Standard de 256 bytes, de 4 KiB e de 64 KiB, tiles de 64 KiB parcialmente residentes, profundidade Z_X e alvo de renderização R_X. O mesmo contrato cobre caudas de mip e blocos 3D espessos.

Até dezesseis níveis de mip são colocados do menor para o maior. Os níveis pequenos compartilham as posições exatas da cauda de mip de 4 KiB e de 64 KiB. Recursos tridimensionais usam blocos espessos e fatias de bloco de profundidade. Todo sub-recurso expõe um deslocamento verificado de byte de origem. Os adaptadores de buffer, de imagem, de bloco comprimido, de alvo de cor e de alvo de profundidade não alocam nada e rejeitam um estouro ou um intervalo curto.

Detile na GPU e a reserva da CPU

Envios de primeiro uso de superfícies grandes padrão de 4 bytes, em tiles de 256 bytes, de 4 KiB e de 64 KiB, e de superfícies lineares grandes, fazem detile na GPU. O kernel de computação recebe uma chave sem ponteiro e um bloco de parâmetros de 84 bytes: tamanho do bloco, cauda, pitch, fatia, contagem de amostra e um deslocamento de buffer de 64 bits, num layout estável todo em 32 bits. Superfícies padrão e PRT, em 2D e em 3D, de oito e de dezesseis bytes, estão na mesma família da GPU.

As outras famílias ficam na CPU, inclusive RB+ e MSAA. As equações do Oberon para elas incluem os bits de amostra, e o caminho da CPU os usa. Recair é um custo de banda. Não é um formato de pixel diferente. O diagnóstico num desenho ao vivo informa a família, as dimensões do bloco 3D, a contagem de amostra, o limite da cauda de mip e o tamanho da alocação convidada.

Por que o detile aparece no tempo de quadro

Uma textura reenviada a cada quadro paga o custo do detile a cada quadro. O rastreador de páginas, quando está ligado, deixa uma página inalterada permanecer residente, para que o detile seja pulado. Uma textura que a própria GPU reescreveu ainda tem de ser invalidada. O detile não substitui essa regra de coerência.

Visões amostradas fazem detile do intervalo de mip que o descritor nomeia, inclusive um nível de base diferente de zero. Nesse caso, o mip 0 da imagem Vulkan é o nível de base da visão. Swizzles de componente que ainda faltam no caminho de visão são uma limitação separada da equação de endereço.

O que está implementado

  • Equações de endereço GFX10 para linear, Standard, PRT, profundidade e alvo de renderização, inclusive caudas de mip e blocos 3D.
  • Detile por computação na GPU para superfícies grandes padrão e PRT, em 2D e em 3D, de 4, 8 e 16 bytes.
  • Detile na CPU para as famílias restantes, inclusive os bits de amostra de MSAA e de RB+.
  • Deslocamentos verificados de sub-recurso, que rejeitam intervalos curtos e estouros.

O que ainda falta

  • O detile de MSAA e de RB+ roda na CPU.
  • Alguns swizzles de componente e algumas visões de camada ainda estão incompletos.
  • Uma superfície que a CPU escreve depois do envio tem de ser invalidada antes de ser amostrada de novo.

Mecanismos relacionados

O que estas páginas descrevem

O texto segue as notas de arquitetura e os relatórios de outubro de 2026 no repositório do PS5PCEM. Um teste pontual que passa não é uma nova taxa de quadros nem uma nova conclusão de jogo.

Todas as tecnologias