diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources index cc030c2adeb..f199235be6b 100644 --- a/src/mesa/drivers/dri/i965/Makefile.sources +++ b/src/mesa/drivers/dri/i965/Makefile.sources @@ -108,8 +108,6 @@ i965_FILES = \ intel_pixel_draw.c \ intel_pixel.h \ intel_pixel_read.c \ - intel_resolve_map.c \ - intel_resolve_map.h \ intel_screen.c \ intel_screen.h \ intel_state.c \ diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 6d38cbfaf82..dc4bc8fb856 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -47,7 +47,6 @@ #include "common/gen_debug.h" #include "intel_screen.h" #include "intel_tex_obj.h" -#include "intel_resolve_map.h" #ifdef __cplusplus extern "C" { diff --git a/src/mesa/drivers/dri/i965/gen8_depth_state.c b/src/mesa/drivers/dri/i965/gen8_depth_state.c index 9460ff4b778..39a786c968f 100644 --- a/src/mesa/drivers/dri/i965/gen8_depth_state.c +++ b/src/mesa/drivers/dri/i965/gen8_depth_state.c @@ -24,7 +24,6 @@ #include "intel_batchbuffer.h" #include "intel_mipmap_tree.h" #include "intel_fbo.h" -#include "intel_resolve_map.h" #include "brw_context.h" #include "brw_state.h" #include "brw_defines.h" diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index a48b9c167d0..7b4cb12ac68 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -28,7 +28,6 @@ #include "intel_batchbuffer.h" #include "intel_mipmap_tree.h" -#include "intel_resolve_map.h" #include "intel_tex.h" #include "intel_blit.h" #include "intel_fbo.h" @@ -2266,7 +2265,7 @@ intel_miptree_prepare_hiz_access(struct brw_context *brw, case BLORP_HIZ_OP_HIZ_RESOLVE: /* The HiZ resolve operation is actually an ambiguate */ intel_miptree_set_aux_state(brw, mt, level, layer, 1, - ISL_AUX_STATE_RESOLVED); + ISL_AUX_STATE_PASS_THROUGH); break; default: diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h index 50ab0045d4e..f7b8e678cd8 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -48,8 +48,8 @@ #include "main/mtypes.h" #include "isl/isl.h" +#include "blorp/blorp.h" #include "brw_bufmgr.h" -#include "intel_resolve_map.h" #include #ifdef __cplusplus @@ -59,7 +59,6 @@ extern "C" { struct brw_context; struct intel_renderbuffer; -struct intel_resolve_map; struct intel_texture_image; /** diff --git a/src/mesa/drivers/dri/i965/intel_resolve_map.c b/src/mesa/drivers/dri/i965/intel_resolve_map.c deleted file mode 100644 index 5b132caf194..00000000000 --- a/src/mesa/drivers/dri/i965/intel_resolve_map.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include "intel_resolve_map.h" - -#include - -/** - * \brief Set that the miptree slice at (level, layer) needs a resolve. - * - * If a map element already exists with the given key, then the value is - * changed to the given value of \c need. - */ -void -intel_resolve_map_set(struct exec_list *resolve_map, - uint32_t level, - uint32_t layer, - unsigned need) -{ - foreach_list_typed(struct intel_resolve_map, map, link, resolve_map) { - if (map->level == level && map->layer == layer) { - map->need = need; - return; - } - } - - struct intel_resolve_map *m = malloc(sizeof(struct intel_resolve_map)); - exec_node_init(&m->link); - m->level = level; - m->layer = layer; - m->need = need; - - exec_list_push_tail(resolve_map, &m->link); -} - -/** - * \brief Get an element from the map. - * \return null if element is not contained in map. - */ -const struct intel_resolve_map * -intel_resolve_map_find_any(const struct exec_list *resolve_map, - uint32_t start_level, uint32_t num_levels, - uint32_t start_layer, uint32_t num_layers) -{ - foreach_list_typed(struct intel_resolve_map, map, link, resolve_map) { - if (map->level >= start_level && - map->level < (start_level + num_levels) && - map->layer >= start_layer && - map->layer < (start_layer + num_layers)) - return map; - } - - return NULL; -} - -/** - * \brief Remove and free an element from the map. - */ -void -intel_resolve_map_remove(struct intel_resolve_map *elem) -{ - exec_node_remove(&elem->link); - free(elem); -} - -/** - * \brief Remove and free all elements of the map. - */ -void -intel_resolve_map_clear(struct exec_list *resolve_map) -{ - foreach_in_list_safe(struct exec_node, node, resolve_map) { - free(node); - } - - exec_list_make_empty(resolve_map); -} diff --git a/src/mesa/drivers/dri/i965/intel_resolve_map.h b/src/mesa/drivers/dri/i965/intel_resolve_map.h deleted file mode 100644 index 771d855b001..00000000000 --- a/src/mesa/drivers/dri/i965/intel_resolve_map.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright © 2011 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef INTEL_RESLVE_MAP_H -#define INTEL_RESLVE_MAP_H - -#include -#include "blorp/blorp.h" -#include "compiler/glsl/list.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Map of miptree slices to needed resolves. - * - * The map is implemented as a linear doubly-linked list. - * - * In the intel_resolve_map*() functions, the \c head argument is not - * inspected for its data. It only serves as an anchor for the list. - * - * \par Design Discussion - * - * There are two possible ways to record which miptree slices need - * resolves. 1) Maintain a flag for every miptree slice in the texture, - * likely in intel_mipmap_level::slice, or 2) maintain a list of only - * those slices that need a resolve. - * - * Immediately before drawing, a full depth resolve performed on each - * enabled depth texture. If design 1 were chosen, then at each draw call - * it would be necessary to iterate over each miptree slice of each - * enabled depth texture in order to query if each slice needed a resolve. - * In the worst case, this would require 2^16 iterations: 16 texture - * units, 16 miplevels, and 256 depth layers (assuming maximums for OpenGL - * 2.1). - * - * By choosing design 2, the number of iterations is exactly the minimum - * necessary. - */ -struct intel_resolve_map { - struct exec_node link; - - uint32_t level; - uint32_t layer; - - enum blorp_hiz_op need; -}; - -void -intel_resolve_map_set(struct exec_list *resolve_map, - uint32_t level, - uint32_t layer, - unsigned new_state); - -const struct intel_resolve_map * -intel_resolve_map_find_any(const struct exec_list *resolve_map, - uint32_t start_level, uint32_t num_levels, - uint32_t start_layer, uint32_t num_layers); - -static inline const struct intel_resolve_map * -intel_resolve_map_const_get(const struct exec_list *resolve_map, - uint32_t level, - uint32_t layer) -{ - return intel_resolve_map_find_any(resolve_map, level, 1, layer, 1); -} - -static inline struct intel_resolve_map * -intel_resolve_map_get(struct exec_list *resolve_map, - uint32_t level, - uint32_t layer) -{ - return (struct intel_resolve_map *)intel_resolve_map_find_any( - resolve_map, level, 1, layer, 1); -} - -void -intel_resolve_map_remove(struct intel_resolve_map *resolve_map); - -void -intel_resolve_map_clear(struct exec_list *resolve_map); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* INTEL_RESLVE_MAP_H */