From b46a07175823ec476505cb8a0f8c353e5183d748 Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Thu, 11 May 2017 10:58:18 -0700 Subject: [PATCH] intel/blorp: Assert levels and layers are in range v2 (Jason Ekstrand): - Update commit title. - Check aux level and layer as well. v3 (Jason Ekstrand): - Move the non-aux layer check. Signed-off-by: Nanley Chery Reviewed-by: Iago Toral Quiroga (v1) Reviewed-by: Jason Ekstrand --- src/intel/blorp/blorp.c | 7 +++++++ src/intel/blorp/blorp_clear.c | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index 9c88658e8ac..a426a030d29 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -66,6 +66,10 @@ brw_blorp_surface_info_init(struct blorp_context *blorp, unsigned int level, unsigned int layer, enum isl_format format, bool is_render_target) { + assert(level < surf->surf->levels); + assert(layer < MAX2(surf->surf->logical_level0_px.depth >> level, + surf->surf->logical_level0_px.array_len)); + info->enabled = true; if (format == ISL_FORMAT_UNSUPPORTED) @@ -90,6 +94,9 @@ brw_blorp_surface_info_init(struct blorp_context *blorp, if (info->aux_usage != ISL_AUX_USAGE_NONE) { info->aux_surf = *surf->aux_surf; info->aux_addr = surf->aux_addr; + assert(level < info->aux_surf.levels); + assert(layer < MAX2(info->aux_surf.logical_level0_px.depth >> level, + info->aux_surf.logical_level0_px.array_len)); } info->clear_color = surf->clear_color; diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index efacadfebe4..369e18726f2 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -707,10 +707,6 @@ blorp_ccs_resolve(struct blorp_batch *batch, struct blorp_params params; blorp_params_init(¶ms); - /* Layered and mipmapped fast clear is only available from Gen8 onwards. */ - assert(ISL_DEV_GEN(batch->blorp->isl_dev) >= 8 || - (level == 0 && layer == 0)); - brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, level, layer, format, true); -- 2.30.2