Compartir a través de


Mapas en un grupo de iconos

Cuando se crea un recurso como un recurso de streaming, los iconos que componen el recurso proceden de apuntar a ubicaciones de un grupo de iconos. Un grupo de iconos es un grupo de memoria (respaldado por una o varias asignaciones en segundo plano, no visibles por la aplicación). El sistema operativo y el controlador de pantalla administran este grupo de memoria y una aplicación entiende fácilmente la superficie de memoria. Los recursos de streaming asignan regiones de 64 KB apuntando a ubicaciones de un grupo de iconos. Una salida de esta configuración es que permite que varios recursos compartan y reutilicen los mismos iconos, y también para que los mismos iconos se reutilicen en ubicaciones diferentes dentro de un recurso si lo desea.

El costo de la flexibilidad de rellenar los iconos de un recurso fuera de un grupo de iconos es que el recurso tiene que realizar el trabajo de definir y mantener la asignación de los iconos del grupo de iconos que representan los iconos necesarios para el recurso. Se pueden cambiar las asignaciones de iconos. Además, no todos los iconos de un recurso deben asignarse a la vez; un recurso puede tener asignaciones NULL . Una asignación NULL define un icono como no disponible desde el punto de vista del recurso que accede a él.

Se pueden crear varios grupos de iconos y cualquier número de recursos de streaming se puede asignar a cualquier grupo de iconos determinado al mismo tiempo. Los grupos de mosaicos también se pueden cultivar o reducir. Para obtener más información, consulte Cambio de tamaño del grupo de iconos. Una restricción que existe para simplificar la implementación del controlador de visualización y el entorno de ejecución es que un recurso de streaming determinado solo puede tener asignaciones en el máximo un grupo de iconos a la vez (en lugar de tener una asignación simultánea a varios grupos de iconos).

La cantidad de almacenamiento asociada a un recurso de streaming (es decir, memoria independiente del grupo de iconos) es aproximadamente proporcional al número de iconos asignados realmente al grupo en un momento dado. En hardware, este hecho reduce verticalmente la superficie de memoria para el almacenamiento de tablas de páginas aproximadamente con la cantidad de iconos asignados (por ejemplo, mediante un esquema de tabla de páginas multinivel según corresponda).

El grupo de iconos se puede considerar como una abstracción de software completa que permite a las aplicaciones de Direct3D poder programar eficazmente las tablas de páginas en la unidad de procesamiento de gráficos (GPU) sin tener que conocer los detalles de implementación de bajo nivel (o tratar directamente con direcciones de puntero). Los grupos de iconos no aplican ningún nivel adicional de direccionamiento indirecto en hardware. Las optimizaciones de una sola tabla de página de nivel mediante construcciones como directorios de página son independientes del concepto del grupo de iconos.

Vamos a explorar qué almacenamiento podría requerir la tabla de páginas en el peor de los casos (aunque en la práctica las implementaciones solo requieren almacenamiento aproximadamente proporcional a lo que se asigna).

Supongamos que cada entrada de tabla de páginas es de 64 bits.

En el caso del tamaño de tabla de páginas peor para una sola superficie, dados los límites de recursos en Direct3D 11, supongamos que se crea un recurso de streaming con un formato de 128 bits por elemento (por ejemplo, un float RGBA), por lo que un icono de 64 KB contiene solo 4096 píxeles. El tamaño máximo admitido de Texture2DArray de 16384*16384*2048 (pero con solo un mapa mip) requeriría aproximadamente 1 GB de almacenamiento en la tabla de páginas si se rellenan completamente (no se incluyen mapas MIP) con entradas de tabla de 64 bits. Agregar mapas mip aumentaría el almacenamiento de tablas de páginas totalmente asignado (peor de los casos) en aproximadamente un tercio, a aproximadamente 1,3 GB.

Este caso daría acceso a aproximadamente 10,6 terabytes de memoria direccionable. Sin embargo, podría haber un límite en la cantidad de memoria direccionable, lo que reduciría estas cantidades, quizás alrededor del intervalo de terabyte.

Otro caso que se debe tener en cuenta es un único recurso de streaming Texture2D de 16384*16384 con un formato de 32 bits por elemento, incluidos los mapas mip. El espacio necesario en una tabla de páginas rellenada sería aproximadamente de 170 KB con entradas de tabla de 64 bits.

Por último, considere un ejemplo con un formato BC, por ejemplo, BC7 con 128 bits por icono de 4 x 4 píxeles. Es un byte por píxel. Una texture2DArray de 16384*16384*2048, incluidos los mapas mip, requeriría aproximadamente 85 MB para rellenar completamente esta memoria en una tabla de páginas. Esto no es malo teniendo en cuenta que esto permite que un recurso de streaming abarque 550 gigapixeles (512 GB de memoria en este caso).

En la práctica, no se definiría ninguna ubicación cercana a estas asignaciones completas, dado que la cantidad de memoria física disponible no permitiría asignar y hacer referencia a ella en cualquier lugar cercano a esa cantidad. Sin embargo, con un grupo de iconos, las aplicaciones podrían optar por reutilizar iconos (como ejemplo sencillo, reutilizar un icono de color "negro" para regiones negras grandes en una imagen), usando eficazmente el grupo de iconos (es decir, asignaciones de tablas de páginas) como una herramienta para la compresión de memoria.

El contenido inicial de la tabla de páginas es NULL para todas las entradas. Las aplicaciones tampoco pueden pasar datos iniciales para el contenido de memoria de la superficie, ya que comienza sin respaldo de memoria.

En esta sección

Tema Descripción

Creación del grupo de iconos

Las aplicaciones pueden crear uno o varios grupos de iconos por dispositivo Direct3D. El tamaño total de cada grupo de iconos está restringido al límite de tamaño de recursos de Direct3D 11, que es aproximadamente 1/4 de RAM de GPU.

Cambio de tamaño del grupo de iconos

Cambie el tamaño de un grupo de iconos para aumentar un grupo de iconos si la aplicación necesita más espacio de trabajo para la asignación de recursos de streaming en él o para reducir si se necesita menos espacio.

Seguimiento de riesgos frente a recursos del grupo de iconos

En el caso de los recursos que no son de streaming, Direct3D puede evitar ciertas condiciones de peligro durante la representación, pero dado que el seguimiento de riesgos estaría en un nivel de mosaico para los recursos de streaming, el seguimiento de las condiciones de peligro durante la representación de los recursos de streaming podría ser demasiado caro.

 

Creación de recursos de streaming