summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2004-09-25 19:01:18 +0000
committerEric Anholt <anholt@FreeBSD.org>2004-09-25 19:01:18 +0000
commit7b363b0dd492e7222e8503e24f35c651de0a0bfc (patch)
tree1a24e93bd143194b6d8c0b012292faa430f2aeee /src
parentd166f2bffdb9cd8ab22825a2901baa513c4bc1eb (diff)
Fix SiS AGP vertex dispatch by not trying to emit 0 vertices, which would hang
the hardware. Re-enable AGP by default.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/sis/sis_screen.c2
-rw-r--r--src/mesa/drivers/dri/sis/sis_tris.c5
-rw-r--r--src/mesa/drivers/dri/sis/sis_tris.h1
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 aa1cd9b5df..1cf2211d30 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 da23df5fe7..048ff848f4 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 0a8620e5ee..5e07acc211 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);