st/mesa: check state->mesa in early return check in st_validate_state()
authorBrian Paul <brianp@vmware.com>
Wed, 6 Jan 2016 00:10:12 +0000 (17:10 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 6 Jan 2016 22:53:46 +0000 (15:53 -0700)
We were checking the dirty->st flags but not the dirty->mesa flags.
When we took the early return, we didn't clear the dirty->mesa flags
so the next time we called st_validate_state() we'd often flush the
glBitmap cache.  And since st_validate_state() is called from
st_Bitmap(), it meant we flushed the bitmap cache for every glBitmap()
call.

This change seems to recover most of the performance loss observed
with the ipers demo on llvmpipe since commit commit 36c93a6fae27561.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/mesa/state_tracker/st_atom.c

index 43dbadd4a7e65b048f3547b3a6fcfacafad462c4..c1a9d00969fcc75b45f052b5b519142832583c6c 100644 (file)
@@ -188,7 +188,7 @@ void st_validate_state( struct st_context *st )
 
    st_manager_validate_framebuffers(st);
 
-   if (state->st == 0)
+   if (state->st == 0 && state->mesa == 0)
       return;
 
    /*printf("%s %x/%x\n", __func__, state->mesa, state->st);*/