Saltar al contenido
PS5PCEM
ParcialGráficos

Desentramado de texturas

Las texturas de PS5 se almacenan en patrones de swizzle GFX10, no en filas lineales. PS5PCEM aplica las ecuaciones de dirección en la CPU, y en la GPU para las superficies grandes de 4, 8 y 16 bytes que cumplen las condiciones.

Notas del repositorio hasta el 10 de octubre de 2026

Las ecuaciones de dirección

Una textura entramada hace XOR de la coordenada del píxel con los bits de pipe, de banco y de muestra para que los píxeles vecinos caigan en canales de memoria distintos. PS5PCEM implementa las ecuaciones GFX10 para layouts lineales, baldosas Standard de 256 bytes, de 4 KiB y de 64 KiB, baldosas de 64 KiB parcialmente residentes, profundidad Z_X y destino de render R_X. El mismo contrato cubre las colas de mip y los bloques 3D gruesos.

Hasta dieciséis niveles de mip se colocan primero el más pequeño. Los niveles pequeños comparten las posiciones exactas de cola de mip de 4 KiB y de 64 KiB. Los recursos tridimensionales usan bloques gruesos y rebanadas de bloque de profundidad. Cada subrecurso expone un desplazamiento de byte de origen comprobado. Los adaptadores de búfer, imagen, compresión por bloques, destino de color y destino de profundidad no asignan nada y rechazan un desbordamiento o un rango corto.

Desentramado en GPU y la alternativa en CPU

Las subidas de primer uso de superficies grandes Standard de 4 bytes en baldosas de 256 bytes, 4 KiB y 64 KiB, y de superficies lineales grandes, se desentraman en la GPU. El kernel de cómputo recibe una clave sin punteros y un bloque de parámetros de 84 bytes: tamaño de bloque, cola, pitch, slice, número de muestras y un desplazamiento de búfer de 64 bits, en un layout estable todo de 32 bits. Las superficies Standard y PRT de 2D y 3D de ocho y de dieciséis bytes están en la misma familia de GPU.

Las demás familias se quedan en la CPU, incluidas RB+ y MSAA. Las ecuaciones de Oberon para esas incluyen los bits de muestra, y la ruta de CPU los usa. Caer a esa alternativa es un coste de ancho de banda. No es otro formato de píxel. El diagnóstico de un dibujo en vivo informa de la familia, las dimensiones del bloque 3D, el número de muestras, el límite de la cola de mip y el tamaño de la asignación del invitado.

Por qué el desentramado aparece en el tiempo de fotograma

Una textura que se vuelve a subir en cada fotograma paga el coste del desentramado en cada fotograma. El rastreador de páginas, cuando está activado, deja que una página sin cambios permanezca residente para que el desentramado se omita. Una textura que la propia GPU reescribió tiene que invalidarse de todos modos. El desentramado no sustituye esa regla de coherencia.

Las vistas muestreadas desentraman el rango de mip que nombra el descriptor, incluido un nivel base distinto de cero. El mip 0 de la imagen de Vulkan es, en ese caso, el nivel base de la vista. Los swizzles de componente que todavía faltan en la ruta de vistas son una limitación distinta de la ecuación de dirección.

Qué está implementado

  • Ecuaciones de dirección GFX10 lineales, Standard, PRT, de profundidad y de destino de render, incluidas colas de mip y bloques 3D.
  • Desentramado de cómputo en GPU para superficies Standard y PRT grandes de 2D y 3D de 4, 8 y 16 bytes.
  • Desentramado en CPU para las familias restantes, incluidos los bits de muestra de MSAA y de RB+.
  • Desplazamientos de subrecurso comprobados que rechazan rangos cortos y desbordamientos.

Qué falta todavía

  • El desentramado de MSAA y de RB+ se ejecuta en la CPU.
  • Algunos swizzles de componente y vistas de capa siguen incompletos.
  • Una superficie que la CPU escribe después de la subida tiene que invalidarse antes de volver a muestrearse.

Mecanismos relacionados

Qué describen estas páginas

El texto sigue las notas de arquitectura y los informes de octubre de 2026 del repositorio PS5PCEM. Un test concreto que pasa no es una tasa de fotogramas nueva ni una partida terminada nueva.

Todas las tecnologías