i965: Fix a mistake from porting the URB allocation code to arrays.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 23 Nov 2016 20:24:22 +0000 (12:24 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 24 Nov 2016 00:57:29 +0000 (16:57 -0800)
Commit 6d416bcd846a49414f210cd761789156c37a7b3e (i965: Use arrays in
Gen7+ URB code.) introduced a regression which caused us to fail to
allocate all of our URB space.

   -         total_wants -= ds_wants;
   +         total_wants -= additional;

The new line should have been total_wants -= wants[i].

Fixes a large performance regression in TessMark.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98815
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/intel/common/gen_urb_config.c

index c925a0dbb3647bd65b50c890bf10f51c38d3070c..937163b50b0acbbf8c13208ce58467164258caaa 100644 (file)
@@ -160,7 +160,7 @@ gen_get_urb_config(const struct gen_device_info *devinfo,
             roundf(wants[i] * (((float) remaining_space) / total_wants));
          chunks[i] += additional;
          remaining_space -= additional;
-         total_wants -= additional;
+         total_wants -= wants[i];
       }
 
       chunks[MESA_SHADER_GEOMETRY] += remaining_space;