From: Nanley Chery Date: Mon, 11 Jun 2018 18:01:52 +0000 (-0700) Subject: i965/miptree: Refactor miptree_create X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ffac81fa5c26d1c1a42f52d3f938ba5edd48cf53;p=mesa.git i965/miptree: Refactor miptree_create Enable a future patch to create the r8stencil_mt in this function. v2: Explicitly set etc_format to MESA_FORMAT_NONE (Topi). Reviewed-by: Topi Pohjolainen --- diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index b0ca75d3c56..820c1d85934 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -722,48 +722,24 @@ miptree_create(struct brw_context *brw, intel_depth_format_for_depthstencil_format(format); } - if (format == MESA_FORMAT_S_UINT8) - return make_surface(brw, target, mt_fmt, first_level, last_level, - width0, height0, depth0, num_samples, - tiling_flags, - mt_surf_usage(mt_fmt), - alloc_flags, - 0, - NULL); + struct intel_mipmap_tree *mt = + make_surface(brw, target, mt_fmt, first_level, last_level, + width0, height0, depth0, num_samples, + tiling_flags, mt_surf_usage(mt_fmt), + alloc_flags, 0, NULL); - const GLenum base_format = _mesa_get_format_base_format(format); - if ((base_format == GL_DEPTH_COMPONENT || - base_format == GL_DEPTH_STENCIL)) { - struct intel_mipmap_tree *mt = make_surface( - brw, target, mt_fmt, - first_level, last_level, - width0, height0, depth0, num_samples, tiling_flags, - mt_surf_usage(mt_fmt), - alloc_flags, 0, NULL); - - if (needs_separate_stencil(brw, mt, format) && - !make_separate_stencil_surface(brw, mt)) { + if (mt == NULL) + return NULL; + + if (needs_separate_stencil(brw, mt, format)) { + if (!make_separate_stencil_surface(brw, mt)) { intel_miptree_release(&mt); return NULL; } - - if (!(flags & MIPTREE_CREATE_NO_AUX)) - intel_miptree_choose_aux_usage(brw, mt); - - return mt; } - struct intel_mipmap_tree *mt = make_surface( - brw, target, mt_fmt, - first_level, last_level, - width0, height0, depth0, - num_samples, tiling_flags, - mt_surf_usage(mt_fmt), - alloc_flags, 0, NULL); - if (!mt) - return NULL; - - mt->etc_format = (mt_fmt != format) ? format : MESA_FORMAT_NONE; + mt->etc_format = (_mesa_is_format_color_format(format) && mt_fmt != format) ? + format : MESA_FORMAT_NONE; if (!(flags & MIPTREE_CREATE_NO_AUX)) intel_miptree_choose_aux_usage(brw, mt);