isl/surface_state: Handle ISL_AUX_USAGE_HIZ

v2: Remove redundant x/y offset asserts (Jason Ekstrand)

Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Nanley Chery 2016-12-05 15:24:28 -08:00
parent 58af615636
commit bcf880a9c8
1 changed files with 29 additions and 0 deletions

View File

@ -520,6 +520,26 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
s.AuxiliarySurfaceQPitch =
isl_surf_get_array_pitch_sa_rows(info->aux_surf) >> 2;
s.AuxiliarySurfaceBaseAddress = info->aux_address;
if (info->aux_usage == ISL_AUX_USAGE_HIZ) {
/* The number of samples must be 1 */
assert(info->surf->samples == 1);
/* The dimension must not be 3D */
assert(info->surf->dim != ISL_SURF_DIM_3D);
/* The format must be one of the following: */
switch (info->view->format) {
case ISL_FORMAT_R32_FLOAT:
case ISL_FORMAT_R24_UNORM_X8_TYPELESS:
case ISL_FORMAT_R16_UNORM:
break;
default:
assert(!"Incompatible HiZ Sampling format");
break;
}
}
s.AuxiliarySurfaceMode = isl_to_gen_aux_mode[info->aux_usage];
#else
assert(info->aux_usage == ISL_AUX_USAGE_MCS ||
@ -548,6 +568,15 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
s.SamplerL2BypassModeDisable = true;
break;
default:
/* From the SKL PRM, Programming Note under Sampler Output Channel
* Mapping:
*
* If a surface has an associated HiZ Auxilliary surface, the
* Sampler L2 Bypass Mode Disable field in the RENDER_SURFACE_STATE
* must be set.
*/
if (GEN_GEN >= 9 && info->aux_usage == ISL_AUX_USAGE_HIZ)
s.SamplerL2BypassModeDisable = true;
break;
}
}