aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/svga/drm/vmw_screen_svga.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/svga/drm/vmw_screen_svga.c')
-rw-r--r--src/gallium/winsys/svga/drm/vmw_screen_svga.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gallium/winsys/svga/drm/vmw_screen_svga.c b/src/gallium/winsys/svga/drm/vmw_screen_svga.c
index df4a384d3ee..bf817ca88d8 100644
--- a/src/gallium/winsys/svga/drm/vmw_screen_svga.c
+++ b/src/gallium/winsys/svga/drm/vmw_screen_svga.c
@@ -73,7 +73,15 @@ vmw_svga_winsys_buffer_create(struct svga_winsys_screen *sws,
assert(provider);
buffer = provider->create_buffer(provider, size, &desc);
- if(!buffer)
+
+ if(!buffer && provider == vws->pools.gmr_fenced) {
+
+ assert(provider);
+ provider = vws->pools.gmr_slab_fenced;
+ buffer = provider->create_buffer(provider, size, &desc);
+ }
+
+ if (!buffer)
return NULL;
return vmw_svga_winsys_buffer(buffer);