Browse Source

gallium: added draw_num_vs_outputs() to query number of post-transform vertex attribs

tags/mesa_20090313
Brian 17 years ago
parent
commit
1774b177b8

+ 13
- 0
src/gallium/auxiliary/draw/draw_context.c View File

@@ -281,6 +281,19 @@ draw_find_vs_output(struct draw_context *draw,
}


/**
* Return number of vertex shader outputs.
*/
uint
draw_num_vs_outputs(struct draw_context *draw)
{
uint count = draw->vertex_shader->info.num_outputs;
if (draw->extra_vp_outputs.slot >= 0)
count++;
return count;
}


/**
* Allocate space for temporary post-transform vertices, such as for clipping.
*/

+ 4
- 0
src/gallium/auxiliary/draw/draw_context.h View File

@@ -112,6 +112,10 @@ int
draw_find_vs_output(struct draw_context *draw,
uint semantic_name, uint semantic_index);

uint
draw_num_vs_outputs(struct draw_context *draw);



/*
* Vertex shader functions

+ 2
- 2
src/gallium/drivers/softpipe/sp_state_derived.c View File

@@ -61,7 +61,6 @@ softpipe_get_vertex_info(struct softpipe_context *softpipe)

if (vinfo->num_attribs == 0) {
/* compute vertex layout now */
const struct pipe_shader_state *vs = &softpipe->vs->shader;
const struct sp_fragment_shader *spfs = softpipe->fs;
const enum interp_mode colorInterp
= softpipe->rasterizer->flatshade ? INTERP_CONSTANT : INTERP_LINEAR;
@@ -74,7 +73,8 @@ softpipe_get_vertex_info(struct softpipe_context *softpipe)
struct vertex_info *vinfo_vbuf = &softpipe->vertex_info_vbuf;
vinfo_vbuf->num_attribs = 0;
draw_emit_vertex_attr(vinfo_vbuf, EMIT_ALL, INTERP_NONE, 0);
vinfo_vbuf->size = 4 * vs->num_outputs
/* size in dwords or floats */
vinfo_vbuf->size = 4 * draw_num_vs_outputs(softpipe->draw)
+ sizeof(struct vertex_header) / 4;
}


Loading…
Cancel
Save