fill in framebuffer with more exciting pattern - working in qemu BIOS but lost graphics in qemu EFI
This commit is contained in:
parent
d08d54ecbf
commit
21afa93c4b
@ -4,10 +4,23 @@ void kernel_main(uint32_t mbinfo)
|
|||||||
{
|
{
|
||||||
volatile uint32_t * mbi = (volatile uint32_t *)mbinfo;
|
volatile uint32_t * mbi = (volatile uint32_t *)mbinfo;
|
||||||
volatile uint32_t * fb = (volatile uint32_t *)mbi[88 / 4];
|
volatile uint32_t * fb = (volatile uint32_t *)mbi[88 / 4];
|
||||||
uint32_t c = 0u;
|
uint32_t pitch = mbi[96 / 4];
|
||||||
for (uint32_t i = 0u; i < 800u * 600u; i++)
|
uint32_t width = mbi[100 / 4];
|
||||||
|
uint32_t height = mbi[104 / 4];
|
||||||
|
for (uint32_t row = 0u; row < height; row++)
|
||||||
{
|
{
|
||||||
c++;
|
for (uint32_t col = 0u; col < width; col++)
|
||||||
fb[i] = (c << 28u) | 0x00669900u | ((c << 4u) & 0xFFu);
|
{
|
||||||
|
uint32_t er = (col * height) / width;
|
||||||
|
int32_t dr = (int32_t)row - (int32_t)er;
|
||||||
|
if (dr < 0)
|
||||||
|
{
|
||||||
|
dr = -dr;
|
||||||
|
}
|
||||||
|
uint8_t r = 255u - ((uint32_t)dr * 256u / height);
|
||||||
|
uint8_t g = col * 256u / width;
|
||||||
|
uint8_t b = row * 256u / height;
|
||||||
|
fb[pitch * row / 4u + col] = (r << 16u) | (g << 8u) | b;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user