|Anonymous | Login||10-20-2019 22:13 UTC|
|Main | My View | View Issues | Change Log | Docs|
|Viewing Issue Simple Details [ Jump to Notes ]||[ View Advanced ] [ Issue History ] [ Print ]|
|ID||Category||Severity||Reproducibility||Date Submitted||Last Update|
|0007772||[Squeak] VM||minor||N/A||06-22-13 01:26||08-19-13 23:34|
|Summary||0007772: R-Pi fast bitblt code integration required|
A faster bitblt plugin has been developed that is particularly aimed at the Raspberry Pi platform, though it is written to be portable and extendable for other machines.
The BitBltPlugin code is only slightly altered, using a #define of 'ENABLE_FAST_BLT' as the trigger. Several hand-written c and asm files are provided in the Cross/BitBltPlungin tree.
Unix platform file integration is still needed.
The VMMaker code has been integrated for the plain interpreter. The Cross platform code has been committed to SVN. The unix specific code is awaiting integration by Ian.
from an email -
Here at last is a dump of the unix related files that provide the faster bitblt for the Pi and any other interested platform. Although a lot of the work was specialised for ARM machines there is a fair bit that is completely generic and should (I emphasize the 'should') work on any machine since it is plain C code. There is another chunk that is about to go into Cross, which seems the best place at least to start us off.
Hopefully the attached zip will transfer correctly, though given how tediously annoying it was to assemble I would be surprised. The xarchive tool provided in Raspbian is, to be polite, pathetic. I eventually gave up and used the zip tool in Squeak; it may be best to use that to extract the files since I noticed that at least on my iMac the existence of two files named config.cmake caused problems.
What we have here is
- vm/sqPlatformSpecific.h with a #define added - this is clearly not a really good solution and if you know how to make it practical to cause cmake to allow configure with or without -DENABLE_FAST_BLT whilst not messing up the assorted CFLAGS I'd be very pleased.
- plugins/BitBltPlugin/config.cmake a new file in a new directory. This *seems* to work correctly on non-ARM machines but I am unable to guarantee it is the right way to do things. I didn't write it, so feel free to excoriate it.
config.cmake (see previous)
sqUnixX11Arm.s - assembler code for a faster routine for converting the pixel format
sqUnixX11.c - modified old file to use above faster display handler.
I added archive comments to the file to hopefully help sort out which config is which. If I can send you the files in some more convenient manner just let me know.
The value of this on the Pi is pretty high, with some cases being 10x faster; I'll be interested to know if it does any good on other machines. Someone may find it interesting to do the x86 assembler as an experiment, though I'd be surprised if it made as much difference on a fast large memory bus as on a slow narrow one.
cc'd to the rest of the gang in case anyone wants to play with it right now.
FastBlt-unix.zip [^] (51,979 bytes) 06-22-13 01:27
BenBLT-unix.zip [^] (91,672 bytes) 06-29-13 03:09
unix-FastBlt.zip [^] (91,705 bytes) 07-02-13 18:51
(0014368 - 393 - 417 - 417 - 417 - 417 - 417)
It appears that the assembler sources will need some re-work to make them acceptable to `gas` rather than insisting on using `asasm` - it seems rather mean to expect developers to add another tool and the setup hassles associated.
Another issue that caused some problems is the file naming; the autoconf scripts require foo.S not foo.s
Message sent to Ben Avison to request file changes.
(0014369 - 54 - 60 - 60 - 60 - 60 - 60)
Chase Ben for rework.
Let vm-devs know about problem.
(0014371 - 315 - 327 - 327 - 327 - 327 - 327)
Counter-argument: asasm syntax is better and more expressive and changing to gas format would be foolish. Either include the sources of asasm in the Squeak svn or document the need to load it and be nice enough to point to where it can be obtained.
Meanwhile, a revised set of files is a bit tidier - BenBlt-unix
(0014372 - 580 - 610 - 610 - 610 - 610 - 610)
After some very useful pointers from Ian I managed to mangle the cmake files so that
a) running the configure with `--enableFastBlt` will configure the chosen build directory to use the fast blt code. If the host is an ARM machine the ARM specific assembler code will be used as well.
b) running the configure without the --enable… will result in a build directory set up to not even consider the fast blt files.
c) asasm will be documented as a required available program and will be made available on the Pi Raspbian apt-get catalogue
Latest file is unix-FastBlt.zip above
(0014437 - 769 - 871 - 1013 - 1013 - 1013 - 1013)
After assistance from Ian to clean up the relevant files a bit, all is complete. Fetching the SVN tree post 16 August 2013 will allow anyone (with an ARM machine) to build a vm with the faster BitBLT enabled.
The only extra work required by the user is to use
and to install the asasm package with
sudo apt-get install bison flex libarchive-dev
svn co svn://svn.riscos.info/gccsdk/trunk/tools/asasm [^]
# at this point, edit src/output.c to insert #define ELF_EABI
DESTDIR=/usr/local/bin sudo make install
Current ARM code is fairly tightly targeted at the ARMv6k cpu in the Raspberry Pi.
|06-22-13 01:26||tim||New Issue|
|06-22-13 01:26||tim||Status||new => assigned|
|06-22-13 01:26||tim||Assigned To||=> lewis|
|06-22-13 01:27||tim||File Added: FastBlt-unix.zip|
|06-22-13 01:27||tim||Assigned To||lewis => tim|
|06-22-13 01:43||tim||Relationship added||related to 0007773|
|06-25-13 00:09||tim||Note Added: 0014368|
|06-25-13 00:10||tim||Note Added: 0014369|
|06-25-13 00:10||tim||Status||assigned => pending|
|06-29-13 03:08||tim||Note Added: 0014371|
|06-29-13 03:09||tim||File Added: BenBLT-unix.zip|
|07-02-13 18:51||tim||File Added: unix-FastBlt.zip|
|07-02-13 18:56||tim||Note Added: 0014372|
|08-19-13 23:34||tim||Status||pending => resolved|
|08-19-13 23:34||tim||Fixed in Version||=> 4.4|
|08-19-13 23:34||tim||Resolution||open => fixed|
|08-19-13 23:34||tim||Note Added: 0014437|
|08-19-13 23:34||tim||Status||resolved => closed|
| Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
67 total queries executed.|
41 unique queries executed.