S3 ViRGE: Respect blend control compose modes on pre-GX2 ViRGE
Fixes video overlay staying on-screen on Linux.
This commit is contained in:
@@ -918,6 +918,10 @@ s3_virge_recalctimings(svga_t *svga)
|
|||||||
svga->overlay.v_acc = virge->streams.dda_vert_accumulator;
|
svga->overlay.v_acc = virge->streams.dda_vert_accumulator;
|
||||||
svga->rowoffset = virge->streams.pri_stride >> 3;
|
svga->rowoffset = virge->streams.pri_stride >> 3;
|
||||||
|
|
||||||
|
if (virge->chip <= S3_VIRGEDX && svga->overlay.ena) {
|
||||||
|
svga->overlay.ena = (((virge->streams.blend_ctrl >> 24) & 7) == 0b000) || (((virge->streams.blend_ctrl >> 24) & 7) == 0b101);
|
||||||
|
}
|
||||||
|
|
||||||
switch ((virge->streams.pri_ctrl >> 24) & 0x7) {
|
switch ((virge->streams.pri_ctrl >> 24) & 0x7) {
|
||||||
case 0: /*RGB-8 (CLUT)*/
|
case 0: /*RGB-8 (CLUT)*/
|
||||||
svga->render = svga_render_8bpp_highres;
|
svga->render = svga_render_8bpp_highres;
|
||||||
@@ -1963,6 +1967,7 @@ s3_virge_mmio_write_l(uint32_t addr, uint32_t val, void *priv)
|
|||||||
break;
|
break;
|
||||||
case 0x81a0:
|
case 0x81a0:
|
||||||
virge->streams.blend_ctrl = val;
|
virge->streams.blend_ctrl = val;
|
||||||
|
svga_recalctimings(svga);
|
||||||
break;
|
break;
|
||||||
case 0x81c0:
|
case 0x81c0:
|
||||||
virge->streams.pri_fb0 = val & 0x7fffff;
|
virge->streams.pri_fb0 = val & 0x7fffff;
|
||||||
|
Reference in New Issue
Block a user