Mesa (master): iris: Only resolve for image levels/layers which are actually in use.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Sep 27 07:20:31 UTC 2019
Module: Mesa
Branch: master
Commit: 237c7636ca4c429d4dbfce95b6e3281a8309eac7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=237c7636ca4c429d4dbfce95b6e3281a8309eac7
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Sun Mar 10 21:30:28 2019 -0700
iris: Only resolve for image levels/layers which are actually in use.
There's no need to resolve everything.
---
src/gallium/drivers/iris/iris_resolve.c | 26 ++++++++++++--------------
src/gallium/drivers/iris/iris_resource.h | 3 ---
2 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c
index f2255e8f5fb..30aa87d7f6e 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -127,15 +127,24 @@ resolve_image_views(struct iris_context *ice,
while (views) {
const int i = u_bit_scan(&views);
- struct iris_resource *res = (void *) shs->image[i].base.resource;
+ struct pipe_image_view *pview = &shs->image[i].base;
+ struct iris_resource *res = (void *) pview->resource;
if (res->base.target != PIPE_BUFFER) {
if (consider_framebuffer) {
disable_rb_aux_buffer(ice, draw_aux_buffer_disabled,
- res, 0, ~0, "as a shader image");
+ res, pview->u.tex.level, 1,
+ "as a shader image");
}
- iris_resource_prepare_image(ice, batch, res);
+ unsigned num_layers =
+ pview->u.tex.last_layer - pview->u.tex.first_layer + 1;
+
+ /* The data port doesn't understand any compression */
+ iris_resource_prepare_access(ice, batch, res,
+ pview->u.tex.level, 1,
+ pview->u.tex.first_layer, num_layers,
+ ISL_AUX_USAGE_NONE, false);
}
iris_cache_flush_for_read(batch, res->bo);
@@ -1398,17 +1407,6 @@ iris_resource_prepare_texture(struct iris_context *ice,
aux_usage, clear_supported);
}
-void
-iris_resource_prepare_image(struct iris_context *ice,
- struct iris_batch *batch,
- struct iris_resource *res)
-{
- /* The data port doesn't understand any compression */
- iris_resource_prepare_access(ice, batch, res, 0, INTEL_REMAINING_LEVELS,
- 0, INTEL_REMAINING_LAYERS,
- ISL_AUX_USAGE_NONE, false);
-}
-
enum isl_aux_usage
iris_resource_render_aux_usage(struct iris_context *ice,
struct iris_resource *res,
diff --git a/src/gallium/drivers/iris/iris_resource.h b/src/gallium/drivers/iris/iris_resource.h
index 826c959eb46..806fe34d631 100644
--- a/src/gallium/drivers/iris/iris_resource.h
+++ b/src/gallium/drivers/iris/iris_resource.h
@@ -421,9 +421,6 @@ void iris_resource_prepare_texture(struct iris_context *ice,
uint32_t start_level, uint32_t num_levels,
uint32_t start_layer, uint32_t num_layers,
enum gen9_astc5x5_wa_tex_type);
-void iris_resource_prepare_image(struct iris_context *ice,
- struct iris_batch *batch,
- struct iris_resource *res);
static inline bool
iris_resource_unfinished_aux_import(struct iris_resource *res)
More information about the mesa-commit
mailing list