diff options
author | Chris Forbes <[email protected]> | 2014-02-22 08:51:41 +1300 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2014-04-10 18:27:40 +1200 |
commit | 14c116433dd7e5a474c394283be682684bc8d3af (patch) | |
tree | d9be554d1247fc1a88e6f243f3c64be40fa23c84 | |
parent | 215c9432b91a8f7e3664acab835d8d191375e442 (diff) |
i965: refactor format munging for separate stencil
We will need this for munging the view's format.
Signed-off-by: Chris Forbes <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Acked-by: Eric Anholt <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 31 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 3 |
2 files changed, 26 insertions, 8 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index 1a7a9e836c3..9b2e27bc21c 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -211,6 +211,23 @@ intel_is_non_msrt_mcs_buffer_supported(struct brw_context *brw, /** + * Determine depth format corresponding to a depth+stencil format, + * for separate stencil. + */ +mesa_format +intel_depth_format_for_depthstencil_format(mesa_format format) { + switch (format) { + case MESA_FORMAT_Z24_UNORM_S8_UINT: + return MESA_FORMAT_Z24_UNORM_X8_UINT; + case MESA_FORMAT_Z32_FLOAT_S8X24_UINT: + return MESA_FORMAT_Z_FLOAT32; + default: + return format; + } +} + + +/** * @param for_bo Indicates that the caller is * intel_miptree_create_for_bo(). If true, then do not create * \c stencil_mt. @@ -368,14 +385,12 @@ intel_miptree_create_layout(struct brw_context *brw, /* Fix up the Z miptree format for how we're splitting out separate * stencil. Gen7 expects there to be no stencil bits in its depth buffer. */ - if (mt->format == MESA_FORMAT_Z24_UNORM_S8_UINT) { - mt->format = MESA_FORMAT_Z24_UNORM_X8_UINT; - } else if (mt->format == MESA_FORMAT_Z32_FLOAT_S8X24_UINT) { - mt->format = MESA_FORMAT_Z_FLOAT32; - mt->cpp = 4; - } else { - _mesa_problem(NULL, "Unknown format %s in separate stencil mt\n", - _mesa_get_format_name(mt->format)); + mt->format = intel_depth_format_for_depthstencil_format(mt->format); + mt->cpp = 4; + + if (format == mt->format) { + _mesa_problem(NULL, "Unknown format %s in separate stencil mt\n", + _mesa_get_format_name(mt->format)); } } diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h index 2565db800e5..de682332f3b 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -500,6 +500,9 @@ intel_miptree_create_for_renderbuffer(struct brw_context *brw, uint32_t height, uint32_t num_samples); +mesa_format +intel_depth_format_for_depthstencil_format(mesa_format format); + /** \brief Assert that the level and layer are valid for the miptree. */ static inline void intel_miptree_check_level_layer(struct intel_mipmap_tree *mt, |