summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/svga/svga_screen_cache.h
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2009-11-24 21:13:18 +0000
committerKeith Whitwell <keithw@vmware.com>2009-11-24 21:15:35 +0000
commitf1ce37f74aff4854071fe5740b055718b2c0c789 (patch)
tree126a8e27f9d0f2cf718176387727eac9b69640db /src/gallium/drivers/svga/svga_screen_cache.h
parent4509f3cbad2972b6fe4a722ed07904666122a759 (diff)
svga: cache textures as well as buffers
Diffstat (limited to 'src/gallium/drivers/svga/svga_screen_cache.h')
-rw-r--r--src/gallium/drivers/svga/svga_screen_cache.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/gallium/drivers/svga/svga_screen_cache.h b/src/gallium/drivers/svga/svga_screen_cache.h
index 1bbe987768..b745769848 100644
--- a/src/gallium/drivers/svga/svga_screen_cache.h
+++ b/src/gallium/drivers/svga/svga_screen_cache.h
@@ -36,10 +36,18 @@
#include "util/u_double_list.h"
-/* TODO: Reduce this once we don't allocate an index buffer per draw call */
+/* Guess the storage size of cached surfaces and try and keep it under
+ * this amount:
+ */
+#define SVGA_HOST_SURFACE_CACHE_BYTES 16*1024*1024
+
+/* Maximum number of discrete surfaces in the cache:
+ */
#define SVGA_HOST_SURFACE_CACHE_SIZE 1024
-#define SVGA_HOST_SURFACE_CACHE_BUCKETS 64
+/* Number of hash buckets:
+ */
+#define SVGA_HOST_SURFACE_CACHE_BUCKETS 256
struct svga_winsys_surface;
@@ -50,11 +58,12 @@ struct svga_screen;
*/
struct svga_host_surface_cache_key
{
- SVGA3dSurfaceFlags flags;
- SVGA3dSurfaceFormat format;
SVGA3dSize size;
- uint32_t numFaces;
- uint32_t numMipLevels;
+ uint32_t flags:8;
+ uint32_t format:8;
+ uint32_t numFaces:8;
+ uint32_t numMipLevels:7;
+ uint32_t cachable:1; /* False if this is a shared surface */
};