1 /* 2 * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7 #include "console.h" 8 #include "video.h" 9 //#include "mmu.h" 10 //#include "images.h" 11 #include "graphics.h" 12 #include "virtio.h" 13 14 #include <arch/cpu.h> 15 #include <boot/stage2.h> 16 #include <boot/platform.h> 17 #include <boot/menu.h> 18 #include <boot/kernel_args.h> 19 #include <boot/platform/generic/video.h> 20 #include <util/list.h> 21 #include <drivers/driver_settings.h> 22 #include <GraphicsDefs.h> 23 24 #include <stdio.h> 25 #include <stdlib.h> 26 #include <string.h> 27 28 29 //#define TRACE_VIDEO 30 #ifdef TRACE_VIDEO 31 # define TRACE(x...) dprintf(x) 32 #else 33 # define TRACE(x...) ; 34 #endif 35 36 37 // #pragma mark - 38 39 bool 40 video_mode_hook(Menu* menu, MenuItem* item) 41 { 42 // nothing yet 43 return true; 44 } 45 46 47 Menu* 48 video_mode_menu() 49 { 50 Menu* menu = new(nothrow) Menu(CHOICE_MENU, "Select Video Mode"); 51 MenuItem* item; 52 53 menu->AddItem(item = new(nothrow) MenuItem("Default")); 54 item->SetMarked(true); 55 item->Select(true); 56 item->SetHelpText("The Default video mode is the one currently configured " 57 "in the system. If there is no mode configured yet, a viable mode will " 58 "be chosen automatically."); 59 60 menu->AddSeparatorItem(); 61 menu->AddItem(item = new(nothrow) MenuItem("Return to main menu")); 62 item->SetType(MENU_ITEM_NO_CHOICE); 63 64 return menu; 65 } 66 67 68 // #pragma mark - blit 69 70 71 extern "C" void 72 platform_blit4(addr_t frameBuffer, const uint8* data, 73 uint16 width, uint16 height, uint16 imageWidth, uint16 left, uint16 top) 74 { 75 } 76 77 78 extern "C" void 79 platform_set_palette(const uint8* palette) 80 { 81 } 82 83 84 // #pragma mark - 85 86 87 extern "C" void 88 platform_switch_to_logo(void) 89 { 90 gKernelArgs.frame_buffer.physical_buffer.start = (addr_t)gFramebuf.colors; 91 gKernelArgs.frame_buffer.physical_buffer.size 92 = 4 * gFramebuf.stride * gFramebuf.height; 93 gKernelArgs.frame_buffer.width = gFramebuf.width; 94 gKernelArgs.frame_buffer.height = gFramebuf.height; 95 gKernelArgs.frame_buffer.depth = 32; 96 gKernelArgs.frame_buffer.bytes_per_row = 4 * gFramebuf.stride; 97 gKernelArgs.frame_buffer.enabled = true; 98 99 video_display_splash(gKernelArgs.frame_buffer.physical_buffer.start); 100 } 101 102 103 extern "C" void 104 platform_switch_to_text_mode(void) 105 { 106 gKernelArgs.frame_buffer.enabled = false; 107 } 108 109 110 extern "C" status_t 111 platform_init_video(void) 112 { 113 virtio_init(); // we want heap initalized 114 Clear(gFramebuf, 0xff000000); 115 console_init(); 116 return B_OK; 117 } 118