diff --git a/src/gallium/drivers/svga/svga_cmd.c b/src/gallium/drivers/svga/svga_cmd.c index 6577c839cf0..8347dc17545 100644 --- a/src/gallium/drivers/svga/svga_cmd.c +++ b/src/gallium/drivers/svga/svga_cmd.c @@ -439,6 +439,8 @@ SVGA3D_SurfaceDMA(struct svga_winsys_context *swc, unsigned region_flags; unsigned surface_flags; + assert(!swc->have_gb_objects); + if (transfer == SVGA3D_WRITE_HOST_VRAM) { region_flags = SVGA_RELOC_READ; surface_flags = SVGA_RELOC_WRITE; diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index ff2c500dbb4..f2ab20edba7 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -535,10 +535,11 @@ svga_texture_transfer_map(struct pipe_context *pipe, break; } - /* Force direct map for multisample surface */ - if (texture->nr_samples > 1) { - assert(svga_have_gb_objects(svga)); - assert(sws->have_sm4_1); + /* We never want to use DMA transfers on systems with GBObjects because + * it causes serialization issues and in SVGAv3 vram is gone which + * makes it impossible to support both at the same time. + */ + if (svga_have_gb_objects(svga)) { use_direct_map = TRUE; }