16963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul/*
26963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * Copyright 2016 VMware, Inc.
36963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * All Rights Reserved.
46963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul *
56963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * Permission is hereby granted, free of charge, to any person obtaining a
66963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * copy of this software and associated documentation files (the
76963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * "Software"), to deal in the Software without restriction, including
86963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * without limitation the rights to use, copy, modify, merge, publish,
96963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * distribute, sub license, and/or sell copies of the Software, and to
106963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * permit persons to whom the Software is furnished to do so, subject to
116963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * the following conditions:
126963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul *
136963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * The above copyright notice and this permission notice (including the
146963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * next paragraph) shall be included in all copies or substantial portions
156963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * of the Software.
166963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul *
176963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
186963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
196963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
206963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
216963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
226963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
236963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
246963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul */
256963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
266963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
276963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#ifndef ST_SAMPLER_VIEW_H
286963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#define ST_SAMPLER_VIEW_H
296963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
306963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#include "pipe/p_compiler.h"
316963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#include "pipe/p_context.h"
326963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#include "pipe/p_state.h"
336963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#include "util/u_sampler.h"
346963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
356963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulstruct st_texture_object;
366963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
376963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
386963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulstatic inline struct pipe_sampler_view *
396963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_create_texture_sampler_view_format(struct pipe_context *pipe,
406963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                      struct pipe_resource *texture,
416963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                      enum pipe_format format)
426963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul{
436963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul   struct pipe_sampler_view templ;
446963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
456963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul   u_sampler_view_default_template(&templ, texture, format);
466963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
476963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul   return pipe->create_sampler_view(pipe, texture, &templ);
486963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul}
496963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
506963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
516963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulstatic inline struct pipe_sampler_view *
526963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_create_texture_sampler_view(struct pipe_context *pipe,
536963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                               struct pipe_resource *texture)
546963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul{
556963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul   return st_create_texture_sampler_view_format(pipe, texture,
566963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                                texture->format);
576963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul}
586963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
596963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
606963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulextern struct pipe_sampler_view **
616963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_texture_get_sampler_view(struct st_context *st,
626963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                            struct st_texture_object *stObj);
636963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
646963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulextern void
656963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_texture_release_sampler_view(struct st_context *st,
666963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                struct st_texture_object *stObj);
676963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
686963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulextern void
696963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_texture_release_all_sampler_views(struct st_context *st,
706963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                     struct st_texture_object *stObj);
716963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
726963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulvoid
736963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_texture_free_sampler_views(struct st_texture_object *stObj);
746963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
756963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
766963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulstruct pipe_sampler_view *
776963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paulst_get_texture_sampler_view_from_stobj(struct st_context *st,
786963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                       struct st_texture_object *stObj,
796963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                       const struct gl_sampler_object *samp,
806963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul                                       unsigned glsl_version);
816963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
826963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul
836963f94e98e9b0a1432bc0071d495c9e31b899aeBrian Paul#endif /* ST_SAMPLER_VIEW_H */
84