From: Jason Ekstrand Date: Sat, 16 Apr 2016 00:05:24 +0000 (-0700) Subject: isl: Add a helper for determining when a typed load/store can be used X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=65bd8317e2e5c0369987d0b2e535d427dd2c7a4f;p=mesa.git isl: Add a helper for determining when a typed load/store can be used Reviewed-by: Chad Versace --- diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h index 6c417b29f4c..47d3a68ae4a 100644 --- a/src/intel/isl/isl.h +++ b/src/intel/isl/isl.h @@ -903,6 +903,13 @@ enum isl_format isl_lower_storage_image_format(const struct brw_device_info *devinfo, enum isl_format fmt); +/* Returns true if this hardware supports typed load/store on a format with + * the same size as the given format. + */ +bool +isl_has_matching_typed_storage_image_format(const struct brw_device_info *devinfo, + enum isl_format fmt); + static inline bool isl_tiling_is_any_y(enum isl_tiling tiling) { diff --git a/src/intel/isl/isl_storage_image.c b/src/intel/isl/isl_storage_image.c index 8d9bea3f954..590d2e48b05 100644 --- a/src/intel/isl/isl_storage_image.c +++ b/src/intel/isl/isl_storage_image.c @@ -187,6 +187,19 @@ isl_lower_storage_image_format(const struct brw_device_info *devinfo, } } +bool +isl_has_matching_typed_storage_image_format(const struct brw_device_info *devinfo, + enum isl_format fmt) +{ + if (devinfo->gen >= 9) { + return true; + } else if (devinfo->gen >= 8 || devinfo->is_haswell) { + return isl_format_get_layout(fmt)->bs <= 8; + } else { + return isl_format_get_layout(fmt)->bs <= 4; + } +} + static const struct brw_image_param image_param_defaults = { /* Set the swizzling shifts to all-ones to effectively disable * swizzling -- See emit_address_calculation() in