From: Andre Maasikas Date: Tue, 14 Sep 2010 15:56:39 +0000 (+0300) Subject: r600c: fix setting negative values to bitfields X-Git-Tag: 062012170305~9567 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b0bc026c12042405357ae65585812ca11786837f;p=profile%2Fivi%2Fmesa.git r600c: fix setting negative values to bitfields when setting negative integers to bitfields we could overwrite other parts of it. So mask the value to be written correctly. This is used quite often in the driver - hope it doesnt affect performace or uncover behaviour relied before... fixes strange effects when setting negative lodbias on evergreen --- diff --git a/src/mesa/drivers/dri/r600/r700_chip.h b/src/mesa/drivers/dri/r600/r700_chip.h index ebf1840..0ca237b 100644 --- a/src/mesa/drivers/dri/r600/r700_chip.h +++ b/src/mesa/drivers/dri/r600/r700_chip.h @@ -38,7 +38,7 @@ #include "r700_chipoffset.h" -#define SETfield(x, val, shift, mask) ( (x) = ((x) & ~(mask)) | ((val) << (shift)) ) /* u32All */ +#define SETfield(x, val, shift, mask) ( (x) = ((x) & ~(mask)) | (((val) << (shift)) & (mask)) )/* u32All */ #define CLEARfield(x, mask) ( (x) &= ~(mask) ) #define SETbit(x, bit) ( (x) |= (bit) ) #define CLEARbit(x, bit) ( (x) &= ~(bit) )