diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-12 13:03:09 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-12 13:03:09 +0200 |
commit | bd64c9d8b726a266fc452bdceef6450ac0073be8 (patch) | |
tree | 24c208284675b66dc52ee51a78b921c9e4295a41 | |
parent | 573b82fd2d46ebca7f98e5323e9f18e593a7996f (diff) | |
download | abaos-bd64c9d8b726a266fc452bdceef6450ac0073be8.tar.gz abaos-bd64c9d8b726a266fc452bdceef6450ac0073be8.tar.bz2 |
added segment_size to vga mode structure, using for memcpy in Z buffer
refreshing the video memory and when allocating the Z buffer
-rw-r--r-- | src/drivers/video/vga.c | 6 | ||||
-rw-r--r-- | src/drivers/video/vga.h | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/drivers/video/vga.c b/src/drivers/video/vga.c index 751cbc5..fd5bb10 100644 --- a/src/drivers/video/vga.c +++ b/src/drivers/video/vga.c @@ -284,6 +284,7 @@ bool vga_set_mode( vga_t *vga, const vga_mode_t mode ) vga->mode = mode; vga->mode.segment = get_frame_buffer_segment( vga ); + vga->mode.segment_size = get_frame_buffer_segment_size( vga ); vga_use_z_buffer( vga, false ); @@ -429,8 +430,7 @@ void vga_use_z_buffer( vga_t *vga, bool use ) vga->use_z_buffer = use; if( vga->use_z_buffer ) { - size_t size = get_frame_buffer_segment_size( vga ); - vga->zbuffer = (uint8_t *)malloc( size ); + vga->zbuffer = (uint8_t *)malloc( vga->mode.segment_size ); vga->base_addr = &vga->zbuffer[0]; } else { if( vga->zbuffer != NULL ) { @@ -445,7 +445,7 @@ void vga_refresh( vga_t *vga ) { if( vga->use_z_buffer ) { vga_wait_for_retrace( vga ); - memcpy( vga->mode.segment, vga->zbuffer, 65535 ); + memcpy( vga->mode.segment, vga->zbuffer, vga->mode.segment_size ); } } diff --git a/src/drivers/video/vga.h b/src/drivers/video/vga.h index aa842dc..0947856 100644 --- a/src/drivers/video/vga.h +++ b/src/drivers/video/vga.h @@ -4,6 +4,7 @@ #include <stdbool.h> #include "string.h" +#include "stddef.h" #include "interrupts.h" #include "port.h" @@ -24,6 +25,7 @@ typedef struct { int color_depth; uint8_t regs[NOF_MODE_REGS]; uint8_t *segment; + size_t segment_size; } vga_mode_t; typedef struct { |