ir3: Don't calculate num_samp ourselves
authorConnor Abbott <cwabbott0@gmail.com>
Wed, 17 Jun 2020 09:07:26 +0000 (11:07 +0200)
committerMarge Bot <eric+marge@anholt.net>
Wed, 17 Jun 2020 14:36:50 +0000 (14:36 +0000)
In addition to duplicating what core NIR does better, this was wrong for
Vulkan, where it should be 0 as there are no non-bindless samplers.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5519>

src/freedreno/ir3/ir3_compiler_nir.c

index f52e9570b654c4ee36d9e1a69726d25062613596..1ad4149d4517a109450b30e83dc86e11aed4fc19 100644 (file)
@@ -3317,15 +3317,11 @@ emit_instructions(struct ir3_context *ctx)
                setup_output(ctx, var);
        }
 
-       /* Find # of samplers: */
-       nir_foreach_variable (var, &ctx->s->uniforms) {
-               ctx->so->num_samp += glsl_type_get_sampler_count(var->type);
-               /* just assume that we'll be reading from images.. if it
-                * is write-only we don't have to count it, but not sure
-                * if there is a good way to know?
-                */
-               ctx->so->num_samp += glsl_type_get_image_count(var->type);
-       }
+       /* Find # of samplers. Just assume that we'll be reading from images.. if
+        * it is write-only we don't have to count it, but after lowering derefs
+        * is too late to compact indices for that.
+        */
+       ctx->so->num_samp = util_last_bit(ctx->s->info.textures_used) + ctx->s->info.num_images;
 
        /* NOTE: need to do something more clever when we support >1 fxn */
        nir_foreach_register (reg, &fxn->registers) {