This is cc'd to stable, but causes compile errors when to stable branches: src/intel/isl/isl_format.c:372:20: error: ‘ISL_NUM_FORMATS’ undeclared (first use in this function); did you mean ‘ISL_UFLOAT’?
Is it dependent on another patch? Jason Ekstrand <ja...@jlekstrand.net> writes: > We follow the same convention as isl_format_get_layout in having two > assertions to ensure that only valid formats are passed in. We also > check against the array size of the table because some valid formats > such as CCS formats will may be past the end of the table. This fixes > some potential out-of-bounds array access even in valid cases. > > Cc: mesa-sta...@lists.freedesktop.org > --- > src/intel/isl/isl_format.c | 24 ++++++++++++++++-------- > 1 file changed, 16 insertions(+), 8 deletions(-) > > diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c > index 52997cf2ebb..968f981cdee 100644 > --- a/src/intel/isl/isl_format.c > +++ b/src/intel/isl/isl_format.c > @@ -374,11 +374,19 @@ format_gen(const struct gen_device_info *devinfo) > return devinfo->gen * 10 + (devinfo->is_g4x || devinfo->is_haswell) * 5; > } > > +static bool > +format_info_exists(enum isl_format format) > +{ > + assert(format != ISL_FORMAT_UNSUPPORTED); > + assert(format < ISL_NUM_FORMATS); > + return format < ARRAY_SIZE(format_info) && format_info[format].exists; > +} > + > bool > isl_format_supports_rendering(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > return format_gen(devinfo) >= format_info[format].render_target; > @@ -388,7 +396,7 @@ bool > isl_format_supports_alpha_blending(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > return format_gen(devinfo) >= format_info[format].alpha_blend; > @@ -398,7 +406,7 @@ bool > isl_format_supports_sampling(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > if (devinfo->is_baytrail) { > @@ -431,7 +439,7 @@ bool > isl_format_supports_filtering(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > if (devinfo->is_baytrail) { > @@ -464,7 +472,7 @@ bool > isl_format_supports_vertex_fetch(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > /* For vertex fetch, Bay Trail supports the same set of formats as Haswell > @@ -483,7 +491,7 @@ bool > isl_format_supports_typed_writes(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > return format_gen(devinfo) >= format_info[format].typed_write; > @@ -504,7 +512,7 @@ bool > isl_format_supports_typed_reads(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > return format_gen(devinfo) >= format_info[format].typed_read; > @@ -542,7 +550,7 @@ bool > isl_format_supports_ccs_e(const struct gen_device_info *devinfo, > enum isl_format format) > { > - if (!format_info[format].exists) > + if (!format_info_exists(format)) > return false; > > /* For simplicity, only report that a format supports CCS_E if blorp can > -- > 2.17.1 > > _______________________________________________ > mesa-stable mailing list > mesa-sta...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-stable _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev