static void etna_pipe_set_sampler_views(struct pipe_context *pipe, unsigned shader, unsigned start_slot, unsigned num_views, struct pipe_sampler_view **info) { /* fragment sampler */ struct etna_pipe_context *priv = etna_pipe_context(pipe); unsigned idx; priv->dirty_bits |= ETNA_STATE_SAMPLER_VIEWS; priv->num_fragment_sampler_views = num_views; for(idx=0; idx<num_views; ++idx) { pipe_sampler_view_reference(&priv->sampler_view_s[idx], info[idx]); if(info[idx]) priv->sampler_view[idx] = *etna_sampler_view(info[idx])->internal; } for(; idx<priv->specs.fragment_sampler_count; ++idx) { pipe_sampler_view_reference(&priv->sampler_view_s[idx], NULL); } /* vertex sampler */ unsigned offset = priv->specs.vertex_sampler_offset; for(idx=0; idx<num_views; ++idx) { pipe_sampler_view_reference(&priv->sampler_view_s[offset + idx], info[idx]); if(info[idx]) priv->sampler_view[offset + idx] = *etna_sampler_view(info[idx])->internal; } for(; idx<priv->specs.vertex_sampler_count; ++idx) { pipe_sampler_view_reference(&priv->sampler_view_s[offset + idx], NULL); } }
static void etna_pipe_sampler_view_destroy(struct pipe_context *pipe, struct pipe_sampler_view *view) { //struct etna_pipe_context *priv = etna_pipe_context(pipe); pipe_resource_reference(&view->texture, NULL); FREE(etna_sampler_view(view)->internal); FREE(view); }