iris: Allow HiZ for copy_region sources
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -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:
|
||||||
|
@@ -559,9 +559,9 @@ 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) {
|
||||||
case ISL_AUX_USAGE_HIZ:
|
case ISL_AUX_USAGE_HIZ:
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user