Extract from intel_miptree_create() the logic for selecting intel_mipmap_tree::format and ::etc_format into a new function, intel_miptree_select_formats(). No behavioral change.
Now, intel_miptree_create() is short enough to be understandable. Signed-off-by: Chad Versace <chad.vers...@linux.intel.com> --- src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 72 ++++++++++++++++---------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c index ce07abf..e3eae11 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c @@ -333,59 +333,75 @@ intel_miptree_choose_tiling(struct intel_context *intel, return I915_TILING_NONE; } -struct intel_mipmap_tree * -intel_miptree_create(struct intel_context *intel, - GLenum target, - gl_format format, - GLuint first_level, - GLuint last_level, - GLuint width0, - GLuint height0, - GLuint depth0, - bool expect_accelerated_upload, - GLuint num_samples, - bool force_y_tiling) +/** + * \brief Helper function for intel_miptree_create(). + * + * The \a orig_format is that passed to intel_miptree_create(). + */ +static void +intel_miptree_select_formats(gl_format orig_format, + gl_format *mt_format, + gl_format *etc_format) { - struct intel_mipmap_tree *mt; - gl_format tex_format = format; - gl_format etc_format = MESA_FORMAT_NONE; - GLuint total_width, total_height; - - switch (format) { + switch (orig_format) { case MESA_FORMAT_ETC1_RGB8: - format = MESA_FORMAT_RGBX8888_REV; + *mt_format = MESA_FORMAT_RGBX8888_REV; break; case MESA_FORMAT_ETC2_RGB8: - format = MESA_FORMAT_RGBX8888_REV; + *mt_format = MESA_FORMAT_RGBX8888_REV; break; case MESA_FORMAT_ETC2_SRGB8: case MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC: case MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1: - format = MESA_FORMAT_SARGB8; + *mt_format = MESA_FORMAT_SARGB8; break; case MESA_FORMAT_ETC2_RGBA8_EAC: case MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1: - format = MESA_FORMAT_RGBA8888_REV; + *mt_format = MESA_FORMAT_RGBA8888_REV; break; case MESA_FORMAT_ETC2_R11_EAC: - format = MESA_FORMAT_R16; + *mt_format = MESA_FORMAT_R16; break; case MESA_FORMAT_ETC2_SIGNED_R11_EAC: - format = MESA_FORMAT_SIGNED_R16; + *mt_format = MESA_FORMAT_SIGNED_R16; break; case MESA_FORMAT_ETC2_RG11_EAC: - format = MESA_FORMAT_GR1616; + *mt_format = MESA_FORMAT_GR1616; break; case MESA_FORMAT_ETC2_SIGNED_RG11_EAC: - format = MESA_FORMAT_SIGNED_GR1616; + *mt_format = MESA_FORMAT_SIGNED_GR1616; break; default: /* Non ETC1 / ETC2 format */ + *mt_format = orig_format; break; } - etc_format = (format != tex_format) ? tex_format : MESA_FORMAT_NONE; - mt = intel_miptree_create_layout(intel, target, format, + if (*mt_format == orig_format) + *etc_format = MESA_FORMAT_NONE; + else + *etc_format = orig_format; +} + +struct intel_mipmap_tree * +intel_miptree_create(struct intel_context *intel, + GLenum target, + gl_format format, + GLuint first_level, + GLuint last_level, + GLuint width0, + GLuint height0, + GLuint depth0, + bool expect_accelerated_upload, + GLuint num_samples, + bool force_y_tiling) +{ + struct intel_mipmap_tree *mt; + GLuint total_width, total_height; + gl_format mt_format, etc_format; + + intel_miptree_select_formats(format, &mt_format, &etc_format); + mt = intel_miptree_create_layout(intel, target, mt_format, first_level, last_level, width0, height0, depth0, false, num_samples); -- 1.8.1.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev