nouveau: increase max order of suballocated buffers by 1
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Tue, 8 Jan 2013 11:35:25 +0000 (12:35 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Tue, 8 Jan 2013 15:13:51 +0000 (16:13 +0100)
This is really a hack to make TF2 (considerably, up to 20 -> 70 fps
at low res) faster.

src/gallium/drivers/nouveau/nouveau_mm.c

index 6045af6ee00e1288505f51280d3b6257d400f923..439c0fb22551c258378742d48436045f704ecb6a 100644 (file)
@@ -9,8 +9,15 @@
 #include "nouveau_screen.h"
 #include "nouveau_mm.h"
 
+/* TODO: Higher orders can waste a lot of space for npot size buffers, should
+ * add an extra cache for such buffer objects.
+ *
+ * HACK: Max order == 21 to accommodate TF2's 1.5 MiB, frequently reallocated
+ * vertex buffer (VM flush (?) decreases performance dramatically).
+ */
+
 #define MM_MIN_ORDER 7 /* >= 6 to not violate ARB_map_buffer_alignment */
-#define MM_MAX_ORDER 20
+#define MM_MAX_ORDER 21
 
 #define MM_NUM_BUCKETS (MM_MAX_ORDER - MM_MIN_ORDER + 1)
 
@@ -102,7 +109,7 @@ mm_default_slab_size(unsigned chunk_order)
 {
    static const int8_t slab_order[MM_MAX_ORDER - MM_MIN_ORDER + 1] =
    {
-      12, 12, 13, 14, 14, 17, 17, 17, 17, 19, 19, 20, 21, 22
+      12, 12, 13, 14, 14, 17, 17, 17, 17, 19, 19, 20, 21, 22, 22
    };
 
    assert(chunk_order <= MM_MAX_ORDER && chunk_order >= MM_MIN_ORDER);