12855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark/* -*- mode: C; c-file-style: "k&r"; tab-width 4; indent-tabs-mode: t; -*- */ 22855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 32855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark/* 42855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Copyright (C) 2013 Rob Clark <robclark@freedesktop.org> 52855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * 62855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Permission is hereby granted, free of charge, to any person obtaining a 72855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * copy of this software and associated documentation files (the "Software"), 82855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * to deal in the Software without restriction, including without limitation 92855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * the rights to use, copy, modify, merge, publish, distribute, sublicense, 102855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * and/or sell copies of the Software, and to permit persons to whom the 112855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Software is furnished to do so, subject to the following conditions: 122855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * 132855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * The above copyright notice and this permission notice (including the next 142855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * paragraph) shall be included in all copies or substantial portions of the 152855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Software. 162855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * 172855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 182855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 192855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 202855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 212855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 222855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 232855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * SOFTWARE. 242855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * 252855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Authors: 262855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark * Rob Clark <robclark@freedesktop.org> 272855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark */ 282855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 292855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#ifndef FD3_TEXTURE_H_ 302855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#define FD3_TEXTURE_H_ 312855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 322855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#include "pipe/p_context.h" 332855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 342855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#include "freedreno_texture.h" 352855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#include "freedreno_resource.h" 362855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 372855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#include "fd3_context.h" 383338bfcf498aa93a256aaadaee25951d4864f78fIlia Mirkin#include "fd3_format.h" 392855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 402855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkstruct fd3_sampler_stateobj { 412855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark struct pipe_sampler_state base; 422855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark uint32_t texsamp0, texsamp1; 437cdd4679943a72b97aad1c584da4bcb0e1f003f2Rob Clark bool saturate_s, saturate_t, saturate_r; 4418fb922faab145ea88533405bb64ed398c0e0138Rob Clark bool needs_border; 452855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark}; 462855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 47a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9Ilia Mirkinstatic inline struct fd3_sampler_stateobj * 482855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkfd3_sampler_stateobj(struct pipe_sampler_state *samp) 492855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark{ 502855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark return (struct fd3_sampler_stateobj *)samp; 512855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark} 522855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 532855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkstruct fd3_pipe_sampler_view { 542855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark struct pipe_sampler_view base; 552855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark uint32_t texconst0, texconst1, texconst2, texconst3; 562855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark}; 572855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 58a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9Ilia Mirkinstatic inline struct fd3_pipe_sampler_view * 592855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkfd3_pipe_sampler_view(struct pipe_sampler_view *pview) 602855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark{ 612855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark return (struct fd3_pipe_sampler_view *)pview; 622855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark} 632855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 642855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkunsigned fd3_get_const_idx(struct fd_context *ctx, 652855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark struct fd_texture_stateobj *tex, unsigned samp_id); 662855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 672855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clarkvoid fd3_texture_init(struct pipe_context *pctx); 682855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark 692855f3f7bcd9b36a275e942c9c7d0eb8e485c16fRob Clark#endif /* FD3_TEXTURE_H_ */ 70