Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Mar 2014 00:35:23 +0200
From:      Aleksandr Rybalko <ray@freebsd.org>
To:        Nathan Whitehorn <nwhitehorn@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r263885 - in head/sys/dev/vt: . hw/vga
Message-ID:  <20140330003523.791b9ed3.ray@freebsd.org>
In-Reply-To: <5336F23B.9080402@freebsd.org>
References:  <201403282204.s2SM4SeN001155@svn.freebsd.org> <5336F23B.9080402@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 29 Mar 2014 09:18:03 -0700
Nathan Whitehorn <nwhitehorn@freebsd.org> wrote:

> On 03/28/14 15:04, Aleksandr Rybalko wrote:
> > Author: ray
> > Date: Fri Mar 28 22:04:27 2014
> > New Revision: 263885
> > URL: http://svnweb.freebsd.org/changeset/base/263885
> >
> > Log:
> >    o Add new vd_driver method to do bitblt with mask, named
> > vd_maskbitbltchr. o Move vd_bitbltchr vga's driver method to
> > vd_maskbitbltchr. o Implement new vd_bitbltchr method for vga
> > driver. (It do single write for 8 pixels, have to be a bit faster).
> >    
> 
> Can you describe what this does? From the commit message, it sounds
> like it might repair vt performance on cards with 8-bit framebuffers 
> generally, but I can't figure out the code.
> -Nathan
> 

Hi Nathan!

np, it is result of our discussion with jhibbits@.

vt(4) have to use bitblt like method which is able to do masked write,
since mouse cursor have to left visible characters under itself.
But masked bitblt quite expensive due to read from framebuffer to apply
mask or due to VGA graphics mode problem (described here [1], lot of
small read and writes which can't be well optimized).

Characters can be drown with simple (not masked) method, so vd_bitbltchr
used most frequently.
Mouse cursor only one (at least vt(4) can care about one :) ). And
currently mouse support only single consumer for masked method.

I did both methods have same set of arguments, to not reimplement
vd_bitbltchr method for all drivers. And driver can implement only
vd_bitbltchr or both. W/o vd_maskbitbltchr, vd_bitbltchr will be used.

Currently only one driver implement both methods, it is vt_vga.
Its not masked method do write 8 pixels at once, but masked method
continue to use 1 bit at once.

Other drivers (f.e. vt_ofwfb) in TODO list.

Thanks!

[1]http://lists.freebsd.org/pipermail/freebsd-arch/2014-March/015108.html

WBW
-- 
Aleksandr Rybalko <ray@freebsd.org>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140330003523.791b9ed3.ray>