Path: blob/21.2-virgl/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
4565 views
/*1* Copyright 2017 Advanced Micro Devices, Inc.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* on the rights to use, copy, modify, merge, publish, distribute, sub7* license, and/or sell copies of the Software, and to permit persons to whom8* the Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL17* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,18* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR19* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE20* USE OR OTHER DEALINGS IN THE SOFTWARE.21*/2223#ifndef TGSI_FROM_MESA_H24#define TGSI_FROM_MESA_H2526#include <stdbool.h>2728#include "pipe/p_compiler.h"29#include "pipe/p_defines.h"30#include "pipe/p_shader_tokens.h"3132#include "compiler/shader_enums.h"3334#ifdef __cplusplus35extern "C" {36#endif373839void40tgsi_get_gl_varying_semantic(gl_varying_slot attr,41bool needs_texcoord_semantic,42unsigned *semantic_name,43unsigned *semantic_index);4445unsigned46tgsi_get_generic_gl_varying_index(gl_varying_slot attr,47bool needs_texcoord_semantic);4849void50tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,51unsigned *semantic_name,52unsigned *semantic_index);5354enum tgsi_semantic55tgsi_get_sysval_semantic(unsigned sysval);5657enum tgsi_interpolate_mode58tgsi_get_interp_mode(enum glsl_interp_mode mode, bool color);5960static inline enum pipe_shader_type61pipe_shader_type_from_mesa(gl_shader_stage stage)62{63switch (stage) {64case MESA_SHADER_VERTEX:65return PIPE_SHADER_VERTEX;66case MESA_SHADER_TESS_CTRL:67return PIPE_SHADER_TESS_CTRL;68case MESA_SHADER_TESS_EVAL:69return PIPE_SHADER_TESS_EVAL;70case MESA_SHADER_GEOMETRY:71return PIPE_SHADER_GEOMETRY;72case MESA_SHADER_FRAGMENT:73return PIPE_SHADER_FRAGMENT;74case MESA_SHADER_COMPUTE:75case MESA_SHADER_KERNEL:76return PIPE_SHADER_COMPUTE;77default:78unreachable("bad shader stage");79}80}8182static inline gl_shader_stage83tgsi_processor_to_shader_stage(unsigned processor)84{85switch (processor) {86case PIPE_SHADER_FRAGMENT: return MESA_SHADER_FRAGMENT;87case PIPE_SHADER_VERTEX: return MESA_SHADER_VERTEX;88case PIPE_SHADER_GEOMETRY: return MESA_SHADER_GEOMETRY;89case PIPE_SHADER_TESS_CTRL: return MESA_SHADER_TESS_CTRL;90case PIPE_SHADER_TESS_EVAL: return MESA_SHADER_TESS_EVAL;91case PIPE_SHADER_COMPUTE: return MESA_SHADER_COMPUTE;92default:93unreachable("invalid TGSI processor");94}95}9697#ifdef __cplusplus98}99#endif100101#endif /* TGSI_FROM_MESA_H */102103104