const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ int gather_comp,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
args.offset = filt_args->offset;
args.gather_only = filt_args->control == TGSI_SAMPLER_GATHER;
- args.gather_comp = get_gather_component(lod_in);
+ args.gather_comp = gather_comp;
for (j = 0; j < TGSI_QUAD_SIZE; j++) {
const int level0 = psview->u.tex.first_level + (int)lod[j];
const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ int gather_component,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
args.offset = filt_args->offset;
args.gather_only = filt_args->control == TGSI_SAMPLER_GATHER;
- args.gather_comp = get_gather_component(lod_in);
+ args.gather_comp = gather_component;
compute_lambda_lod(sp_sview, sp_samp, s, t, p, lod_in, filt_args->control, lod);
const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ int gather_component,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
args.level = sp_sview->base.u.tex.first_level;
args.offset = filt_args->offset;
args.gather_only = filt_args->control == TGSI_SAMPLER_GATHER;
+ args.gather_comp = gather_component;
compute_lambda_lod(sp_sview, sp_samp, s, t, p, lod_in, filt_args->control, lod);
const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ int gather_comp,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
args.level = sp_sview->base.u.tex.first_level;
args.offset = filt_args->offset;
args.gather_only = filt_args->control == TGSI_SAMPLER_GATHER;
+ args.gather_comp = gather_comp;
for (j = 0; j < TGSI_QUAD_SIZE; j++) {
args.s = s[j];
args.t = t[j];
const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ UNUSED int gather_comp,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
const float s[TGSI_QUAD_SIZE],
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
+ int gather_comp,
const float c0[TGSI_QUAD_SIZE],
const float lod_in[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
args.face_id = filt_args->faces[j];
args.offset = filt_args->offset;
args.gather_only = filt_args->control == TGSI_SAMPLER_GATHER;
+ args.gather_comp = gather_comp;
if ((unsigned)level0 >= psview->u.tex.last_level) {
if (level0 < 0)
args.level = psview->u.tex.first_level;
const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE],
const float c0[TGSI_QUAD_SIZE],
+ int gather_comp,
const float lod[TGSI_QUAD_SIZE],
const struct filter_args *filt_args,
float rgba[TGSI_NUM_CHANNELS][TGSI_QUAD_SIZE])
&funcs, &min_img_filter, &mag_img_filter);
funcs->filter(sp_sview, sp_samp, min_img_filter, mag_img_filter,
- s, t, p, c0, lod, filt_args, rgba);
+ s, t, p, gather_comp, c0, lod, filt_args, rgba);
if (sp_samp->base.compare_mode != PIPE_TEX_COMPARE_NONE) {
sample_compare(sp_sview, sp_samp, s, t, p, c0,
filt_args.control = control;
filt_args.offset = offset;
+ int gather_comp = get_gather_component(lod);
+
if (sp_sview->need_cube_convert) {
float cs[TGSI_QUAD_SIZE];
convert_cube(sp_sview, sp_samp, s, t, p, c0, cs, ct, cp, faces);
filt_args.faces = faces;
- sample_mip(sp_sview, sp_samp, cs, ct, cp, c0, lod, &filt_args, rgba);
+ sample_mip(sp_sview, sp_samp, cs, ct, cp, c0, gather_comp, lod, &filt_args, rgba);
} else {
static const uint zero_faces[TGSI_QUAD_SIZE] = {0, 0, 0, 0};
filt_args.faces = zero_faces;
- sample_mip(sp_sview, sp_samp, s, t, p, c0, lod, &filt_args, rgba);
+ sample_mip(sp_sview, sp_samp, s, t, p, c0, gather_comp, lod, &filt_args, rgba);
}
}