mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
i965/miptree: Clean up the depth resolve helpers a little
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
parent
97f6f411db
commit
64b829244b
1 changed files with 38 additions and 48 deletions
|
|
@ -1977,55 +1977,23 @@ intel_miptree_set_all_slices_need_depth_resolve(struct intel_mipmap_tree *mt,
|
|||
}
|
||||
|
||||
static bool
|
||||
intel_miptree_slice_resolve(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t level,
|
||||
uint32_t layer,
|
||||
enum blorp_hiz_op need)
|
||||
{
|
||||
intel_miptree_check_level_layer(mt, level, layer);
|
||||
|
||||
struct intel_resolve_map *item =
|
||||
intel_resolve_map_get(&mt->hiz_map, level, layer);
|
||||
|
||||
if (!item || item->need != need)
|
||||
return false;
|
||||
|
||||
intel_hiz_exec(brw, mt, level, layer, 1, need);
|
||||
intel_resolve_map_remove(item);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_slice_resolve_hiz(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t level,
|
||||
uint32_t layer)
|
||||
{
|
||||
return intel_miptree_slice_resolve(brw, mt, level, layer,
|
||||
BLORP_HIZ_OP_HIZ_RESOLVE);
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_slice_resolve_depth(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t level,
|
||||
uint32_t layer)
|
||||
{
|
||||
return intel_miptree_slice_resolve(brw, mt, level, layer,
|
||||
BLORP_HIZ_OP_DEPTH_RESOLVE);
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_miptree_all_slices_resolve(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
enum blorp_hiz_op need)
|
||||
intel_miptree_depth_hiz_resolve(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t start_level, uint32_t num_levels,
|
||||
uint32_t start_layer, uint32_t num_layers,
|
||||
enum blorp_hiz_op need)
|
||||
{
|
||||
bool did_resolve = false;
|
||||
|
||||
foreach_list_typed_safe(struct intel_resolve_map, map, link, &mt->hiz_map) {
|
||||
if (map->level < start_level ||
|
||||
map->level >= (start_level + num_levels) ||
|
||||
map->layer < start_layer ||
|
||||
map->layer >= (start_layer + num_layers))
|
||||
continue;
|
||||
|
||||
if (map->need != need)
|
||||
continue;
|
||||
continue;
|
||||
|
||||
intel_hiz_exec(brw, mt, map->level, map->layer, 1, need);
|
||||
intel_resolve_map_remove(map);
|
||||
|
|
@ -2035,20 +2003,42 @@ intel_miptree_all_slices_resolve(struct brw_context *brw,
|
|||
return did_resolve;
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_slice_resolve_hiz(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t level,
|
||||
uint32_t layer)
|
||||
{
|
||||
return intel_miptree_depth_hiz_resolve(brw, mt, level, 1, layer, 1,
|
||||
BLORP_HIZ_OP_HIZ_RESOLVE);
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_slice_resolve_depth(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt,
|
||||
uint32_t level,
|
||||
uint32_t layer)
|
||||
{
|
||||
return intel_miptree_depth_hiz_resolve(brw, mt, level, 1, layer, 1,
|
||||
BLORP_HIZ_OP_DEPTH_RESOLVE);
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_all_slices_resolve_hiz(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt)
|
||||
{
|
||||
return intel_miptree_all_slices_resolve(brw, mt,
|
||||
BLORP_HIZ_OP_HIZ_RESOLVE);
|
||||
return intel_miptree_depth_hiz_resolve(brw, mt,
|
||||
0, UINT32_MAX, 0, UINT32_MAX,
|
||||
BLORP_HIZ_OP_HIZ_RESOLVE);
|
||||
}
|
||||
|
||||
bool
|
||||
intel_miptree_all_slices_resolve_depth(struct brw_context *brw,
|
||||
struct intel_mipmap_tree *mt)
|
||||
{
|
||||
return intel_miptree_all_slices_resolve(brw, mt,
|
||||
BLORP_HIZ_OP_DEPTH_RESOLVE);
|
||||
return intel_miptree_depth_hiz_resolve(brw, mt,
|
||||
0, UINT32_MAX, 0, UINT32_MAX,
|
||||
BLORP_HIZ_OP_DEPTH_RESOLVE);
|
||||
}
|
||||
|
||||
enum intel_fast_clear_state
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue