summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/iris
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/iris')
-rw-r--r--src/gallium/drivers/iris/iris_resolve.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c
index db82afb3530..ac2676cce0d 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -83,10 +83,11 @@ static void
resolve_sampler_views(struct iris_context *ice,
struct iris_batch *batch,
struct iris_shader_state *shs,
+ const struct shader_info *info,
bool *draw_aux_buffer_disabled,
bool consider_framebuffer)
{
- uint32_t views = shs->bound_sampler_views;
+ uint32_t views = info ? (shs->bound_sampler_views & info->textures_used) : 0;
unsigned astc5x5_wa_bits = 0; // XXX: actual tracking
@@ -120,6 +121,7 @@ resolve_image_views(struct iris_context *ice,
bool *draw_aux_buffer_disabled,
bool consider_framebuffer)
{
+ /* TODO: Consider images used by program */
uint32_t views = shs->bound_image_views;
while (views) {
@@ -154,12 +156,13 @@ iris_predraw_resolve_inputs(struct iris_context *ice,
bool consider_framebuffer)
{
struct iris_shader_state *shs = &ice->state.shaders[stage];
+ const struct shader_info *info = iris_get_shader_info(ice, stage);
uint64_t dirty = (IRIS_DIRTY_BINDINGS_VS << stage) |
(consider_framebuffer ? IRIS_DIRTY_BINDINGS_FS : 0);
if (ice->state.dirty & dirty) {
- resolve_sampler_views(ice, batch, shs, draw_aux_buffer_disabled,
+ resolve_sampler_views(ice, batch, shs, info, draw_aux_buffer_disabled,
consider_framebuffer);
resolve_image_views(ice, batch, shs, draw_aux_buffer_disabled,
consider_framebuffer);