X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fdrivers%2Fsvga%2Fsvga_pipe_sampler.c;h=effd490dd22d2c09ce46cac8d6353a3f9b474799;hb=de59a40f6898e20a61ac4ea0e5995334f6ed2932;hp=0d2745e25eff9ed3e649699bec0e912bb2464c0c;hpb=bd3733c0be174f947dd729e5fd987ea3a9566c27;p=mesa.git diff --git a/src/gallium/drivers/svga/svga_pipe_sampler.c b/src/gallium/drivers/svga/svga_pipe_sampler.c index 0d2745e25ef..effd490dd22 100644 --- a/src/gallium/drivers/svga/svga_pipe_sampler.c +++ b/src/gallium/drivers/svga/svga_pipe_sampler.c @@ -35,7 +35,7 @@ #include "svga_debug.h" -static INLINE unsigned +static inline unsigned translate_wrap_mode(unsigned wrap) { switch (wrap) { @@ -68,7 +68,7 @@ translate_wrap_mode(unsigned wrap) } } -static INLINE unsigned translate_img_filter( unsigned filter ) +static inline unsigned translate_img_filter( unsigned filter ) { switch (filter) { case PIPE_TEX_FILTER_NEAREST: return SVGA3D_TEX_FILTER_NEAREST; @@ -79,7 +79,7 @@ static INLINE unsigned translate_img_filter( unsigned filter ) } } -static INLINE unsigned translate_mip_filter( unsigned filter ) +static inline unsigned translate_mip_filter( unsigned filter ) { switch (filter) { case PIPE_TEX_MIPFILTER_NONE: return SVGA3D_TEX_FILTER_NONE; @@ -98,6 +98,9 @@ svga_create_sampler_state(struct pipe_context *pipe, struct svga_context *svga = svga_context(pipe); struct svga_sampler_state *cso = CALLOC_STRUCT( svga_sampler_state ); + if (!cso) + return NULL; + cso->mipfilter = translate_mip_filter(sampler->min_mip_filter); cso->magfilter = translate_img_filter( sampler->mag_img_filter ); cso->minfilter = translate_img_filter( sampler->min_img_filter ); @@ -162,17 +165,10 @@ svga_bind_sampler_states(struct pipe_context *pipe, if (shader != PIPE_SHADER_FRAGMENT) return; - /* Check for no-op */ - if (start + num <= svga->curr.num_samplers && - !memcmp(svga->curr.sampler + start, samplers, num * sizeof(void *))) { - if (0) debug_printf("sampler noop\n"); - return; - } - for (i = 0; i < num; i++) svga->curr.sampler[start + i] = samplers[i]; - /* find highest non-null sampler_views[] entry */ + /* find highest non-null sampler[] entry */ { unsigned j = MAX2(svga->curr.num_samplers, start + num); while (j > 0 && svga->curr.sampler[j - 1] == NULL) @@ -184,14 +180,6 @@ svga_bind_sampler_states(struct pipe_context *pipe, } -static void -svga_bind_fragment_sampler_states(struct pipe_context *pipe, - unsigned num, void **sampler) -{ - svga_bind_sampler_states(pipe, PIPE_SHADER_FRAGMENT, 0, num, sampler); -} - - static void svga_delete_sampler_state(struct pipe_context *pipe, void *sampler) { @@ -245,14 +233,6 @@ svga_set_sampler_views(struct pipe_context *pipe, if (shader != PIPE_SHADER_FRAGMENT) return; - /* Check for no-op */ - if (start + num <= svga->curr.num_sampler_views && - !memcmp(svga->curr.sampler_views + start, views, - num * sizeof(struct pipe_sampler_view *))) { - if (0) debug_printf("texture noop\n"); - return; - } - for (i = 0; i < num; i++) { if (svga->curr.sampler_views[start + i] != views[i]) { /* Note: we're using pipe_sampler_view_release() here to work around @@ -294,21 +274,12 @@ svga_set_sampler_views(struct pipe_context *pipe, } -static void -svga_set_fragment_sampler_views(struct pipe_context *pipe, - unsigned num, - struct pipe_sampler_view **views) -{ - svga_set_sampler_views(pipe, PIPE_SHADER_FRAGMENT, 0, num, views); -} - - void svga_init_sampler_functions( struct svga_context *svga ) { svga->pipe.create_sampler_state = svga_create_sampler_state; - svga->pipe.bind_fragment_sampler_states = svga_bind_fragment_sampler_states; + svga->pipe.bind_sampler_states = svga_bind_sampler_states; svga->pipe.delete_sampler_state = svga_delete_sampler_state; - svga->pipe.set_fragment_sampler_views = svga_set_fragment_sampler_views; + svga->pipe.set_sampler_views = svga_set_sampler_views; svga->pipe.create_sampler_view = svga_create_sampler_view; svga->pipe.sampler_view_destroy = svga_sampler_view_destroy; }