diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_resolve_map.h')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_resolve_map.h | 108 |
1 files changed, 0 insertions, 108 deletions
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 <stdint.h> -#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 */ |