Intel Surface Layout (ISL)¶
The Intel Surface Layout library (ISL) is a subproject in Mesa for doing surface layout calculations for Intel graphics drivers. It was originally written by Chad Versace and is now maintained by Jason Ekstrand and Nanley Chery.
- Surface Formats
- Auxiliary surface compression
- Single-sampled Color Compression
- Hierarchical Depth (HiZ)
The core representation of a surface in ISL is
Dimensionality of the surface
Spatial layout of the surface in memory
This is dependent on isl_surf::dim and hardware generation.
Base image format of the surface
This need not be the same as the format specified in isl_view::format when a surface state is constructed. It must, however, have the same number of bits per pixel or else memory calculations will go wrong.
Alignment of the upper-left sample of each subimage, in units of surface elements.
Logical extent of the surface’s base level, in units of pixels. This is identical to the extent defined in isl_surf_init_info.
Physical extent of the surface’s base level, in units of physical surface samples.
Consider isl_dim_layout as an operator that transforms a logical surface layout to a physical surface layout. Then
Number of miplevels in the surface
Number of samples in the surface
samples >= 1
Total size of the surface, in bytes.
Required alignment for the surface’s base address.
The interpretation of this field depends on the value of isl_tile_info::physical_extent_B. In particular, the width of the surface in tiles is row_pitch_B / isl_tile_info::physical_extent_B.width and the distance in bytes between vertically adjacent tiles in the image is given by row_pitch_B * isl_tile_info::physical_extent_B.height.
For linear images where isl_tile_info::physical_extent_B.height == 1, this cleanly reduces to being the distance, in bytes, between vertically adjacent surface elements.
Pitch between physical array slices, in rows of surface elements.
Copy of isl_surf_init_info::usage.
- enum isl_surf_dim