diff options
author | Nanley Chery <[email protected]> | 2018-06-11 11:01:52 -0700 |
---|---|---|
committer | Nanley Chery <[email protected]> | 2018-07-13 08:31:21 -0700 |
commit | ffac81fa5c26d1c1a42f52d3f938ba5edd48cf53 (patch) | |
tree | ab7038488a6aa38f0b02f2b60e67e24ce830be52 /src/mesa/drivers | |
parent | 03cbaae03e0036782a4007026cbee79e7bc2a4b2 (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 <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 48 |
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); |