mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 12:50:12 +01:00
gallium/tgsi: add helper tgsi_get_interp_mode
Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6442>
This commit is contained in:
parent
2519472845
commit
440aab95c3
3 changed files with 23 additions and 21 deletions
|
|
@ -290,3 +290,20 @@ tgsi_get_sysval_semantic(unsigned sysval)
|
|||
unreachable("Unexpected system value to TGSI");
|
||||
}
|
||||
}
|
||||
|
||||
enum tgsi_interpolate_mode
|
||||
tgsi_get_interp_mode(enum glsl_interp_mode mode, bool color)
|
||||
{
|
||||
switch (mode) {
|
||||
case INTERP_MODE_NONE:
|
||||
return color ? TGSI_INTERPOLATE_COLOR : TGSI_INTERPOLATE_PERSPECTIVE;
|
||||
case INTERP_MODE_FLAT:
|
||||
return TGSI_INTERPOLATE_CONSTANT;
|
||||
case INTERP_MODE_NOPERSPECTIVE:
|
||||
return TGSI_INTERPOLATE_LINEAR;
|
||||
case INTERP_MODE_SMOOTH:
|
||||
return TGSI_INTERPOLATE_PERSPECTIVE;
|
||||
default:
|
||||
unreachable("unknown interpolation mode");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@ tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,
|
|||
enum tgsi_semantic
|
||||
tgsi_get_sysval_semantic(unsigned sysval);
|
||||
|
||||
enum tgsi_interpolate_mode
|
||||
tgsi_get_interp_mode(enum glsl_interp_mode mode, bool color);
|
||||
|
||||
static inline enum pipe_shader_type
|
||||
pipe_shader_type_from_mesa(gl_shader_stage stage)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6554,26 +6554,6 @@ sort_inout_decls_by_slot(struct inout_decl *decls,
|
|||
std::sort(decls, decls + count, sorter);
|
||||
}
|
||||
|
||||
static enum tgsi_interpolate_mode
|
||||
st_translate_interp(enum glsl_interp_mode glsl_qual, GLuint varying)
|
||||
{
|
||||
switch (glsl_qual) {
|
||||
case INTERP_MODE_NONE:
|
||||
if (varying == VARYING_SLOT_COL0 || varying == VARYING_SLOT_COL1)
|
||||
return TGSI_INTERPOLATE_COLOR;
|
||||
return TGSI_INTERPOLATE_PERSPECTIVE;
|
||||
case INTERP_MODE_SMOOTH:
|
||||
return TGSI_INTERPOLATE_PERSPECTIVE;
|
||||
case INTERP_MODE_FLAT:
|
||||
return TGSI_INTERPOLATE_CONSTANT;
|
||||
case INTERP_MODE_NOPERSPECTIVE:
|
||||
return TGSI_INTERPOLATE_LINEAR;
|
||||
default:
|
||||
assert(0 && "unexpected interp mode in st_translate_interp()");
|
||||
return TGSI_INTERPOLATE_PERSPECTIVE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate intermediate IR (glsl_to_tgsi_instruction) to TGSI format.
|
||||
* \param program the program to translate
|
||||
|
|
@ -6682,7 +6662,9 @@ st_translate_program(
|
|||
assert(interpMode);
|
||||
interp_mode = interpMode[slot] != TGSI_INTERPOLATE_COUNT ?
|
||||
(enum tgsi_interpolate_mode) interpMode[slot] :
|
||||
st_translate_interp(decl->interp, inputSlotToAttr[slot]);
|
||||
tgsi_get_interp_mode(decl->interp,
|
||||
inputSlotToAttr[slot] == VARYING_SLOT_COL0 ||
|
||||
inputSlotToAttr[slot] == VARYING_SLOT_COL1);
|
||||
|
||||
interp_location = (enum tgsi_interpolate_loc) decl->interp_loc;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue