mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 17:00:09 +01:00
softpipe: Sanitise shader semantic and interpolator handling.
Handle the remaining semantic names and indices. Respect color interpolator when not flatshading.
This commit is contained in:
parent
87d7c1aa15
commit
eb699d64ec
1 changed files with 10 additions and 24 deletions
|
|
@ -66,8 +66,6 @@ softpipe_get_vertex_info(struct softpipe_context *softpipe)
|
|||
if (vinfo->num_attribs == 0) {
|
||||
/* compute vertex layout now */
|
||||
const struct sp_fragment_shader *spfs = softpipe->fs;
|
||||
const enum interp_mode colorInterp
|
||||
= softpipe->rasterizer->flatshade ? INTERP_CONSTANT : INTERP_LINEAR;
|
||||
struct vertex_info *vinfo_vbuf = &softpipe->vertex_info_vbuf;
|
||||
const uint num = draw_num_vs_outputs(softpipe->draw);
|
||||
uint i;
|
||||
|
|
@ -108,33 +106,21 @@ softpipe_get_vertex_info(struct softpipe_context *softpipe)
|
|||
|
||||
switch (spfs->info.input_semantic_name[i]) {
|
||||
case TGSI_SEMANTIC_POSITION:
|
||||
src = draw_find_vs_output(softpipe->draw,
|
||||
TGSI_SEMANTIC_POSITION, 0);
|
||||
draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_POS, src);
|
||||
interp = INTERP_POS;
|
||||
break;
|
||||
|
||||
case TGSI_SEMANTIC_COLOR:
|
||||
src = draw_find_vs_output(softpipe->draw, TGSI_SEMANTIC_COLOR,
|
||||
spfs->info.input_semantic_index[i]);
|
||||
draw_emit_vertex_attr(vinfo, EMIT_4F, colorInterp, src);
|
||||
if (softpipe->rasterizer->flatshade) {
|
||||
interp = INTERP_CONSTANT;
|
||||
}
|
||||
break;
|
||||
|
||||
case TGSI_SEMANTIC_FOG:
|
||||
src = draw_find_vs_output(softpipe->draw, TGSI_SEMANTIC_FOG, 0);
|
||||
draw_emit_vertex_attr(vinfo, EMIT_4F, interp, src);
|
||||
break;
|
||||
|
||||
case TGSI_SEMANTIC_GENERIC:
|
||||
case TGSI_SEMANTIC_FACE:
|
||||
/* this includes texcoords and varying vars */
|
||||
src = draw_find_vs_output(softpipe->draw, TGSI_SEMANTIC_GENERIC,
|
||||
spfs->info.input_semantic_index[i]);
|
||||
draw_emit_vertex_attr(vinfo, EMIT_4F, interp, src);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
/* this includes texcoords and varying vars */
|
||||
src = draw_find_vs_output(softpipe->draw,
|
||||
spfs->info.input_semantic_name[i],
|
||||
spfs->info.input_semantic_index[i]);
|
||||
draw_emit_vertex_attr(vinfo, EMIT_4F, interp, src);
|
||||
}
|
||||
|
||||
softpipe->psize_slot = draw_find_vs_output(softpipe->draw,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue