diff options
author | Topi Pohjolainen <[email protected]> | 2017-05-29 15:17:48 +0300 |
---|---|---|
committer | Topi Pohjolainen <[email protected]> | 2017-07-18 21:36:13 +0300 |
commit | 75075632913171ce515b3c0c5debd4ddac4ddd84 (patch) | |
tree | d080c86fea1d2b63d3be2776a73d120b1801848f /src | |
parent | 0926fb69a4bb81f2c95c1d6acd43887a442d33f5 (diff) |
i965: Refactor check for separate stencil
v2 (Jason): s/needs_stencil/needs_separate_stencil/
Reviewed-by: Jason Ekstrand <[email protected]>
Signed-off-by: Topi Pohjolainen <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index d68e3716464..f292d71d385 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -342,6 +342,25 @@ unwind: return false; } +static bool +needs_separate_stencil(const struct brw_context *brw, + struct intel_mipmap_tree *mt, + mesa_format format, uint32_t layout_flags) +{ + + if (layout_flags & MIPTREE_LAYOUT_FOR_BO) + return false; + + if (_mesa_get_format_base_format(format) != GL_DEPTH_STENCIL) + return false; + + if (brw->must_use_separate_stencil) + return true; + + return brw->has_separate_stencil && + intel_miptree_supports_hiz(brw, mt); +} + /** * @param for_bo Indicates that the caller is * intel_miptree_create_for_bo(). If true, then do not create @@ -520,10 +539,7 @@ intel_miptree_create_layout(struct brw_context *brw, mt->physical_height0 = height0; mt->physical_depth0 = depth0; - if (!(layout_flags & MIPTREE_LAYOUT_FOR_BO) && - _mesa_get_format_base_format(format) == GL_DEPTH_STENCIL && - (brw->must_use_separate_stencil || - (brw->has_separate_stencil && intel_miptree_supports_hiz(brw, mt)))) { + if (needs_separate_stencil(brw, mt, format, layout_flags)) { uint32_t stencil_flags = MIPTREE_LAYOUT_ACCELERATED_UPLOAD; if (brw->gen == 6) { stencil_flags |= MIPTREE_LAYOUT_TILING_ANY; |