tgsi_from_mesa: add tgsi_get_gl_frag_result_semantic

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle
2017-06-08 19:36:59 +02:00
parent fb1c4e3d47
commit c7ecbd1153
2 changed files with 40 additions and 0 deletions

View File

@@ -148,3 +148,38 @@ tgsi_get_gl_varying_semantic(gl_varying_slot attr,
break;
}
}
/**
* Determine the semantic name and index used for the given fragment shader
* result.
*/
void
tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,
unsigned *semantic_name,
unsigned *semantic_index)
{
if (frag_result >= FRAG_RESULT_DATA0) {
*semantic_name = TGSI_SEMANTIC_COLOR;
*semantic_index = frag_result - FRAG_RESULT_DATA0;
return;
}
*semantic_index = 0;
switch (frag_result) {
case FRAG_RESULT_DEPTH:
*semantic_name = TGSI_SEMANTIC_POSITION;
break;
case FRAG_RESULT_STENCIL:
*semantic_name = TGSI_SEMANTIC_STENCIL;
break;
case FRAG_RESULT_COLOR:
*semantic_name = TGSI_SEMANTIC_COLOR;
break;
case FRAG_RESULT_SAMPLE_MASK:
*semantic_name = TGSI_SEMANTIC_SAMPLEMASK;
break;
default:
assert(false);
}
}

View File

@@ -42,6 +42,11 @@ unsigned
tgsi_get_generic_gl_varying_index(gl_varying_slot attr,
bool needs_texcoord_semantic);
void
tgsi_get_gl_frag_result_semantic(gl_frag_result frag_result,
unsigned *semantic_name,
unsigned *semantic_index);
static inline enum pipe_shader_type
pipe_shader_type_from_mesa(gl_shader_stage stage)
{