st/mesa: flush the bitmap cache before st/dri and vbo flushes

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3986>
This commit is contained in:
Marek Olšák
2020-01-22 19:14:50 -05:00
parent 45d4665dc7
commit 7b0e043d48
2 changed files with 7 additions and 2 deletions
+3 -2
View File
@@ -52,8 +52,6 @@ st_flush(struct st_context *st,
struct pipe_fence_handle **fence,
unsigned flags)
{
st_flush_bitmap_cache(st);
/* We want to call this function periodically.
* Typically, it has nothing to do so it shouldn't be expensive.
*/
@@ -71,6 +69,7 @@ st_finish(struct st_context *st)
{
struct pipe_fence_handle *fence = NULL;
st_flush_bitmap_cache(st);
st_flush(st, &fence, PIPE_FLUSH_ASYNC | PIPE_FLUSH_HINT_FINISH);
if (fence) {
@@ -92,6 +91,8 @@ st_glFlush(struct gl_context *ctx)
{
struct st_context *st = st_context(ctx);
st_flush_bitmap_cache(st);
/* Don't call st_finish() here. It is not the state tracker's
* responsibilty to inject sleeps in the hope of avoiding buffer
* synchronization issues. Calling finish() here will just hide
+4
View File
@@ -661,6 +661,10 @@ st_context_flush(struct st_context_iface *stctxi, unsigned flags,
if (flags & ST_FLUSH_FENCE_FD)
pipe_flags |= PIPE_FLUSH_FENCE_FD;
/* If both the bitmap cache is dirty and there are unflushed vertices,
* it means that glBitmap was called first and then glBegin.
*/
st_flush_bitmap_cache(st);
FLUSH_VERTICES(st->ctx, 0);
/* Notify the caller that we're ready to flush */