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 <nanley.g.chery@intel.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> (v1) Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -66,6 +66,10 @@ brw_blorp_surface_info_init(struct blorp_context *blorp,
|
|||||||
unsigned int level, unsigned int layer,
|
unsigned int level, unsigned int layer,
|
||||||
enum isl_format format, bool is_render_target)
|
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;
|
info->enabled = true;
|
||||||
|
|
||||||
if (format == ISL_FORMAT_UNSUPPORTED)
|
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) {
|
if (info->aux_usage != ISL_AUX_USAGE_NONE) {
|
||||||
info->aux_surf = *surf->aux_surf;
|
info->aux_surf = *surf->aux_surf;
|
||||||
info->aux_addr = surf->aux_addr;
|
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;
|
info->clear_color = surf->clear_color;
|
||||||
|
@@ -707,10 +707,6 @@ blorp_ccs_resolve(struct blorp_batch *batch,
|
|||||||
struct blorp_params params;
|
struct blorp_params params;
|
||||||
blorp_params_init(¶ms);
|
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,
|
brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf,
|
||||||
level, layer, format, true);
|
level, layer, format, true);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user