Installing newly built graphics driver

I’ve been wanting to do this for a long time. I sat down this weekend
and tried hard to add a new graphics driver instead of just overwriting
an existing one. Alas, I’ve failed on my own - time to ask for some help.

To get everyone up to speed I’ve built and tested a new variant of the
VESA driver going by the name devg-vesabios.so. I have added the shadow
buffer feature but not the earlier timing settings as the newer edition
of the driver that comes with QNX 6.3.0 now has refresh rate setting as
standard.

Overwriting the original driver with the tweaked one works a treat so I
decided this is a good time to learn how to put additions in the
enumeration system.


Step One:
Give it a unique name. This involved a little learning of the Eclipse
tools for changing project and target names. This was solved and now I
have a new driver named “devg-vesatweak.so”.

Step Two:
Enumeration. Obviously, just putting this in /lib/dll is not going to
get it enumerated without further work. However, it is usable simply by
specifying vesatweak in the Advanced settings of the prefs.

To cut a long story short I added an OEM file named
/etc/system/enum/oem/devg-vesatweak with a driver list for my test bed,
namely an i830MG based laptop. The entries are the i830 driver, vesabios
driver, vga driver, and finally the new vesatweak driver. Then
executing a “crttrap clear” followed by a reboot. This results in a
fresh trap list which now includes vesatweak.

All good so far, but that’s as far as I can get. All attempts to
convince the prefs to include vesatweak in it’s list of devices have
failed. :frowning:

Things tried so far:

  • eyeballing the sources for filling a struct with “vesa” - none found.
  • eyeballing the enum files for “vesa” like IDs - none found.
  • grep’ing for any occurrence of “vesa” in the binary - found but
    discounted.
  • grep’ing for any occurrence of “vesa” in phgrafx, io-graphics,
    devgt-iographics - none found.
  • Removing “vesa” from the driver name.
  • Modifying most public function names.


    At a lose,
    Evan

This ought to do it:

*** draw.c 11 Feb 2004 15:49:27 -0000 1.14
— draw.c 8 Aug 2004 20:22:29 -0000


*** 34,40 ****
void
vesa_module_info(disp_adapter_t *adapter, disp_module_info_t *info)
{
! info->description = "vesa - unaccelerated driver "
“for VESA 2.00 compliant adapters”;
info->ddk_version_major = DDK_VERSION_MAJOR;
info->ddk_version_minor = DDK_VERSION_MINOR;
— 34,40 ----
void
vesa_module_info(disp_adapter_t *adapter, disp_module_info_t *info)
{
! info->description = "vesatweak - unaccelerated driver "
“for VESA 2.00 compliant adapters”;
info->ddk_version_major = DDK_VERSION_MAJOR;
info->ddk_version_minor = DDK_VERSION_MINOR;

Histerical reasons…

Cheers,
Dave

You beauty! :>

If only I’d grep’ed the sources first … well, late for work, I’ll
post the finished product tonight.


Evan

Oh, man. Packager desperately wants to be a gui based app!

Okay, done.

For those that are interested, vesatweak is online at
http://projects.qnxzone.com/project/showfiles.php?group_id=7


Cheers,
Evan

Evan Hillas wrote:

Oh, man. Packager desperately wants to be a gui based app!

I found that re-using the resultant package from the previous attempt as
a template for the answers is a godsend. :slight_smile: