Mantis Bugtracker
  

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
Reporter tim View Status public  
Assigned To tim
Priority normal Resolution fixed  
Status closed   Product Version
Summary 0007772: R-Pi fast bitblt code integration required
Description 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.
Additional Information 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 -
Hi Ian,
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.
- vm-display-x11/
        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.

tim
Attached Files  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

- Relationships
related to 0007773closed tim R-Pi faster bitblt integration into stackVM 

- Notes
(0014368 - 393 - 417 - 417 - 417 - 417 - 417)
tim
06-25-13 00:09

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)
tim
06-25-13 00:10

Chase Ben for rework.
Let vm-devs know about problem.
 
(0014371 - 315 - 327 - 327 - 327 - 327 - 327)
tim
06-29-13 03:08

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)
tim
07-02-13 18:56

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)
tim
08-19-13 23:34

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
../platforms/unix/cmake/configure --enableFastBlt
instead of
../platforms/unix/cmake/configure

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
autoreconf --install
./configure --target=arm-linux-gnueabihf
make
DESTDIR=/usr/local/bin sudo make install

Current ARM code is fairly tightly targeted at the ARMv6k cpu in the Raspberry Pi.
 

- Issue History
Date Modified Username Field Change
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.
Powered by Mantis Bugtracker