iris: always pin the binder...in the compute context, too.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 12 Dec 2018 06:46:40 +0000 (22:46 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:11 +0000 (10:26 -0800)
not sure why this hasn't tripped things up

src/gallium/drivers/iris/iris_state.c

index e08f90973f70121eb4b0c87512ac235c333a8019..e4e42f50d8268525c118cb8b317938e315e48484 100644 (file)
@@ -4663,6 +4663,13 @@ iris_upload_compute_state(struct iris_context *ice,
    struct brw_stage_prog_data *prog_data = shader->prog_data;
    struct brw_cs_prog_data *cs_prog_data = (void *) prog_data;
 
+   /* Always pin the binder.  If we're emitting new binding table pointers,
+    * we need it.  If not, we're probably inheriting old tables via the
+    * context, and need it anyway.  Since true zero-bindings cases are
+    * practically non-existent, just pin it and avoid last_res tracking.
+    */
+   iris_use_pinned_bo(batch, ice->state.binder.bo, false);
+
    if ((dirty & IRIS_DIRTY_CONSTANTS_CS) && shs->cbuf0_needs_upload)
       upload_uniforms(ice, MESA_SHADER_COMPUTE);