iris: Allow HiZ for copy_region sources

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Kenneth Graunke
2019-12-25 23:43:01 -08:00
parent 7d75bf4f3f
commit c0c899cf78
3 changed files with 18 additions and 5 deletions

View File

@@ -573,6 +573,15 @@ get_copy_region_aux_settings(const struct gen_device_info *devinfo,
bool is_render_target) bool is_render_target)
{ {
switch (res->aux.usage) { switch (res->aux.usage) {
case ISL_AUX_USAGE_HIZ:
if (!is_render_target && iris_sample_with_depth_aux(devinfo, res)) {
*out_aux_usage = ISL_AUX_USAGE_HIZ;
*out_clear_supported = true;
} else {
*out_aux_usage = ISL_AUX_USAGE_NONE;
*out_clear_supported = false;
}
break;
case ISL_AUX_USAGE_MCS: case ISL_AUX_USAGE_MCS:
case ISL_AUX_USAGE_MCS_CCS: case ISL_AUX_USAGE_MCS_CCS:
case ISL_AUX_USAGE_CCS_E: case ISL_AUX_USAGE_CCS_E:

View File

@@ -559,8 +559,8 @@ format_ccs_e_compat_with_resource(const struct gen_device_info *devinfo,
return isl_formats_are_ccs_e_compatible(devinfo, isl_format, access_format); return isl_formats_are_ccs_e_compatible(devinfo, isl_format, access_format);
} }
static bool bool
sample_with_depth_aux(const struct gen_device_info *devinfo, iris_sample_with_depth_aux(const struct gen_device_info *devinfo,
const struct iris_resource *res) const struct iris_resource *res)
{ {
switch (res->aux.usage) { switch (res->aux.usage) {
@@ -1339,12 +1339,12 @@ iris_resource_texture_aux_usage(struct iris_context *ice,
switch (res->aux.usage) { switch (res->aux.usage) {
case ISL_AUX_USAGE_HIZ: case ISL_AUX_USAGE_HIZ:
if (sample_with_depth_aux(devinfo, res)) if (iris_sample_with_depth_aux(devinfo, res))
return ISL_AUX_USAGE_HIZ; return ISL_AUX_USAGE_HIZ;
break; break;
case ISL_AUX_USAGE_HIZ_CCS: case ISL_AUX_USAGE_HIZ_CCS:
if (sample_with_depth_aux(devinfo, res)) if (iris_sample_with_depth_aux(devinfo, res))
return ISL_AUX_USAGE_CCS_E; return ISL_AUX_USAGE_CCS_E;
break; break;

View File

@@ -475,6 +475,10 @@ void iris_resource_check_level_layer(const struct iris_resource *res,
bool iris_resource_level_has_hiz(const struct iris_resource *res, bool iris_resource_level_has_hiz(const struct iris_resource *res,
uint32_t level); uint32_t level);
bool iris_sample_with_depth_aux(const struct gen_device_info *devinfo,
const struct iris_resource *res);
bool iris_has_color_unresolved(const struct iris_resource *res, bool iris_has_color_unresolved(const struct iris_resource *res,
unsigned start_level, unsigned num_levels, unsigned start_level, unsigned num_levels,
unsigned start_layer, unsigned num_layers); unsigned start_layer, unsigned num_layers);