projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
llvmpipe: wait for queries being finished when asked for it or before deletion
[mesa.git]
/
src
/
gallium
/
drivers
/
svga
/
svga_context.c
diff --git
a/src/gallium/drivers/svga/svga_context.c
b/src/gallium/drivers/svga/svga_context.c
index 3228a6d3d7fe7d8c265c2af5c437eb47d767d1aa..3b30b9e341ea3de8116c3e604effe4e80874049c 100644
(file)
--- a/
src/gallium/drivers/svga/svga_context.c
+++ b/
src/gallium/drivers/svga/svga_context.c
@@
-194,6
+194,7
@@
void svga_context_flush( struct svga_context *svga,
struct pipe_fence_handle **pfence )
{
struct svga_screen *svgascreen = svga_screen(svga->pipe.screen);
struct pipe_fence_handle **pfence )
{
struct svga_screen *svgascreen = svga_screen(svga->pipe.screen);
+ struct pipe_fence_handle *fence = NULL;
svga->curr.nr_fbs = 0;
svga->curr.nr_fbs = 0;
@@
-202,21
+203,26
@@
void svga_context_flush( struct svga_context *svga,
u_upload_flush(svga->upload_vb);
u_upload_flush(svga->upload_ib);
u_upload_flush(svga->upload_vb);
u_upload_flush(svga->upload_ib);
- /*
Flush screen, to e
nsure that texture dma uploads are processed
+ /*
E
nsure that texture dma uploads are processed
* before submitting commands.
*/
* before submitting commands.
*/
- svga_screen_flush(svgascreen, NULL);
-
svga_context_flush_buffers(svga);
/* Flush pending commands to hardware:
*/
svga_context_flush_buffers(svga);
/* Flush pending commands to hardware:
*/
- svga->swc->flush(svga->swc, pfence);
+ svga->swc->flush(svga->swc, &fence);
+
+ svga_screen_cache_flush(svgascreen, fence);
if (SVGA_DEBUG & DEBUG_SYNC) {
if (SVGA_DEBUG & DEBUG_SYNC) {
- if (
pfence && *p
fence)
- svga->pipe.screen->fence_finish( svga->pipe.screen,
*p
fence, 0);
+ if (fence)
+ svga->pipe.screen->fence_finish( svga->pipe.screen, fence, 0);
}
}
+
+ if(pfence)
+ *pfence = fence;
+ else
+ svgascreen->sws->fence_reference(svgascreen->sws, &fence, NULL);
}
}
@@
-233,3
+239,8
@@
void svga_hwtnl_flush_retry( struct svga_context *svga )
assert(ret == 0);
}
assert(ret == 0);
}
+struct svga_winsys_context *
+svga_winsys_context( struct pipe_context *pipe )
+{
+ return svga_context( pipe )->swc;
+}