first_demo:framebuffer
This is an old revision of the document!
The library is very much in its infancy…GitHub will be coming online soon but here is a taste of how you might do a simple software only framebuffer:
[code] #include <zephyr.h> #include <device.h> #include <devicetree.h>
#include <math.h> #include <string.h>
the retro watch sdk includes #include “lcd.h” #define SCREEN_WIDTH 240 #define SCREEN_HEIGHT 240 convert 565 rgb into 16 bit word and swap bytes for lcd uint16_t rgb(int r, int g, int b) {
uint16_t c = (((r) << 11) | ((g) << 5) | (b));
return ((c >> 8) & 0xFF) | ((c & 0xFF) << 8);
}
void main(void) {
uint16_t *frame_buffer;
printk("hello cruel world\n");
//initialize the lcd lcd_configure();
while(1) { //swaps buffers and DMA previous buffer to LCD lcd_update_screen();
//get new back buffer frame_buffer = lcd_get_buffer();
for(int ix = 0; ix < SCREEN_WIDTH; ix++) { for(int iy = 0; iy < SCREEN_HEIGHT; iy++) { //fill frame buffer with a simple xor pattern frame_buffer[ix + iy * SCREEN_WIDTH] = rgb((ix ^ iy)>>3, iy>>2, ix>>3); } } }
}
[/code]
first_demo/framebuffer.1637175909.txt.gz · Last modified: 2021/11/17 14:05 by jason