anv: Properly size the push constant L3 area.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 23 Feb 2016 01:26:15 +0000 (17:26 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 24 Feb 2016 19:13:08 +0000 (11:13 -0800)
We were assuming it was 32kB everywhere, reducing the available URB
space.  It's actually 16kB on Ivybridge, Baytrail, and Haswell GT1-2.

src/intel/vulkan/anv_pipeline.c

index 672640ac24ccd841be66512bba91bad93d43c608..6c8d4add6e8efc1a2fe7c1f024e8229e9813c50c 100644 (file)
@@ -755,8 +755,6 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,
    return VK_SUCCESS;
 }
 
-static const int gen8_push_size = 32 * 1024;
-
 static void
 gen7_compute_urb_partition(struct anv_pipeline *pipeline)
 {
@@ -785,7 +783,14 @@ gen7_compute_urb_partition(struct anv_pipeline *pipeline)
    unsigned urb_chunks = devinfo->urb.size * 1024 / chunk_size_bytes;
 
    /* Reserve space for push constants */
-   unsigned push_constant_bytes = gen8_push_size;
+#if GEN_GEN >= 8
+   unsigned push_constant_kb = 32;
+#elif GEN_IS_HASWELL
+   unsigned push_constant_kb = pipeline->device->info.gt == 3 ? 32 : 16;
+#else
+   unsigned push_constant_kb = 16;
+#endif
+   unsigned push_constant_bytes = push_constant_kb * 1024;
    unsigned push_constant_chunks =
       push_constant_bytes / chunk_size_bytes;