Browse Source

debug video

master
Mathieu Sérandour 2 years ago
parent
commit
42505c84ad
  1. 1
      kernel/debug/panic.c
  2. 11
      kernel/entry.c
  3. 21
      kernel/video/video.c

1
kernel/debug/panic.c

@ -1,4 +1,5 @@
#include "panic.h"
#include "../klib/sprintf.h"
#include "../video/terminal.h"

11
kernel/entry.c

@ -100,7 +100,8 @@ void *stivale2_get_tag(struct stivale2_struct *stivale2_struct, uint64_t id) {
#define PRINT_VAL(v) kprintf(#v "=%ld\n", v);
#define PRINT_HEX(v) kprintf(#v "=%lx\n", v);
extern void _binary____resources_bmp_charmap_bmp_start;
// "int" but designates a binary file
extern int _binary____resources_bmp_charmap_bmp_start;
extern uint64_t test(void);
extern int64_t test_size;
@ -162,23 +163,21 @@ void _start(struct stivale2_struct *stivale2_struct) {
// We should now be able to call the above function pointer to print out
// a simple "Hello World" to screen.
char buf[128];
kprintf("ds=0x%x\nss=0x%x\ncs=%x\nes=%x\nfs=%x\ngs=%x\n\n",
_ds(), _ss(), _cs(),_es(),_fs(),_gs());
kprintf("print=0x%lx\n\n", kprintf);//0x00ea60
//0x100a60
init_gdt_table();
blit(image, NULL, NULL);
draw(image, NULL, NULL);
init_gdt_table();
//*ptr = 0xfffa24821;
asm("hlt");
for(size_t i = 0; i < fbtag.framebuffer_height; i++) {
uint8_t* base = fbtag.framebuffer_addr + fbtag.framebuffer_pitch*i;
uint8_t* base = (uint8_t*)fbtag.framebuffer_addr + fbtag.framebuffer_pitch*i;
for(size_t j = 0; j < fbtag.framebuffer_width; j++) {
uint32_t* px = (uint32_t*)&base[4*j];
*px = 0xffffff00;
}
}
//*(uint64_t*)(term_write_ptr) = 0xfeac;

21
kernel/video/video.c

@ -38,13 +38,18 @@ inline void lower_blit(const Image* src, const Image* dst,
size_t dst_skip = dst->pitch;
size_t copy_size = width * BPP;
kprintf("copy_size: %lu\n"
"dst_skip: %lu", copy_size, dst_skip);
for(size_t i = height+1; i > 0 ; i--) {
/*
memcpy(dst_line_start,
src_line_start,
copy_size);
*/
memset(dst_line_start, 0xffffffff, copy_size);
src_line_start += src_skip;
dst_line_start += dst_skip;
}
@ -121,7 +126,6 @@ void blit(const Image* restrict src, Image* restrict dst,
}
Image* alloc_image(uint32_t width, uint32_t height, uint32_t bpp) {
Image* ret = kmalloc(sizeof(Image));
@ -188,17 +192,20 @@ Image* loadBMP(const void* rawFile) {
int32_t w = header->w;
int32_t h = header->h;
uint8_t* srcpix24 = rawFile + header->body_offset;
const uint8_t* srcpix24 = (const uint8_t*)rawFile + header->body_offset;
Image* ret = alloc_image(w,h, 32);
size_t bpitch = ret->pitch / 4;
uint32_t* pix32 = ret->pix;
for(int32_t y = 0; y < ret->h; y++) {
for(int32_t x = 0; x < ret->w; x++) {
uint32_t* src_ptr = srcpix24 + 3 * x + (ret->h-1-y) * 3 * h;
pix32[x + y * bpitch] = (*(uint32_t *)src_ptr) & 0x00ffffff;
for(size_t y = 0; y < ret->h; y++) {
for(size_t x = 0; x < ret->w; x++) {
const uint32_t* src_ptr = (const uint32_t *)srcpix24
+ 3 * x + (ret->h-1-y) * 3 * h;
pix32[x + y * bpitch] = (*(const uint32_t *)src_ptr) & 0x00ffffff;
}

Loading…
Cancel
Save