summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2018-06-11 11:01:52 -0700
committerNanley Chery <nanley.g.chery@intel.com>2018-07-13 08:31:21 -0700
commitffac81fa5c26d1c1a42f52d3f938ba5edd48cf53 (patch)
treeab7038488a6aa38f0b02f2b60e67e24ce830be52 /src/mesa/drivers/dri/i965/intel_mipmap_tree.c
parent03cbaae03e0036782a4007026cbee79e7bc2a4b2 (diff)
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 <topi.pohjolainen@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_mipmap_tree.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.c48
1 files changed, 12 insertions, 36 deletions
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);