1/************************************************************************** 2 * 3 * Copyright 2007 VMware, Inc. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28#ifndef TGSI_UTIL_H 29#define TGSI_UTIL_H 30 31#include <stdbool.h> 32#include "pipe/p_shader_tokens.h" 33 34#if defined __cplusplus 35extern "C" { 36#endif 37 38struct tgsi_src_register; 39struct tgsi_full_src_register; 40struct tgsi_full_instruction; 41 42void * 43tgsi_align_128bit(void *unaligned); 44 45unsigned 46tgsi_util_get_src_register_swizzle(const struct tgsi_src_register *reg, 47 unsigned component); 48 49 50unsigned 51tgsi_util_get_full_src_register_swizzle( 52 const struct tgsi_full_src_register *reg, 53 unsigned component ); 54 55void 56tgsi_util_set_src_register_swizzle(struct tgsi_src_register *reg, 57 unsigned swizzle, 58 unsigned component); 59 60unsigned 61tgsi_util_get_inst_usage_mask(const struct tgsi_full_instruction *inst, 62 unsigned src_idx); 63 64struct tgsi_src_register 65tgsi_util_get_src_from_ind(const struct tgsi_ind_register *reg); 66 67int 68tgsi_util_get_texture_coord_dim(enum tgsi_texture_type tgsi_tex); 69 70int 71tgsi_util_get_shadow_ref_src_index(enum tgsi_texture_type tgsi_tex); 72 73bool 74tgsi_is_shadow_target(enum tgsi_texture_type target); 75 76 77static inline bool 78tgsi_is_msaa_target(enum tgsi_texture_type target) 79{ 80 return (target == TGSI_TEXTURE_2D_MSAA || 81 target == TGSI_TEXTURE_2D_ARRAY_MSAA); 82} 83 84static inline bool 85tgsi_is_array_sampler(enum tgsi_texture_type target) 86{ 87 return target == TGSI_TEXTURE_1D_ARRAY || 88 target == TGSI_TEXTURE_SHADOW1D_ARRAY || 89 target == TGSI_TEXTURE_2D_ARRAY || 90 target == TGSI_TEXTURE_SHADOW2D_ARRAY || 91 target == TGSI_TEXTURE_CUBE_ARRAY || 92 target == TGSI_TEXTURE_SHADOWCUBE_ARRAY || 93 target == TGSI_TEXTURE_2D_ARRAY_MSAA; 94} 95 96#if defined __cplusplus 97} 98#endif 99 100#endif /* TGSI_UTIL_H */ 101