On 10.05.2017 03:01, Timothy Arceri wrote:
I made this same change a while back but found I couldn't really measure
any performance increase in practice. I suspect it's because we already
limit the max loops with (1 << s) <= prog[i]->SamplersUsed and there is
generally no big gaps in used samples.

Did you manage to measure any improvement here?

Curious about that as well, but regardless of the measurement I think it makes the code cleaner, so I'm in favor.

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>


On 10/05/17 07:33, Samuel Pitoiset wrote:
The check in update_single_program_texture() can also be
removed.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
  src/mesa/main/texstate.c | 13 +++++--------
  1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 830b230b5d..c11a2e95fe 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -620,9 +620,6 @@ update_single_program_texture(struct gl_context
*ctx, struct gl_program *prog,
     struct gl_sampler_object *sampler;
     int unit;
  -   if (!(prog->SamplersUsed & (1 << s)))
-      return NULL;
-
     unit = prog->SamplerUnits[s];
     texUnit = &ctx->Texture.Unit[unit];
  @@ -676,16 +673,16 @@ update_program_texture_state(struct gl_context
*ctx, struct gl_program **prog,
     int i;
       for (i = 0; i < MESA_SHADER_STAGES; i++) {
+      GLbitfield mask;
        int s;
          if (!prog[i])
           continue;
  -      /* We can't only do the shifting trick as the loop condition
because if
-       * sampler 31 is active, the next iteration tries to shift by
32, which is
-       * undefined.
-       */
-      for (s = 0; s < MAX_SAMPLERS && (1 << s) <=
prog[i]->SamplersUsed; s++) {
+      mask = prog[i]->SamplersUsed;
+
+      while (mask) {
+         const int s = u_bit_scan(&mask);
           struct gl_texture_object *texObj;
             texObj = update_single_program_texture(ctx, prog[i], s);

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to