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:
parent
58af615636
commit
bcf880a9c8
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue