summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/iris/iris_context.h3
-rw-r--r--src/gallium/drivers/iris/iris_draw.c2
-rw-r--r--src/gallium/drivers/iris/iris_resolve.c17
3 files changed, 13 insertions, 9 deletions
diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h
index 1f8e000bd67..4fa48abb457 100644
--- a/src/gallium/drivers/iris/iris_context.h
+++ b/src/gallium/drivers/iris/iris_context.h
@@ -706,7 +706,8 @@ uint64_t iris_timebase_scale(const struct gen_device_info *devinfo,
void iris_predraw_resolve_inputs(struct iris_context *ice,
struct iris_batch *batch,
struct iris_shader_state *shs,
- bool *draw_aux_buffer_disabled);
+ bool *draw_aux_buffer_disabled,
+ bool consider_framebuffer);
void iris_predraw_resolve_framebuffer(struct iris_context *ice,
struct iris_batch *batch,
bool *draw_aux_buffer_disabled);
diff --git a/src/gallium/drivers/iris/iris_draw.c b/src/gallium/drivers/iris/iris_draw.c
index 5ccef66ea91..4d2ea3a03e8 100644
--- a/src/gallium/drivers/iris/iris_draw.c
+++ b/src/gallium/drivers/iris/iris_draw.c
@@ -103,7 +103,7 @@ iris_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
for (gl_shader_stage stage = 0; stage < MESA_SHADER_COMPUTE; stage++) {
if (ice->shaders.prog[stage])
iris_predraw_resolve_inputs(ice,batch, &ice->state.shaders[stage],
- draw_aux_buffer_disabled);
+ draw_aux_buffer_disabled, true);
}
iris_predraw_resolve_framebuffer(ice, batch, draw_aux_buffer_disabled);
diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c
index eb8552a3aca..4c3b1bdfabb 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -83,7 +83,8 @@ static void
resolve_sampler_views(struct iris_context *ice,
struct iris_batch *batch,
struct iris_shader_state *shs,
- bool *draw_aux_buffer_disabled)
+ bool *draw_aux_buffer_disabled,
+ bool consider_framebuffer)
{
uint32_t views = shs->bound_sampler_views;
@@ -97,7 +98,7 @@ resolve_sampler_views(struct iris_context *ice,
if (res->base.target == PIPE_BUFFER)
continue;
- if (batch->name != IRIS_BATCH_COMPUTE) {
+ if (consider_framebuffer) {
disable_rb_aux_buffer(ice, draw_aux_buffer_disabled,
res, isv->view.base_level, isv->view.levels,
"for sampling");
@@ -117,7 +118,8 @@ static void
resolve_image_views(struct iris_context *ice,
struct iris_batch *batch,
struct iris_shader_state *shs,
- bool *draw_aux_buffer_disabled)
+ bool *draw_aux_buffer_disabled,
+ bool consider_framebuffer)
{
uint32_t views = shs->bound_image_views;
@@ -128,7 +130,7 @@ resolve_image_views(struct iris_context *ice,
if (res->base.target == PIPE_BUFFER)
continue;
- if (batch->name != IRIS_BATCH_COMPUTE) {
+ if (consider_framebuffer) {
disable_rb_aux_buffer(ice, draw_aux_buffer_disabled,
res, 0, ~0, "as a shader image");
}
@@ -150,10 +152,11 @@ void
iris_predraw_resolve_inputs(struct iris_context *ice,
struct iris_batch *batch,
struct iris_shader_state *shs,
- bool *draw_aux_buffer_disabled)
+ bool *draw_aux_buffer_disabled,
+ bool consider_framebuffer)
{
- resolve_sampler_views(ice, batch, shs, draw_aux_buffer_disabled);
- resolve_image_views(ice, batch, shs, draw_aux_buffer_disabled);
+ resolve_sampler_views(ice, batch, shs, draw_aux_buffer_disabled, consider_framebuffer);
+ resolve_image_views(ice, batch, shs, draw_aux_buffer_disabled, consider_framebuffer);
// XXX: ASTC hacks
}