v3dv: handle multisample resolve of integer formats

The multisample resolve of an integer framebuffer should just take one
of the samples instead of averaging.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index 13cda18..1e55431 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -3150,16 +3150,26 @@
    sampler->data.descriptor_set = 0;
    sampler->data.binding = 0;
 
+   const bool is_int = glsl_base_type_is_integer(tex_type);
+
    nir_ssa_def *tmp;
    nir_ssa_def *tex_deref = &nir_build_deref_var(b, sampler)->dest.ssa;
    for (uint32_t i = 0; i < src_samples; i++) {
       nir_ssa_def *s =
          build_nir_tex_op_ms_fetch_sample(b, sampler, tex_deref,
-                                         tex_type, tex_pos,
-                                         nir_imm_int(b, i));
+                                          tex_type, tex_pos,
+                                          nir_imm_int(b, i));
+
+      /* For integer formats, the multisample resolve operation is expected to
+       * return one of the samples, we just return the first one.
+       */
+      if (is_int)
+         return s;
+
       tmp = i == 0 ? s : nir_fadd(b, tmp, s);
    }
 
+   assert(!is_int);
    return nir_fmul(b, tmp, nir_imm_float(b, 1.0f / src_samples));
 }