gallivm/img: refactor out the texel return type (v2)

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>
This commit is contained in:
Dave Airlie 2020-06-16 17:18:36 +10:00 committed by Marge Bot
parent 6e25a5a375
commit bc1ac7dc3f
1 changed files with 17 additions and 9 deletions

View 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;