devvga: disable hardware blanking when switching drivers, check softscreen
we have to reset hwblank when switching drivers to prevent the generic vgablank() to be called by blankscreen(). remove code setting hwblank from vga drivers as devvga will always force hwblank to be 1 or 0 depending on if the driver provides a native blanking routine. set hwaccel to 1 when the driver provides native fill and scroll routines independent of softscreen being disabled. this allows hw acceleration to be used when softscreen gets switched off.
This commit is contained in:
parent
ce2e8e5687
commit
b5008f3b56
|
@ -314,6 +314,8 @@ vgactl(Cmdbuf *cb)
|
|||
scr->fill = nil;
|
||||
scr->scroll = nil;
|
||||
scr->blank = nil;
|
||||
hwblank = 0;
|
||||
hwaccel = 0;
|
||||
qunlock(&drawlock);
|
||||
if(scr->dev->disable)
|
||||
scr->dev->disable(scr);
|
||||
|
@ -410,7 +412,7 @@ vgactl(Cmdbuf *cb)
|
|||
if(scr->dev && scr->dev->drawinit)
|
||||
scr->dev->drawinit(scr);
|
||||
hwblank = scr->blank != nil;
|
||||
hwaccel = !scr->softscreen && (scr->scroll || scr->fill);
|
||||
hwaccel = scr->fill != nil || scr->scroll != nil;
|
||||
vgascreenwin(scr);
|
||||
resetscreenimage();
|
||||
cursoron();
|
||||
|
|
|
@ -393,8 +393,8 @@ setcursor(Cursor* curs)
|
|||
scr->cur->load(scr, curs);
|
||||
}
|
||||
|
||||
int hwaccel = 1;
|
||||
int hwblank = 0; /* turned on by drivers that are known good */
|
||||
int hwaccel = 0;
|
||||
int hwblank = 0;
|
||||
int panning = 0;
|
||||
|
||||
int
|
||||
|
@ -423,12 +423,10 @@ hwdraw(Memdrawparam *par)
|
|||
if(mask && mask->data->bdata == scrd->bdata)
|
||||
swcursoravoid(par->mr);
|
||||
}
|
||||
if(hwaccel == 0)
|
||||
if(!hwaccel || scr->softscreen)
|
||||
return 0;
|
||||
if(dst->data->bdata != scrd->bdata || src == nil || mask == nil)
|
||||
return 0;
|
||||
if(scr->fill==nil && scr->scroll==nil)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* If we have an opaque mask and source is one opaque
|
||||
|
@ -670,9 +668,6 @@ bootscreeninit(void)
|
|||
scr->useflush = 0;
|
||||
scr->dev = nil;
|
||||
|
||||
hwblank = 0;
|
||||
hwaccel = 0;
|
||||
|
||||
physgscreenr = gscreen->r;
|
||||
|
||||
vgaimageinit(chan);
|
||||
|
|
|
@ -135,9 +135,9 @@ extern void mouseresize(void);
|
|||
extern void mouseredraw(void);
|
||||
|
||||
/* screen.c */
|
||||
extern int hwaccel; /* use hw acceleration; default on */
|
||||
extern int hwblank; /* use hw blanking; default on */
|
||||
extern int panning; /* use virtual screen panning; default off */
|
||||
extern int hwaccel; /* use hw acceleration */
|
||||
extern int hwblank; /* use hw blanking */
|
||||
extern int panning; /* use virtual screen panning */
|
||||
extern void addvgaseg(char*, ulong, ulong);
|
||||
extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*);
|
||||
extern void flushmemscreen(Rectangle);
|
||||
|
|
|
@ -103,7 +103,6 @@ i81xenable(VGAscr* scr)
|
|||
scr->storage = cursor;
|
||||
|
||||
scr->blank = i81xblank;
|
||||
hwblank = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -956,7 +956,6 @@ mach64xxdrawinit(VGAscr *scr)
|
|||
case ('L'<<8)|'M': /* 4C4D: Rage Mobility */
|
||||
case ('L'<<8)|'P': /* 4C50: Rage 3D LTPro */
|
||||
scr->blank = mach64lcdblank;
|
||||
hwblank = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -450,10 +450,7 @@ radeondrawinit(VGAscr*scr)
|
|||
|
||||
scr->fill = radeonfill;
|
||||
scr->scroll = radeonscroll;
|
||||
hwaccel = 1;
|
||||
|
||||
scr->blank = radeonblank;
|
||||
hwblank = 1;
|
||||
}
|
||||
|
||||
/* hw overlay */
|
||||
|
|
|
@ -523,7 +523,6 @@ s3drawinit(VGAscr *scr)
|
|||
* above.
|
||||
*/
|
||||
scr->blank = s3blank;
|
||||
/* hwblank = 1; not known to work well */
|
||||
|
||||
switch(id){
|
||||
case VIRGE:
|
||||
|
|
|
@ -567,5 +567,4 @@ savageinit(VGAscr *scr)
|
|||
scr->fill = savagefill;
|
||||
scr->scroll = savagescroll;
|
||||
scr->blank = savageblank;
|
||||
hwblank = 0;
|
||||
}
|
||||
|
|
|
@ -499,7 +499,6 @@ t2r4drawinit(VGAscr *scr)
|
|||
scr->fill = t2r4hwfill;
|
||||
scr->scroll = t2r4hwscroll;
|
||||
scr->blank = t2r4blank;
|
||||
hwblank = 1;
|
||||
}
|
||||
|
||||
VGAdev vgat2r4dev = {
|
||||
|
|
Loading…
Reference in a new issue