const float t[TGSI_QUAD_SIZE],
const float p[TGSI_QUAD_SIZE]);
+typedef float (*compute_lambda_from_grad_func)(const struct sp_sampler_view *sp_sview,
+ const float derivs[3][2][TGSI_QUAD_SIZE],
+ uint quad);
+
struct img_filter_args {
float s;
float t;
int gather_comp;
};
-typedef void (*img_filter_func)(struct sp_sampler_view *sp_sview,
- struct sp_sampler *sp_samp,
+typedef void (*img_filter_func)(const struct sp_sampler_view *sp_sview,
+ const struct sp_sampler *sp_samp,
const struct img_filter_args *args,
float *rgba);
struct filter_args {
enum tgsi_sampler_control control;
const int8_t *offset;
- const float *faces;
+ const uint *faces;
};
-typedef void (*mip_filter_func)(struct sp_sampler_view *sp_sview,
- struct sp_sampler *sp_samp,
+typedef void (*mip_filter_func)(const struct sp_sampler_view *sp_sview,
+ const struct sp_sampler *sp_samp,
img_filter_func min_filter,
img_filter_func mag_filter,
const float s[TGSI_QUAD_SIZE],
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 *args,
float rgba[TGSI_NUM_CHANNELS][TGSI_QUAD_SIZE]);
-typedef void (*mip_level_func)(struct sp_sampler_view *sp_sview,
- struct sp_sampler *sp_samp,
+typedef void (*mip_level_func)(const struct sp_sampler_view *sp_sview,
+ const struct sp_sampler *sp_samp,
const float lod[TGSI_QUAD_SIZE],
float level[TGSI_QUAD_SIZE]);
/* these are different per shader type */
struct softpipe_tex_tile_cache *cache;
compute_lambda_func compute_lambda;
-
+ compute_lambda_from_grad_func compute_lambda_from_grad;
+ union pipe_color_union border_color;
};
struct sp_filter_funcs {
};
compute_lambda_func
-softpipe_get_lambda_func(const struct pipe_sampler_view *view, unsigned shader);
+softpipe_get_lambda_func(const struct pipe_sampler_view *view,
+ enum pipe_shader_type shader);
+compute_lambda_from_grad_func
+softpipe_get_lambda_from_grad_func(const struct pipe_sampler_view *view,
+ enum pipe_shader_type shader);
void *
softpipe_create_sampler_state(struct pipe_context *pipe,