gallivm/img: refactor out the texel return type (v2)
authorDave Airlie <airlied@redhat.com>
Tue, 16 Jun 2020 07:18:36 +0000 (17:18 +1000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 2 Jul 2020 04:12:17 +0000 (04:12 +0000)
v2:
refactor to just pass type as pointed out by Roland.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3778>

src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c

index a852490f041da9fc8dd49bd461ef9dbac6edaf90..b6af6015d803661d367febcc9d1f2b25eaeb5e88 100644 (file)
@@ -4110,6 +4110,22 @@ lp_build_img_op_no_format(struct gallivm_state *gallivm,
    }
 }
 
+static struct lp_type
+lp_build_img_texel_type(struct gallivm_state *gallivm,
+                        struct lp_type texel_type,
+                        const struct util_format_description *format_desc)
+{
+   if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB &&
+       format_desc->channel[0].pure_integer) {
+      if (format_desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
+         texel_type = lp_type_int_vec(texel_type.width, texel_type.width * texel_type.length);
+      } else if (format_desc->channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED) {
+         texel_type = lp_type_uint_vec(texel_type.width, texel_type.width * texel_type.length);
+      }
+   }
+   return texel_type;
+}
+
 void
 lp_build_img_op_soa(const struct lp_static_texture_state *static_texture_state,
                     struct lp_sampler_dynamic_state *dynamic_state,
@@ -4196,15 +4212,7 @@ lp_build_img_op_soa(const struct lp_static_texture_state *static_texture_state,
                                          ms_index));
    }
    if (params->img_op == LP_IMG_LOAD) {
-      struct lp_type texel_type = params->type;
-      if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB &&
-          format_desc->channel[0].pure_integer) {
-         if (format_desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
-            texel_type = lp_type_int_vec(params->type.width, params->type.width * params->type.length);
-         } else if (format_desc->channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED) {
-            texel_type = lp_type_uint_vec(params->type.width, params->type.width * params->type.length);
-         }
-      }
+      struct lp_type texel_type = lp_build_img_texel_type(gallivm, params->type, format_desc);
 
       offset = lp_build_andnot(&int_coord_bld, offset, out_of_bounds);
       struct lp_build_context texel_bld;