History log of /haiku-fatelf/src/add-ons/accelerants/vesa/mode.cpp
Revision Date Author Comments
# 34cfa023 22-Mar-2012 François Revol <revol@free.fr>

Dump actual mode count in vesa_accelerant_mode_count() debug output.


# a96db7dc 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* vesa != intel. *cough*
* no functional change


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42921 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fbe9bdf0 29-Sep-2011 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 18fe0231 08-Aug-2011 Bruno G. Albuquerque <bga@bug-br.org.br>

Add initial vesa modes even if EDID information is present. EDID does not
include all supported video modes. Fixes #4166.

Note that this change will probably show several weird resolution is some
configurations. They are all valid resolutions but are not commom so we need
a way to filter those out.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d3d53515 19-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Add the width, and height to fill_display_mode(). This should help with #7751
this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42454 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5eed3d98 16-Jul-2011 Bruno G. Albuquerque <bga@bug-br.org.br>

Fix crash in VESA accelerant.

- Keep track of the correct number of initial modes available.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42438 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ff8a623 14-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed coding style violation introduced with the last commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42429 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d8c71f47 14-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Only add the VESA modes if there is no EDID available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42427 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7d98b09 13-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* The VESA accelerant now always makes sure that all supported resolutions are
added to the mode list (in 60 Hz, but that doesn't really matter).
* It does this by iterating over the modes found, and computes the
display_timings from them using the GTF code.
* This should help with one of the problems of ticket #7751.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42421 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb693d77 14-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Added VESA capabilities field to the kernel args.
* The vesa driver no longer uses VGA programming if the chip does not support
VGA compatibility.
* The VESA driver now tries to set the DAC to 8 bits per color gun.
* In VESA modes, the driver no longer tries to use VGA programming; introduced
the new vesa_set_indexed_colors() that is now used for palette programming.
This should fix wrong colors of 8 bit BWindowScreen users with VESA on real
hardware (emulators usually didn't mind either way).
* Note that the app_server needs to maintain a palette per 8 bit screen, as
right now, the colors are garbled after a workspace switch. Stefano, are you
looking into that already?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32347 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3bde1f12 31-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* If the VESA accelerant has EDID information, it will now also pass it to
create_display_modes().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32020 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bfd4c59b 05-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added DPMS support to the VESA driver, in case the hardware/BIOS supports it.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d16ddc57 03-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* The boot loader now passes on its EDID info to the kernel, and that will
be put into a boot_item in frame_buffer_console_init().
* The VESA driver now supports gettings the EDID information as well; this
is necessary now, since the app_server no longer takes over the mode the
boot loader had chosen.
* Note, we might want to do this via vm86 instead in the future, and remove
the kernel part again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25786 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f161845 28-May-2008 Axel Dörfler <axeld@pinc-software.de>

Patch by Jan Klötzke with minor changes by myself:
* Use vm86 mode to call the VESA BIOS to do the actual mode switching by
providing an ioctl in the vesa driver.
* Fix vm86.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6328832f 30-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Changed get_boot_item() API: it now also can retrieve the size of the boot
item entry.
* The bios_ia32 video platform code now stores the available VESA modes in
the new vesa_modes kernel_args field.
* When configuring a VESA mode via settings file, it's no longer needed to
specify the exact mode - the closest available mode is now used. This should
help with bug #1962.
* frame_buffer_console_init() now also creates a boot_item for the VESA modes
in the kernel_args.
* The VESA accelerant now filters the mode list to only contain modes that
are actually supported.
* Moved non-shared vesa driver data into its own file vesa_private.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 002e8b64 01-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Now completely initializes the current_mode if it's in the mode list.
* The mode list is now created by the common mode list creation code.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24190 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c6f7795 19-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* Moved VGA planar mode blitting into the VESA kernel driver.
* In grayscale mode, the AccelerantHWInterface now sets the palette correctly.
* HWInterface now has a fVGADevice set by AccelerantHWInterface which will be used
to talk to the VESA driver.
* Completed planar blitting for all 4 planes; we now have a perfect 16 color
grayscale mode when you choose "Standard VGA mode" in the boot loader with
an unsupported graphics card (such as in Qemu).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19567 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ea228a84 17-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

Calmed down the VESA accelerant a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19550 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e5b4782b 26-May-2005 Axel Dörfler <axeld@pinc-software.de>

Made some necessary enhancements to class Screen; the app_server also
has to care about refresh rates. Also changed Screen::GetMode() (formerly
Resolution()) to return all interesting values, so that hopefully no one
will call it anymore like RootLayer::SetScreens() did.
Greatly improved the horrible RootLayer::SetScreens().
The app_server is now able to deal with failing HWInterface::SetMode() calls;
in this case, it will fall back to the hardware's current mode. This now
also works correctly in combination with the vesa driver, so that you don't
have to compile the app_server with the same resolution you boot in anymore.
SetMode() now always returns if it succeeded or not.
Renamed RootLayer::fScreenXYResolution to fScreenWidth/Height respectively.
Removed the useless DisplayDriver::DisplayMode() method.
Added B_GET_DISPLAY_MODE to the required accelerant hooks.
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12831 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 93ee2104 08-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Added very basic VESA driver. Will be improved in the future (right now
it doesn't really do anything, it just passes the initial frame buffer
on to the app_server).
While it seems to work on real hardware (if you set the video mode to
640x480x32, app_server restriction), under Bochs, the app_server crashes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12273 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 34cfa0232750a83afdda9e69bb57314273d9917c 22-Mar-2012 François Revol <revol@free.fr>

Dump actual mode count in vesa_accelerant_mode_count() debug output.


# a96db7dc369e1289059d27dc044f9edf685ca4c6 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* vesa != intel. *cough*
* no functional change


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42921 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fbe9bdf09546aeed1753effae864baf91024bf51 29-Sep-2011 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 18fe0231df37b0245159db147a65f429b986220e 08-Aug-2011 Bruno G. Albuquerque <bga@bug-br.org.br>

Add initial vesa modes even if EDID information is present. EDID does not
include all supported video modes. Fixes #4166.

Note that this change will probably show several weird resolution is some
configurations. They are all valid resolutions but are not commom so we need
a way to filter those out.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d3d53515a9e81be00e5c1d6eefa819de0098b2dd 19-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Add the width, and height to fill_display_mode(). This should help with #7751
this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42454 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5eed3d989274a8689744af60aec0894d94b7d733 16-Jul-2011 Bruno G. Albuquerque <bga@bug-br.org.br>

Fix crash in VESA accelerant.

- Keep track of the correct number of initial modes available.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42438 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ff8a6237a55cbec6353567fdfdcc2a18acb6044 14-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed coding style violation introduced with the last commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42429 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d8c71f47c36fb69ce2578ccb221b36f4f97b453b 14-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* Only add the VESA modes if there is no EDID available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42427 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7d98b0923817ad675be677ea2e42ed706f23ff7 13-Jul-2011 Axel Dörfler <axeld@pinc-software.de>

* The VESA accelerant now always makes sure that all supported resolutions are
added to the mode list (in 60 Hz, but that doesn't really matter).
* It does this by iterating over the modes found, and computes the
display_timings from them using the GTF code.
* This should help with one of the problems of ticket #7751.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42421 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb693d77643c7bc4b2b10847007a94af5e84b953 14-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Added VESA capabilities field to the kernel args.
* The vesa driver no longer uses VGA programming if the chip does not support
VGA compatibility.
* The VESA driver now tries to set the DAC to 8 bits per color gun.
* In VESA modes, the driver no longer tries to use VGA programming; introduced
the new vesa_set_indexed_colors() that is now used for palette programming.
This should fix wrong colors of 8 bit BWindowScreen users with VESA on real
hardware (emulators usually didn't mind either way).
* Note that the app_server needs to maintain a palette per 8 bit screen, as
right now, the colors are garbled after a workspace switch. Stefano, are you
looking into that already?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32347 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3bde1f121acb9ef50268868839dc01114197a124 31-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* If the VESA accelerant has EDID information, it will now also pass it to
create_display_modes().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32020 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bfd4c59b639308dc5bc06f8273c4bb0c5e4e4598 05-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added DPMS support to the VESA driver, in case the hardware/BIOS supports it.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d16ddc579cc378b230e7782b82e6007063d1442d 03-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

* The boot loader now passes on its EDID info to the kernel, and that will
be put into a boot_item in frame_buffer_console_init().
* The VESA driver now supports gettings the EDID information as well; this
is necessary now, since the app_server no longer takes over the mode the
boot loader had chosen.
* Note, we might want to do this via vm86 instead in the future, and remove
the kernel part again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25786 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f16184577a3506b927dbc5cfff47ab03500deda 28-May-2008 Axel Dörfler <axeld@pinc-software.de>

Patch by Jan Klötzke with minor changes by myself:
* Use vm86 mode to call the VESA BIOS to do the actual mode switching by
providing an ioctl in the vesa driver.
* Fix vm86.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6328832fba8f149074dbe7502dc0c180ff013263 30-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Changed get_boot_item() API: it now also can retrieve the size of the boot
item entry.
* The bios_ia32 video platform code now stores the available VESA modes in
the new vesa_modes kernel_args field.
* When configuring a VESA mode via settings file, it's no longer needed to
specify the exact mode - the closest available mode is now used. This should
help with bug #1962.
* frame_buffer_console_init() now also creates a boot_item for the VESA modes
in the kernel_args.
* The VESA accelerant now filters the mode list to only contain modes that
are actually supported.
* Moved non-shared vesa driver data into its own file vesa_private.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 002e8b64ae70f258a1b923154dfbcccb81bd200c 01-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Now completely initializes the current_mode if it's in the mode list.
* The mode list is now created by the common mode list creation code.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24190 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c6f77951ed2366737266cae1bf0c2f98842e6f5 19-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* Moved VGA planar mode blitting into the VESA kernel driver.
* In grayscale mode, the AccelerantHWInterface now sets the palette correctly.
* HWInterface now has a fVGADevice set by AccelerantHWInterface which will be used
to talk to the VESA driver.
* Completed planar blitting for all 4 planes; we now have a perfect 16 color
grayscale mode when you choose "Standard VGA mode" in the boot loader with
an unsupported graphics card (such as in Qemu).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19567 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ea228a84f4f3a05ca97944e75452ed11b05b213a 17-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

Calmed down the VESA accelerant a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19550 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e05fe1042cce6e00d194a147802d4f9be 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e5b4782b4ee7663decea60a4385fce3122c2b16d 26-May-2005 Axel Dörfler <axeld@pinc-software.de>

Made some necessary enhancements to class Screen; the app_server also
has to care about refresh rates. Also changed Screen::GetMode() (formerly
Resolution()) to return all interesting values, so that hopefully no one
will call it anymore like RootLayer::SetScreens() did.
Greatly improved the horrible RootLayer::SetScreens().
The app_server is now able to deal with failing HWInterface::SetMode() calls;
in this case, it will fall back to the hardware's current mode. This now
also works correctly in combination with the vesa driver, so that you don't
have to compile the app_server with the same resolution you boot in anymore.
SetMode() now always returns if it succeeded or not.
Renamed RootLayer::fScreenXYResolution to fScreenWidth/Height respectively.
Removed the useless DisplayDriver::DisplayMode() method.
Added B_GET_DISPLAY_MODE to the required accelerant hooks.
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12831 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 93ee21046d225f4f58eeeade87a937b8c10da6f1 08-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Added very basic VESA driver. Will be improved in the future (right now
it doesn't really do anything, it just passes the initial frame buffer
on to the app_server).
While it seems to work on real hardware (if you set the video mode to
640x480x32, app_server restriction), under Bochs, the app_server crashes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12273 a95241bf-73f2-0310-859d-f6bbb57e9c96