From da2e541218d65c8931f0061fc4badd8fdedfcb83 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 11 Feb 2011 11:56:44 -0700 Subject: [PATCH] svga: add max DMA size check in svga_winsys_buffer_create() This fixes a problem when trying to use large (2K x 2K) texture images. We'll DMA the image in chunks. Patch written by Jose. --- src/gallium/drivers/svga/svga_resource_buffer_upload.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c index 765d2f34082..fdc0329f6c9 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c +++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c @@ -40,6 +40,9 @@ #include "svga_debug.h" +#define MAX_DMA_SIZE (8 * 1024 * 1024) + + /** * Allocate a winsys_buffer (ie. DMA, aka GMR memory). * @@ -57,6 +60,13 @@ svga_winsys_buffer_create( struct svga_context *svga, struct svga_winsys_screen *sws = svgascreen->sws; struct svga_winsys_buffer *buf; + /* XXX this shouldn't be a hard-coded number; it should be queried + * somehow. + */ + if (size > MAX_DMA_SIZE) { + return NULL; + } + /* Just try */ buf = sws->buffer_create(sws, alignment, usage, size); if(!buf) { -- 2.30.2