Path: blob/21.2-virgl/src/gallium/auxiliary/tgsi/tgsi_util.h
4565 views
/**************************************************************************1*2* Copyright 2007 VMware, Inc.3* All Rights Reserved.4*5* Permission is hereby granted, free of charge, to any person obtaining a6* copy of this software and associated documentation files (the7* "Software"), to deal in the Software without restriction, including8* without limitation the rights to use, copy, modify, merge, publish,9* distribute, sub license, and/or sell copies of the Software, and to10* permit persons to whom the Software is furnished to do so, subject to11* the following conditions:12*13* The above copyright notice and this permission notice (including the14* next paragraph) shall be included in all copies or substantial portions15* of the Software.16*17* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS18* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.20* IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR21* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,22* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE23* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.24*25**************************************************************************/2627#ifndef TGSI_UTIL_H28#define TGSI_UTIL_H2930#include <stdbool.h>31#include "pipe/p_shader_tokens.h"3233#if defined __cplusplus34extern "C" {35#endif3637struct tgsi_src_register;38struct tgsi_full_src_register;39struct tgsi_full_instruction;4041void *42tgsi_align_128bit(void *unaligned);4344unsigned45tgsi_util_get_src_register_swizzle(const struct tgsi_src_register *reg,46unsigned component);474849unsigned50tgsi_util_get_full_src_register_swizzle(51const struct tgsi_full_src_register *reg,52unsigned component );5354void55tgsi_util_set_src_register_swizzle(struct tgsi_src_register *reg,56unsigned swizzle,57unsigned component);5859unsigned60tgsi_util_get_inst_usage_mask(const struct tgsi_full_instruction *inst,61unsigned src_idx);6263struct tgsi_src_register64tgsi_util_get_src_from_ind(const struct tgsi_ind_register *reg);6566int67tgsi_util_get_texture_coord_dim(enum tgsi_texture_type tgsi_tex);6869int70tgsi_util_get_shadow_ref_src_index(enum tgsi_texture_type tgsi_tex);7172bool73tgsi_is_shadow_target(enum tgsi_texture_type target);747576static inline bool77tgsi_is_msaa_target(enum tgsi_texture_type target)78{79return (target == TGSI_TEXTURE_2D_MSAA ||80target == TGSI_TEXTURE_2D_ARRAY_MSAA);81}8283static inline bool84tgsi_is_array_sampler(enum tgsi_texture_type target)85{86return target == TGSI_TEXTURE_1D_ARRAY ||87target == TGSI_TEXTURE_SHADOW1D_ARRAY ||88target == TGSI_TEXTURE_2D_ARRAY ||89target == TGSI_TEXTURE_SHADOW2D_ARRAY ||90target == TGSI_TEXTURE_CUBE_ARRAY ||91target == TGSI_TEXTURE_SHADOWCUBE_ARRAY ||92target == TGSI_TEXTURE_2D_ARRAY_MSAA;93}9495#if defined __cplusplus96}97#endif9899#endif /* TGSI_UTIL_H */100101102