Eliminated s3->busy completely, fixes S3 928 drivers without FIFO under NT 3.1 while keeping everything else intact.
Moved the DC390 timer initialization to the Flush write command, where it takes a higher priority, fixes NT 3.1 DC390 specific drivers while keeping the AMD branded drivers intact.
This commit is contained in:
@@ -2676,7 +2676,7 @@ s3_accel_in(uint16_t port, void *p)
|
||||
if (FIFO_FULL && s3->chip >= S3_VISION964)
|
||||
temp |= 0xf8; /*FIFO full*/
|
||||
} else {
|
||||
if (s3->busy || s3->force_busy) {
|
||||
if (s3->force_busy) {
|
||||
temp |= 0x02; /*Hardware busy*/
|
||||
}
|
||||
s3->force_busy = 0;
|
||||
@@ -3314,10 +3314,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
dstbase >>= 2;
|
||||
}
|
||||
|
||||
if (((s3_cpu_src(s3) || s3_cpu_dest(s3))) && (s3->chip >= S3_86C928 && s3->chip < S3_TRIO64V)) {
|
||||
s3->busy = 1;
|
||||
}
|
||||
|
||||
if ((s3->accel.cmd & 0x100) && (s3_cpu_src(s3) || s3_cpu_dest(s3)) && !cpu_input) {
|
||||
s3->force_busy = 1;
|
||||
}
|
||||
@@ -3410,7 +3406,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
if (s3->bpp == 0) cpu_dat >>= 8;
|
||||
else cpu_dat >>= 16;
|
||||
if (!s3->accel.sy) {
|
||||
s3->busy = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3481,7 +3476,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
else cpu_dat >>= 16;
|
||||
|
||||
if (!s3->accel.sy) {
|
||||
s3->busy = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3653,10 +3647,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
s3->accel.dest = dstbase + s3->accel.cy * s3->width;
|
||||
s3->accel.sy--;
|
||||
|
||||
if (s3->accel.sy < 0) {
|
||||
s3->busy = 0;
|
||||
}
|
||||
|
||||
if (cpu_input) {
|
||||
if (s3_cpu_dest(s3))
|
||||
s3->data_available = 1;
|
||||
@@ -3737,7 +3727,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
s3->accel.sy--;
|
||||
|
||||
if (s3->accel.sy < 0) {
|
||||
s3->busy = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3825,9 +3814,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
|
||||
s3->accel.sy--;
|
||||
|
||||
if (s3->accel.sy < 0)
|
||||
s3->busy = 0;
|
||||
|
||||
if (cpu_input)
|
||||
return;
|
||||
|
||||
@@ -3950,9 +3936,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
|
||||
s3->accel.sy--;
|
||||
|
||||
if (s3->accel.sy < 0)
|
||||
s3->busy = 0;
|
||||
|
||||
if (cpu_input/* && (s3->accel.multifunc[0xa] & 0xc0) == 0x80*/) return;
|
||||
if (s3->accel.sy < 0)
|
||||
return;
|
||||
@@ -4032,7 +4015,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
s3->accel.cur_x2 = s3->accel.poly_cx2 & 0xfff;
|
||||
s3->accel.cur_y2 = s3->accel.poly_cy & 0xfff;
|
||||
}
|
||||
s3->busy = 0;
|
||||
break;
|
||||
|
||||
case 11: /*Polygon Fill Pattern (Trio64 only)*/
|
||||
@@ -4121,7 +4103,6 @@ s3_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, s3_
|
||||
s3->accel.cur_x2 = s3->accel.poly_cx2 & 0xfff;
|
||||
s3->accel.cur_y2 = s3->accel.poly_cy & 0xfff;
|
||||
}
|
||||
s3->busy = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user