Replaces an iterate and test bit in a bitmask loop by a
loop only iterating over the bits set in the bitmask.
v2: Use _mesa_bit_scan{,64} instead of open coding.
v3: Use u_bit_scan{,64} instead of _mesa_bit_scan{,64}.
Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
#include "compiler/glsl/glsl_parser_extras.h"
#include "compiler/glsl/program.h"
#include "program/hash_table.h"
+#include "util/bitscan.h"
extern "C" void GLAPIENTRY
* been modified.
*/
bool changed = false;
- for (unsigned j = 0; j < ARRAY_SIZE(prog->SamplerUnits); j++) {
- if ((sh->active_samplers & (1U << j)) != 0
- && (prog->SamplerUnits[j] != sh->SamplerUnits[j])) {
+ GLbitfield mask = sh->active_samplers;
+ while (mask) {
+ const int j = u_bit_scan(&mask);
+ if (prog->SamplerUnits[j] != sh->SamplerUnits[j]) {
changed = true;
break;
}