aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-09-12 22:31:00 -0700
committerJason Ekstrand <[email protected]>2016-09-13 10:43:21 -0700
commit3943888c94beca69e575b8d3d1ec7a6cbf474ee4 (patch)
tree88359a3388063ab6e9b168a5248cc7dccc7cabd8
parent62affedbed851168ad90c1fe5cd9cadc0855abe9 (diff)
intel/isl: Ignore base_array_layer and array_len for 3D storage surfaces
The time we want to restrict the Z range of a 3-D surface is when rendering to it. For storage surfaces, we always want he full range. However, we still need to set MinimumArrayElement and RenderTargetViewExtent to sensible values so we'll just set them to the reasonable defaults we used before we started respecting the base_array_layer and array_len. This fixes a bunch of Vulkan CTS regressions caused by 48f195d7c6483ed. Signed-off-by: Jason Ekstrand <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97790 Reviewed-by: Chad Versace <[email protected]>
-rw-r--r--src/intel/isl/isl_surface_state.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index 5845175de34..da1544b7921 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -313,10 +313,14 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
* Since it's already initialized to 0, we can just leave it alone for
* texture surfaces.
*/
- if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
- ISL_SURF_USAGE_STORAGE_BIT)) {
+ if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) {
s.MinimumArrayElement = info->view->base_array_layer;
s.RenderTargetViewExtent = info->view->array_len - 1;
+ } else if (info->view->usage & ISL_SURF_USAGE_STORAGE_BIT) {
+ s.MinimumArrayElement = 0;
+ s.RenderTargetViewExtent =
+ isl_minify(info->surf->logical_level0_px.depth,
+ info->view->base_level) - 1;
}
break;
default: