i965g: add DEBUG_MIN_URB flag
authorKeith Whitwell <keithw@vmware.com>
Fri, 6 Nov 2009 10:19:39 +0000 (10:19 +0000)
committerKeith Whitwell <keithw@vmware.com>
Fri, 6 Nov 2009 10:19:39 +0000 (10:19 +0000)
src/gallium/drivers/i965/brw_debug.h
src/gallium/drivers/i965/brw_screen.c
src/gallium/drivers/i965/brw_urb.c

index aee62f7a5bed2d4a498e18868ec1c9d94d578f7d..ea3c87218be0c5db82e97a031efd434fa5ca9a7f 100644 (file)
@@ -15,7 +15,7 @@
 #define DEBUG_BATCH             0x80
 #define DEBUG_PIXEL             0x100
 #define DEBUG_BUFMGR            0x200
-#define DEBUG_unused1           0x400
+#define DEBUG_MIN_URB           0x400
 #define DEBUG_unused2           0x800
 #define DEBUG_unused3           0x1000
 #define DEBUG_SYNC             0x2000
index 04a3f81bcf0bd0e82a7498f5d018a1589c158260..275ff0959f94cb535e14bdb53d3a2cbca3d00fc8 100644 (file)
@@ -48,6 +48,7 @@ static const struct debug_named_value debug_names[] = {
    { "bat",   DEBUG_BATCH},
    { "pix",   DEBUG_PIXEL},
    { "buf",   DEBUG_BUFMGR},
+   { "min",   DEBUG_MIN_URB},
    { "sync",  DEBUG_SYNC},
    { "prim",  DEBUG_PRIMS },
    { "vert",  DEBUG_VERTS },
@@ -291,7 +292,7 @@ brw_create_screen(struct brw_winsys_screen *sws, uint pci_id)
 #ifdef DEBUG
    BRW_DEBUG = debug_get_flags_option("BRW_DEBUG", debug_names, 0);
    BRW_DEBUG |= debug_get_flags_option("INTEL_DEBUG", debug_names, 0);
-   BRW_DEBUG |= DEBUG_STATS;
+   BRW_DEBUG |= DEBUG_STATS | DEBUG_MIN_URB;
 #endif
 
    memset(&chipset, 0, sizeof chipset);
index 57fd8f20b20cb3c15269735e85baca4daba50715..907ec56c6ca4cec9af658ff6130deb0d261c9083 100644 (file)
@@ -84,7 +84,7 @@
  * XXX: Verify min_nr_entries, esp for VS.
  * XXX: Verify SF min_entry_size.
  */
-static const struct {
+static const struct urb_limits {
    GLuint min_nr_entries;
    GLuint preferred_nr_entries;
    GLuint min_entry_size;
@@ -167,6 +167,15 @@ static int recalculate_urb_fence( struct brw_context *brw )
         }
       }
 
+      if (BRW_DEBUG & DEBUG_MIN_URB) {
+        brw->urb.nr_vs_entries = limits[VS].min_nr_entries;    
+        brw->urb.nr_gs_entries = limits[GS].min_nr_entries;    
+        brw->urb.nr_clip_entries = limits[CLP].min_nr_entries;
+        brw->urb.nr_sf_entries = limits[SF].min_nr_entries;    
+        brw->urb.nr_cs_entries = limits[CS].min_nr_entries;    
+        brw->urb.constrained = 1;
+      }
+
       if (!check_urb_layout(brw)) {
         brw->urb.nr_vs_entries = limits[VS].min_nr_entries;    
         brw->urb.nr_gs_entries = limits[GS].min_nr_entries;