summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2008-05-27 14:42:15 +0100
committerKeith Whitwell <keith@tungstengraphics.com>2008-05-27 14:45:52 +0100
commitf8762ba5234fd1b44e11e76bb5f58d2305c90572 (patch)
tree993d78827d7b6157a8c8f4b8dc369316ec1ff04e /src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
parentf64c44ad3e55467ce964871502445cf5a0fb46d6 (diff)
draw: explicitly list nr_inputs, outputs in varient key
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
index c6249b4b41..581026dcb0 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
@@ -72,7 +72,6 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
struct fetch_shade_emit *fse = (struct fetch_shade_emit *)middle;
struct draw_context *draw = fse->draw;
unsigned num_vs_inputs = draw->vs.vertex_shader->info.num_inputs;
- unsigned num_vs_outputs = draw->vs.vertex_shader->info.num_outputs;
const struct vertex_info *vinfo;
unsigned i;
boolean need_psize = 0;
@@ -91,8 +90,11 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
fse->key.output_stride = vinfo->size * 4;
- fse->key.nr_elements = MAX2(num_vs_outputs, /* outputs - translate to hw format */
- num_vs_inputs); /* inputs - fetch from api format */
+ fse->key.nr_outputs = vinfo->num_attribs;
+ fse->key.nr_inputs = num_vs_inputs;
+
+ fse->key.nr_elements = MAX2(fse->key.nr_outputs, /* outputs - translate to hw format */
+ fse->key.nr_inputs); /* inputs - fetch from api format */
fse->key.viewport = !draw->identity_viewport;
fse->key.clip = !draw->bypass_clipping;
@@ -142,7 +144,7 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
need_psize = 1;
output_format = PIPE_FORMAT_R32_FLOAT;
emit_sz = 1 * sizeof(float);
- vs_output = num_vs_outputs + 1;
+ vs_output = vinfo->num_attribs + 1;
break;
case EMIT_4UB:
output_format = PIPE_FORMAT_B8G8R8A8_UNORM;
@@ -177,7 +179,9 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
fse->key.element[i].input_buffer = 0; //nr_buffers + 1;
fse->key.element[i].input_offset = 0;
- fse->key.nr_elements += 1;
+ fse->key.nr_inputs += 1;
+ fse->key.nr_elements = MAX2(fse->key.nr_inputs,
+ fse->key.nr_outputs);
}
#endif