diff options
author | Nicolai Hähnle <[email protected]> | 2017-06-08 19:36:59 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2017-07-05 12:27:11 +0200 |
commit | c7ecbd11539e1497f65072d18773a12d1726f099 (patch) | |
tree | 60478956af5a3e577051a1207c82ab00a9672d73 | |
parent | fb1c4e3d4764f64a1a5e2f84bc1d825bb392a847 (diff) |
tgsi_from_mesa: add tgsi_get_gl_frag_result_semantic
Reviewed-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_from_mesa.c | 35 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_from_mesa.h | 5 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c index 44fae1c28e6..b7a21f29bad 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c +++ b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.c @@ -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); + } +} diff --git a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h index d0f211e31e0..bfaa48d7fa3 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h +++ b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h @@ -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) { |