anv/pipeline: Set the correct binding count for compute shaders
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 13 Feb 2018 03:34:48 +0000 (19:34 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 12 Dec 2018 14:32:25 +0000 (08:32 -0600)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/vulkan/genX_pipeline.c

index cf15e79db518e7c976116215454ddd5aa31eafad..629df477e735195086978f7dcf67571030523956 100644 (file)
@@ -1956,8 +1956,12 @@ compute_pipeline_create(
       .KernelStartPointer     = cs_bin->kernel.offset,
       /* WA_1606682166 */
       .SamplerCount           = GEN_GEN == 11 ? 0 : get_sampler_count(cs_bin),
-      /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */
-      .BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(cs_bin),
+      /* Gen 11 workarounds table #2056 WABTPPrefetchDisable
+       *
+       * We add 1 because the CS indirect parameters buffer isn't accounted
+       * for in bind_map.surface_count.
+       */
+      .BindingTableEntryCount = GEN_GEN == 11 ? 0 : 1 + MIN2(cs_bin->bind_map.surface_count, 30),
       .BarrierEnable          = cs_prog_data->uses_barrier,
       .SharedLocalMemorySize  =
          encode_slm_size(GEN_GEN, cs_prog_data->base.total_shared),