History log of /haiku/src/add-ons/accelerants/vesa/mode.cpp
Revision Date Author Comments
# 015b4086 20-Oct-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

vesa: live mode patching, nvidia version.

Some improvements to allow setting 8, 15, 16 and 32bit modes, and detect
the correct mode number after patching the BIOS automatically, instead
of hardcoding it.

Also move the patching code to a separate file.

Fixes #10570.

Change-Id: I920f448b59ad7373cb8595d92ce3fa52324be67e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4629
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 9515cd8c 29-Oct-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

vesa: implement live patching for ATI/AMD cards

This uses atombios headers to find where in the BIOS the video mode
tables is located. Then, we can replace entries in the table (in a RAM
copy of the BIOS, of course) and inject any video mode we need. To make
the table easy to find, the Atombios headers from the radeon_hd are
reused, but no atombios code execution takes place here.

Change-Id: If1981b1574822d4ce1e072dd6437a727192ce7cd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4628
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 1005a276 19-Oct-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

vesa: live BIOS patching for Intel video devices

The VESA standard does not define any way for software to set a custom
video mode, which means normally we would be constrained to whichever
modes the video card manufacturer decided to provide. However, since we
run the BIOS in an emulated environment, it is possible (and even quite
easy) to patch it and inject any video mode we want, provided we know
the format to use and where to put the info in.

This approach was used in the NewOS VESA driver, as well as in
915resolution (a tool that predates the availability of native drivers
for Linux for Intel videocards). Later on it was also used in Chameleon
and Clover, bootloaders that are used for hackintoshes (running MacOS on
unsupported hardware).

This commit implements full support for Intel cards only, AMD and NVidia
will be added later (but there is preliminary code to detect them)

Change-Id: I2c528ba18b3863f486da694860a10761efcbfb3f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4624
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 66415cd2 19-Oct-2021 Augustin Cavalier <waddlesplash@gmail.com>

Remove dumb-framebuffer handling logic from the VESA driver.

This reverts commit a0db7ef2729955d83f002b51034f0dedd39b4a0a.
This reverts commit 40cdf7d607211c5f27854cd3048ac00e8baf20ab.
This reverts commit 2ff22d6734176a2cf93a05c6842f69ef59d27a26.
This reverts commit b9eacd390dbdf776561062b324dab4c6f5a0dc80.
This partially reverts commit 5ae7ac5fd9957b3ff9faf211fd66976170c21b2c.

This was all added in the run-up to the removal of the framebuffer driver,
or was added since then to enhance framebuffer-only support in that driver.

Change-Id: I32ab8199f22cf6846545ae19e943c98012b2a1d0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4615
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# a0db7ef2 10-Apr-2021 Maciej Bałuta <maciejbaluta0x539@gmail.com>

Return "Unsupported" from VESA accelerant mode setting

Currently, when trying to change settings in Screen preferences on
a system which uses VESA driver on UEFI system, the displayed error
message is "Invalid argument". This commit simply changes returned
error code to B_UNSUPPORTED, so that in the UI we show
"Operation not supported" error.

Change-Id: I2a654d6f652c7b24ecd23969e04e477456235aa0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3858
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 2ff22d67 19-Jul-2018 Jessica Hamilton <jessica.l.hamilton@gmail.com>

vesa: fix missing display_mode for UEFI.

* Broke use of non-standard modes in hrev51207. Code changed
when merging framebuffer driver back into vesa driver...

Change-Id: I688ae627de23f37ffc8614d8f189593f8833ae3e


# b9eacd39 11-Jun-2017 Jessica Hamilton <jessica.l.hamilton@gmail.com>

vesa: fold framebuffer driver into vesa driver.

* The app_server isn't designed to support two fallback drivers, so
on systems using UEFI to boot, the framebuffer driver will often
win when other drivers would likely work on those systems.


# e0c25f98 20-Aug-2016 Adrien Destugues <pulkomandy@pulkomandy.tk>

VESA: compare modes by index, instead of contents

We only compared the height, width, and depth of modes to decide if the
mode was already set. However, at boot, we may have these settings right
and other things not properly configured, preventing VESA to set a
working mode unless forced from the boot menu.

Fixes #12918


# 89a406bc 04-Feb-2015 Axel Dörfler <axeld@pinc-software.de>

vesa: don't switch to the current mode.

* If a mode change is requested, check if it is equivalent to the
current one, and don't do anything in this case.


# 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


# 89a406bc520f3c78e4463041994b0c9fa76b3902 04-Feb-2015 Axel Dörfler <axeld@pinc-software.de>

vesa: don't switch to the current mode.

* If a mode change is requested, check if it is equivalent to the
current one, and don't do anything in this case.


# 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