mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
mesa: Use bitmask/ffs to iterate the active_samplers bitmask.
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>
This commit is contained in:
parent
34f741b080
commit
22e5d4a1ee
1 changed files with 5 additions and 3 deletions
|
|
@ -36,6 +36,7 @@
|
|||
#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
|
||||
|
|
@ -843,9 +844,10 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
|
|||
* 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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue