Mesa (master): iris: Actually pin the scratch BO.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 11 22:03:39 UTC 2019


Module: Mesa
Branch: master
Commit: 4fcb749044c44a2d8d1908bfa0de2a0493502242
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4fcb749044c44a2d8d1908bfa0de2a0493502242

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Apr 11 11:51:26 2019 -0700

iris: Actually pin the scratch BO.

We were pinning it for compute shaders, and pinning it when restoring
saved buffers, but we never actually pinned it in the original batch
for VS/TCS/TES/GS/FS.

Fixes rendering in GFXBench5's Tessellation demo and a bunch of Piglit
geometry shader tests.

---

 src/gallium/drivers/iris/iris_state.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 381fae8c0ff..bf4fdcae1c9 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -4593,8 +4593,16 @@ iris_upload_dirty_render_state(struct iris_context *ice,
       struct iris_compiled_shader *shader = ice->shaders.prog[stage];
 
       if (shader) {
+         struct brw_stage_prog_data *prog_data = shader->prog_data;
          struct iris_resource *cache = (void *) shader->assembly.res;
          iris_use_pinned_bo(batch, cache->bo, false);
+
+         if (prog_data->total_scratch > 0) {
+            struct iris_bo *bo =
+               iris_get_scratch_space(ice, prog_data->total_scratch, stage);
+            iris_use_pinned_bo(batch, bo, true);
+         }
+
          iris_batch_emit(batch, shader->derived_data,
                          iris_derived_program_state_size(stage));
       } else {




More information about the mesa-commit mailing list