intel: Add always_flush_batch driconf option for making small batchbuffers.

This can improve debugging with INTEL_DEBUG=batch,sync by giving smaller
batchbuffers.
This commit is contained in:
Eric Anholt
2009-03-05 17:18:49 -08:00
parent f3687284c1
commit 40bc2748c2
6 changed files with 25 additions and 1 deletions

View File

@@ -547,6 +547,16 @@ DRI_CONF_OPT_BEGIN(nv_vertex_program,bool,def) \
DRI_CONF_DESC(sv,"Aktivera tillägget GL_NV_vertex_program") \ DRI_CONF_DESC(sv,"Aktivera tillägget GL_NV_vertex_program") \
DRI_CONF_OPT_END DRI_CONF_OPT_END
#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \
DRI_CONF_OPT_BEGIN(always_flush_batch,bool,def) \
DRI_CONF_DESC(en,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_DESC(de,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_DESC(es,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_DESC(nl,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_DESC(fr,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_DESC(sv,"Enable flushing batchbuffer after each draw call") \
DRI_CONF_OPT_END
#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \ #define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \
DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \ DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \
DRI_CONF_DESC(en,"Enable flushing GPU caches with each draw call") \ DRI_CONF_DESC(en,"Enable flushing GPU caches with each draw call") \

View File

@@ -238,6 +238,11 @@ DRI_CONF_OPT_BEGIN(nv_vertex_program,bool,def) \
DRI_CONF_DESC(en,gettext("Enable extension GL_NV_vertex_program")) \ DRI_CONF_DESC(en,gettext("Enable extension GL_NV_vertex_program")) \
DRI_CONF_OPT_END DRI_CONF_OPT_END
#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \
DRI_CONF_OPT_BEGIN(always_flush_batch,bool,def) \
DRI_CONF_DESC(en,gettext("Enable flushing batchbuffer after each draw call")) \
DRI_CONF_OPT_END
#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \ #define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \
DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \ DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \
DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \ DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \

View File

@@ -411,6 +411,8 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx,
retval = GL_TRUE; retval = GL_TRUE;
} }
if (intel->always_flush_batch)
intel_batchbuffer_flush(intel->batch);
out: out:
UNLOCK_HARDWARE(intel); UNLOCK_HARDWARE(intel);

View File

@@ -618,6 +618,11 @@ intelInitContext(struct intel_context *intel,
intel->no_rast = 1; intel->no_rast = 1;
} }
if (driQueryOptionb(&intel->optionCache, "always_flush_batch")) {
fprintf(stderr, "flushing batchbuffer before/after each draw call\n");
intel->always_flush_batch = 1;
}
if (driQueryOptionb(&intel->optionCache, "always_flush_cache")) { if (driQueryOptionb(&intel->optionCache, "always_flush_cache")) {
fprintf(stderr, "flushing GPU caches before/after each draw call\n"); fprintf(stderr, "flushing GPU caches before/after each draw call\n");
intel->always_flush_cache = 1; intel->always_flush_cache = 1;

View File

@@ -228,6 +228,7 @@ struct intel_context
GLboolean hw_stipple; GLboolean hw_stipple;
GLboolean depth_buffer_is_float; GLboolean depth_buffer_is_float;
GLboolean no_rast; GLboolean no_rast;
GLboolean always_flush_batch;
GLboolean always_flush_cache; GLboolean always_flush_cache;
/* 0 - nonconformant, best performance; /* 0 - nonconformant, best performance;

View File

@@ -71,11 +71,12 @@ PUBLIC const char __driConfigOptions[] =
DRI_CONF_SECTION_END DRI_CONF_SECTION_END
DRI_CONF_SECTION_DEBUG DRI_CONF_SECTION_DEBUG
DRI_CONF_NO_RAST(false) DRI_CONF_NO_RAST(false)
DRI_CONF_ALWAYS_FLUSH_BATCH(false)
DRI_CONF_ALWAYS_FLUSH_CACHE(false) DRI_CONF_ALWAYS_FLUSH_CACHE(false)
DRI_CONF_SECTION_END DRI_CONF_SECTION_END
DRI_CONF_END; DRI_CONF_END;
const GLuint __driNConfigOptions = 7; const GLuint __driNConfigOptions = 8;
#ifdef USE_NEW_INTERFACE #ifdef USE_NEW_INTERFACE
static PFNGLXCREATECONTEXTMODES create_context_modes = NULL; static PFNGLXCREATECONTEXTMODES create_context_modes = NULL;