anv: pipeline: use correct number of thread for compute
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 7 Sep 2016 16:28:44 +0000 (17:28 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 21 Sep 2016 09:01:06 +0000 (12:01 +0300)
Reproduces this commit :

commit 0fb85ac08d61d365e67c8f79d6955e9f89543560
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Mon Jun 6 21:37:34 2016 -0700

    i965: Use the correct number of threads for compute shaders.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/vulkan/genX_pipeline.c

index 3ecc29e953b6f4e29c67819409c7bf6f51e9d579..e1929da25ffb905fc833d9544c2adb455a6bd7c7 100644 (file)
@@ -104,6 +104,8 @@ genX(compute_pipeline_create)(
       ALIGN(cs_prog_data->push.per_thread.regs * cs_prog_data->threads +
             cs_prog_data->push.cross_thread.regs, 2);
 
+   const uint32_t subslices = MAX2(physical_device->subslice_total, 1);
+
    anv_batch_emit(&pipeline->batch, GENX(MEDIA_VFE_STATE), vfe) {
       vfe.ScratchSpaceBasePointer = (struct anv_address) {
          .bo = anv_scratch_pool_alloc(device, &device->scratch_pool,
@@ -117,7 +119,8 @@ genX(compute_pipeline_create)(
 #else
       vfe.GPGPUMode              = true;
 #endif
-      vfe.MaximumNumberofThreads = physical_device->max_cs_threads - 1;
+      vfe.MaximumNumberofThreads =
+         physical_device->max_cs_threads * subslices - 1;
       vfe.NumberofURBEntries     = GEN_GEN <= 7 ? 0 : 2;
       vfe.ResetGatewayTimer      = true;
 #if GEN_GEN <= 8