summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2008-01-28 11:12:11 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2008-01-28 11:12:11 +0000
commit99f297651198c3424aab202595064d6f5596b2fc (patch)
tree520e3646ebfec2422543ef38ea57e481fd6c54f0
parenta46181044fd5573895180ee5f1a016c4c1e4a653 (diff)
gallium: only call vertex/prim queue flush when there is something to flush
-rw-r--r--src/mesa/pipe/draw/draw_prim.c9
-rw-r--r--src/mesa/pipe/draw/draw_vertex_fetch.c10
-rw-r--r--src/mesa/pipe/draw/draw_vertex_shader.c2
3 files changed, 17 insertions, 4 deletions
diff --git a/src/mesa/pipe/draw/draw_prim.c b/src/mesa/pipe/draw/draw_prim.c
index 243381aec0..2a612a1673 100644
--- a/src/mesa/pipe/draw/draw_prim.c
+++ b/src/mesa/pipe/draw/draw_prim.c
@@ -63,8 +63,7 @@ static void draw_prim_queue_flush( struct draw_context *draw )
fprintf(stdout,"Flushing with %d prims, %d verts\n",
draw->pq.queue_nr, draw->vs.queue_nr);
- if (draw->pq.queue_nr == 0)
- return;
+ assert (draw->pq.queue_nr != 0);
/* NOTE: we cannot save draw->pipeline->first in a local var because
* draw->pipeline->first is often changed by the first call to tri(),
@@ -109,10 +108,12 @@ void draw_do_flush( struct draw_context *draw, unsigned flags )
if (flags >= DRAW_FLUSH_SHADER_QUEUE) {
- draw_vertex_shader_queue_flush(draw);
+ if (draw->vs.queue_nr)
+ draw_vertex_shader_queue_flush(draw);
if (flags >= DRAW_FLUSH_PRIM_QUEUE) {
- draw_prim_queue_flush(draw);
+ if (draw->pq.queue_nr)
+ draw_prim_queue_flush(draw);
if (flags >= DRAW_FLUSH_VERTEX_CACHE) {
draw_vertex_cache_invalidate(draw);
diff --git a/src/mesa/pipe/draw/draw_vertex_fetch.c b/src/mesa/pipe/draw/draw_vertex_fetch.c
index af3983b7f0..143acdd3b4 100644
--- a/src/mesa/pipe/draw/draw_vertex_fetch.c
+++ b/src/mesa/pipe/draw/draw_vertex_fetch.c
@@ -158,6 +158,14 @@ FETCH_ATTRIB( A8R8G8B8_UNORM, 4, CVT_8_UNORM )
static fetch_func get_fetch_func( enum pipe_format format )
{
+#if 0
+ {
+ char tmp[80];
+ pf_sprint_name(tmp, format);
+ _mesa_printf("%s: %s\n", __FUNCTION__, tmp);
+ }
+#endif
+
switch (format) {
case PIPE_FORMAT_R64_FLOAT:
return fetch_R64_FLOAT;
@@ -317,6 +325,8 @@ void draw_update_vertex_fetch( struct draw_context *draw )
{
unsigned nr_attrs, i;
+// _mesa_printf("%s\n", __FUNCTION__);
+
/* this may happend during context init */
if (!draw->vertex_shader)
return;
diff --git a/src/mesa/pipe/draw/draw_vertex_shader.c b/src/mesa/pipe/draw/draw_vertex_shader.c
index 3041974b9a..289c35c7ae 100644
--- a/src/mesa/pipe/draw/draw_vertex_shader.c
+++ b/src/mesa/pipe/draw/draw_vertex_shader.c
@@ -201,6 +201,8 @@ draw_vertex_shader_queue_flush(struct draw_context *draw)
{
unsigned i, j;
+ assert(draw->vs.queue_nr != 0);
+
/* XXX: do this on statechange:
*/
draw_update_vertex_fetch( draw );