mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
winsys/svga: Limit the maximum DMA hardware buffer size
The kernel total GMR/DMA size is limited, but it's definitely possible for the kernel to allow a larger buffer allocation to succeed, but command submission using that buffer as a GMR would fail typically causing an application crash. So have the winsys limit the size of GMR/DMA buffers. The pipe driver will then resort to allocating smaller buffers and perform the DMA transfer in multiple bands, also allowing for the pre-flush mechanism to kick in. This avoids the related application crashes. Fixes:e7843273fa("winsys/svga: Update to vmwgfx kernel module 2.1") Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Charmaine Lee <charmainel@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> (cherry picked from commit91146c0796)
This commit is contained in:
parent
dacfad708f
commit
5f6f349bcf
1 changed files with 4 additions and 1 deletions
|
|
@ -80,8 +80,11 @@ vmw_svga_winsys_buffer_create(struct svga_winsys_screen *sws,
|
|||
provider = vws->pools.query_fenced;
|
||||
} else if (usage == SVGA_BUFFER_USAGE_SHADER) {
|
||||
provider = vws->pools.mob_shader_slab_fenced;
|
||||
} else
|
||||
} else {
|
||||
if (size > VMW_GMR_POOL_SIZE)
|
||||
return NULL;
|
||||
provider = vws->pools.gmr_fenced;
|
||||
}
|
||||
|
||||
assert(provider);
|
||||
buffer = provider->create_buffer(provider, size, &desc.pb_desc);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue