i965: Fix scratch overallocation if the original slot size was already a power of...
authorFrancisco Jerez <currojerez@riseup.net>
Thu, 9 Jun 2016 00:53:24 +0000 (17:53 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 13 Jun 2016 22:55:58 +0000 (15:55 -0700)
The bitwise arithmetic trick used in brw_get_scratch_size() to clamp
the scratch allocation to 1KB has the unintended side effect that it
will cause us to allocate 2x the required amount of scratch space if
the original per-thread scratch size happened to be already a power of
two.  Instead use the obvious MAX2 idiom to clamp the scratch
allocation to the expected range.

Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_context.h

index 4b2220126a1a2e04c9355dea26860fea02c014f9..daa9ed2c7e195200a32a4f7c1b22c3bf9048aa20 100644 (file)
@@ -1477,7 +1477,7 @@ void brwInitFragProgFuncs( struct dd_function_table *functions );
 static inline int
 brw_get_scratch_size(int size)
 {
-   return util_next_power_of_two(size | 1023);
+   return MAX2(1024, util_next_power_of_two(size));
 }
 void brw_get_scratch_bo(struct brw_context *brw,
                        drm_intel_bo **scratch_bo, int size);