From 6f65dcfb9f554619a35f4efb30adc512463bb8d9 Mon Sep 17 00:00:00 2001 From: Luca Barbieri Date: Mon, 18 Jan 2010 01:13:40 +0100 Subject: nvfx: allocate a bigger block for queries This patch allocates a bigger chunk of memory to store queries in, increasing the (hidden) outstanding query limit. --- src/gallium/drivers/nvfx/nvfx_screen.c | 13 ++++++++++--- src/gallium/drivers/nvfx/nvfx_screen.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index 651e6ee64b..6742759490 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -324,7 +324,7 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) struct nouveau_channel *chan; struct pipe_screen *pscreen; unsigned eng3d_class = 0; - int ret; + int ret, i; if (!screen) return NULL; @@ -397,14 +397,21 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) } /* Query objects */ - ret = nouveau_notifier_alloc(chan, 0xbeef0302, 32, &screen->query); + unsigned query_sizes[] = {(4096 - 4 * 32) / 32, 3 * 1024 / 32, 2 * 1024 / 32, 1024 / 32}; + for(i = 0; i < sizeof(query_sizes) / sizeof(query_sizes[0]); ++i) + { + ret = nouveau_notifier_alloc(chan, 0xbeef0302, query_sizes[i], &screen->query); + if(!ret) + break; + } + if (ret) { NOUVEAU_ERR("Error initialising query objects: %d\n", ret); nvfx_screen_destroy(pscreen); return NULL; } - ret = nouveau_resource_init(&screen->query_heap, 0, 32); + ret = nouveau_resource_init(&screen->query_heap, 0, query_sizes[i]); if (ret) { NOUVEAU_ERR("Error initialising query object heap: %d\n", ret); nvfx_screen_destroy(pscreen); diff --git a/src/gallium/drivers/nvfx/nvfx_screen.h b/src/gallium/drivers/nvfx/nvfx_screen.h index 678ee40601..aa1b0e1108 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.h +++ b/src/gallium/drivers/nvfx/nvfx_screen.h @@ -1,7 +1,7 @@ #ifndef __NVFX_SCREEN_H__ #define __NVFX_SCREEN_H__ -#include +#include "util/u_double_list.h" #include "nouveau/nouveau_screen.h" #include "nv04_surface_2d.h" #include "nvfx_context.h" -- cgit v1.2.3