* On some systems, switching the resolution in VESA mode during
runtime did not work and gave a "General System Error". Jan Kloetzke provided a temporary work around, the area which the BIOS can access is enlarged, although according to specs, this should not be needed. * After switching modes in the VESA driver, turn on write combining for the frame buffer area. This gives a huge speed boost for all graphics drawing. Only people for which mode changes did not work were using the full speed since the VESA mode switching support was added. * Cleanup in the Jamfile, some header directories were included multiple times. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26395 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
44e302192f
commit
fc53a63149
@ -1,7 +1,8 @@
|
||||
SubDir HAIKU_TOP src add-ons kernel drivers graphics vesa ;
|
||||
|
||||
UsePrivateHeaders kernel graphics [ FDirName graphics common ] ;
|
||||
UsePrivateHeaders kernel graphics [ FDirName graphics vesa ] ;
|
||||
UsePrivateHeaders [ FDirName graphics common ] ;
|
||||
UsePrivateHeaders [ FDirName graphics vesa ] ;
|
||||
UsePrivateKernelHeaders ;
|
||||
|
||||
KernelAddon vesa :
|
||||
device.cpp
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <frame_buffer_console.h>
|
||||
#include <util/kernel_cpp.h>
|
||||
#include <arch/x86/vm86.h>
|
||||
#include <vm.h>
|
||||
|
||||
#include "driver.h"
|
||||
#include "utility.h"
|
||||
@ -174,7 +175,7 @@ vesa_set_display_mode(vesa_info &info, unsigned int mode)
|
||||
|
||||
// Prepare vm86 mode environment
|
||||
struct vm86_state vmState;
|
||||
status_t status = vm86_prepare(&vmState, 0x2000);
|
||||
status_t status = vm86_prepare(&vmState, 0x20000);
|
||||
if (status != B_OK) {
|
||||
dprintf(DEVICE_NAME": vesa_set_display_mode(): vm86_prepare failed\n");
|
||||
return status;
|
||||
@ -210,6 +211,9 @@ vesa_set_display_mode(vesa_info &info, unsigned int mode)
|
||||
}
|
||||
delete_area(info.shared_info->frame_buffer_area);
|
||||
|
||||
// Turn on write combining for the area
|
||||
vm_set_area_memory_type(newFBArea, modeInfo.physical_base, B_MTR_WC);
|
||||
|
||||
// Update shared frame buffer information
|
||||
info.shared_info->frame_buffer_area = newFBArea;
|
||||
info.shared_info->frame_buffer = (uint8 *)frameBuffer;
|
||||
|
Loading…
Reference in New Issue
Block a user