From 7b363b0dd492e7222e8503e24f35c651de0a0bfc Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sat, 25 Sep 2004 19:01:18 +0000 Subject: [PATCH] Fix SiS AGP vertex dispatch by not trying to emit 0 vertices, which would hang the hardware. Re-enable AGP by default. --- src/mesa/drivers/dri/sis/sis_screen.c | 2 +- src/mesa/drivers/dri/sis/sis_tris.c | 5 +++-- src/mesa/drivers/dri/sis/sis_tris.h | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c index aa1cd9b5df5..1cf2211d302 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.c +++ b/src/mesa/drivers/dri/sis/sis_screen.c @@ -46,7 +46,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. const char __driConfigOptions[] = DRI_CONF_BEGIN DRI_CONF_SECTION_DEBUG - DRI_CONF_OPT_BEGIN(agp_disable,bool,true) + DRI_CONF_OPT_BEGIN(agp_disable,bool,false) DRI_CONF_DESC(en,"Disable AGP vertex dispatch") DRI_CONF_OPT_END DRI_CONF_OPT_BEGIN(fallback_force,bool,false) diff --git a/src/mesa/drivers/dri/sis/sis_tris.c b/src/mesa/drivers/dri/sis/sis_tris.c index da23df5fe73..048ff848f4c 100644 --- a/src/mesa/drivers/dri/sis/sis_tris.c +++ b/src/mesa/drivers/dri/sis/sis_tris.c @@ -889,7 +889,8 @@ static void sisRenderFinish( GLcontext *ctx ) void sisFlushPrimsLocked(sisContextPtr smesa) { - GLuint *start; + if (smesa->vb_cur == smesa->vb_last) + return; sisUpdateHWState(smesa->glCtx); @@ -898,7 +899,7 @@ sisFlushPrimsLocked(sisContextPtr smesa) mEndPrimitive(); MMIO(REG_3D_AGPCmBase, (smesa->vb_last - smesa->vb) + smesa->vb_agp_offset); - MMIO(REG_3D_AGPTtDwNum, (smesa->vb_cur - smesa->vb_last) / 4 | + MMIO(REG_3D_AGPTtDwNum, ((smesa->vb_cur - smesa->vb_last) / 4) | 0x50000000); MMIO(REG_3D_ParsingSet, smesa->AGPParseSet); MMIO(REG_3D_AGPCmFire, (GLint)(-1)); diff --git a/src/mesa/drivers/dri/sis/sis_tris.h b/src/mesa/drivers/dri/sis/sis_tris.h index 0a8620e5ee1..5e07acc2118 100644 --- a/src/mesa/drivers/dri/sis/sis_tris.h +++ b/src/mesa/drivers/dri/sis/sis_tris.h @@ -51,6 +51,7 @@ do { \ static __inline GLuint *sisAllocDmaLow(sisContextPtr smesa, int bytes) { GLuint *start; + if (smesa->vb_cur + bytes >= smesa->vb_end) { LOCK_HARDWARE(); sisFlushPrimsLocked(smesa); -- 2.30.2