radeonsi: automatically resize shader compiler thread queues when they are full
authorMarek Olšák <marek.olsak@amd.com>
Mon, 10 Jul 2017 20:16:26 +0000 (22:16 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 17 Jul 2017 14:57:29 +0000 (10:57 -0400)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_pipe.c

index e2ec37731f6504621ed1c06f86d87900214e2e58..4df60b698fec51b51a15b825194a84e3d7f3fb84 100644 (file)
@@ -961,21 +961,17 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
                MIN2(num_threads, ARRAY_SIZE(sscreen->tm_low_priority));
 
        if (!util_queue_init(&sscreen->shader_compiler_queue, "si_shader",
-                            32, num_compiler_threads, 0)) {
+                            32, num_compiler_threads,
+                            UTIL_QUEUE_INIT_RESIZE_IF_FULL)) {
                si_destroy_shader_cache(sscreen);
                FREE(sscreen);
                return NULL;
        }
 
-       /* The queue must be large enough so that adding optimized shaders
-        * doesn't stall draw calls when the queue is full. Especially varying
-        * packing generates a very high volume of optimized shader compilation
-        * jobs.
-        */
        if (!util_queue_init(&sscreen->shader_compiler_queue_low_priority,
                             "si_shader_low",
-                            1024, num_compiler_threads,
-                            UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY)) {
+                            32, num_compiler_threads,
+                            UTIL_QUEUE_INIT_RESIZE_IF_FULL)) {
               si_destroy_shader_cache(sscreen);
               FREE(sscreen);
               return NULL;