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:
parent
6e25a5a375
commit
bc1ac7dc3f
|
@ -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
|
void
|
||||||
lp_build_img_op_soa(const struct lp_static_texture_state *static_texture_state,
|
lp_build_img_op_soa(const struct lp_static_texture_state *static_texture_state,
|
||||||
struct lp_sampler_dynamic_state *dynamic_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));
|
ms_index));
|
||||||
}
|
}
|
||||||
if (params->img_op == LP_IMG_LOAD) {
|
if (params->img_op == LP_IMG_LOAD) {
|
||||||
struct lp_type texel_type = params->type;
|
struct lp_type texel_type = lp_build_img_texel_type(gallivm, params->type, 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(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
offset = lp_build_andnot(&int_coord_bld, offset, out_of_bounds);
|
offset = lp_build_andnot(&int_coord_bld, offset, out_of_bounds);
|
||||||
struct lp_build_context texel_bld;
|
struct lp_build_context texel_bld;
|
||||||
|
|
Loading…
Reference in New Issue