From 013ae4a70aeb40dc74e53943824bff33dda109e1 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Wed, 8 Jun 2016 17:53:24 -0700 Subject: [PATCH] i965: Fix scratch overallocation if the original slot size was already a power of two. 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: Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_context.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 4b22201..daa9ed2 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -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); -- 2.7.4