- Timestamp:
- Nov 21, 2015, 2:25:14 PM (9 years ago)
- Location:
- soft/giet_vm/applications
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
soft/giet_vm/applications/display/display.c
r720 r724 66 66 giet_fbf_alloc(); 67 67 68 // get a Chained Buffer DMA channel 69 giet_fbf_cma_alloc( );68 // get a Chained Buffer DMA channel for two user buffers 69 giet_fbf_cma_alloc( 2 ); 70 70 71 // initialize the source and destination chbufs 72 giet_fbf_cma_init_buf( buf0 , buf1 , sts0 , sts1 ); 71 // register the two user buffers 72 giet_fbf_cma_init_buf( 0 , buf0 , sts0 ); 73 giet_fbf_cma_init_buf( 1 , buf1 , sts1 ); 73 74 74 // start C hained Buffer DMA channel75 giet_fbf_cma_start( NPIXELS*NLINES);75 // start CMA peripheral 76 giet_fbf_cma_start(); 76 77 77 78 giet_tty_printf("\n[DISPLAY] Proc[%d,%d,%d] starts CMA at cycle %d\n", … … 81 82 while ( 1 ) 82 83 { 83 // load buf0 84 giet_fat_read( fd, buf0, NPIXELS*NLINES ); 85 86 giet_tty_printf("\n[DISPLAY] Proc[%d,%d,%d] load image %d at cycle %d\n", 87 x, y, p, image, giet_proctime() ); 88 89 // display buf0 90 giet_fbf_cma_display( 0 ); 84 ////// handling buf0 85 giet_fbf_cma_check( 0 ); // check buf0 empty 86 giet_fat_read( fd, buf0, NPIXELS*NLINES ); // load buf0 from disk 87 giet_fbf_cma_display( 0 ); // display buf0 91 88 92 89 giet_tty_printf("\n[DISPLAY] Proc[%d,%d,%d] display image %d at cycle %d\n", 93 90 x, y, p, image, giet_proctime() ); 94 95 91 image++; 96 92 … … 98 94 { 99 95 image = 0; 100 giet_fat_lseek( fd , 0 , 0);96 giet_fat_lseek( fd , 0 , SEEK_SET ); 101 97 } 102 98 103 99 if ( INTERACTIVE ) giet_tty_getc( &byte ); 104 100 105 // load buf1 106 giet_fat_read( fd, buf1, NPIXELS*NLINES ); 107 108 giet_tty_printf("\n[DISPLAY] Proc[%d,%d,%d] load image %d at cycle %d\n", 109 x, y, p, image, giet_proctime() ); 110 111 // display buf1 112 giet_fbf_cma_display( 1 ); 101 ////// handling buf1 102 giet_fbf_cma_check( 1 ); // check buf1 empty 103 giet_fat_read( fd, buf1, NPIXELS*NLINES ); // load buf1 from disk 104 giet_fbf_cma_display( 1 ); // display buf1 113 105 114 106 giet_tty_printf("\n[DISPLAY] Proc[%d,%d,%d] display image %d at cycle %d\n", 115 107 x, y, p, image, giet_proctime() ); 116 117 108 image++; 118 109 … … 120 111 { 121 112 image = 0; 122 giet_fat_lseek( fd , 0 , 0);113 giet_fat_lseek( fd , 0 , SEEK_SET ); 123 114 } 124 115 -
soft/giet_vm/applications/display/display.py
r708 r724 22 22 x = 0 23 23 y = 0 24 p = 224 p = 0 25 25 26 26 # define vsegs base & size -
soft/giet_vm/applications/gameoflife/gameoflife.c
r721 r724 260 260 giet_fbf_alloc(); 261 261 262 // get a Chained Buffer DMA channel 263 giet_fbf_cma_alloc(); 264 265 // initializes the source and destination buffers 266 giet_fbf_cma_init_buf( &display[0][0][0] , 267 &display[1][0][0] , 268 status0 , 269 status1 ); 262 // get a CMA channel for two user buffers 263 giet_fbf_cma_alloc( 2 ); 264 265 // register the user buffers 266 giet_fbf_cma_init_buf( 0 , &display[0][0][0] , status0 ); 267 giet_fbf_cma_init_buf( 1 , &display[1][0][0] , status1 ); 270 268 271 269 // activates CMA channel 272 giet_fbf_cma_start( height * width);270 giet_fbf_cma_start(); 273 271 274 272 // initializes distributed heap -
soft/giet_vm/applications/raycast/disp.c
r708 r724 19 19 20 20 extern unsigned char* g_tex[5]; 21 extern unsigned char* buf[2]; 22 extern void* sts[2]; 23 extern unsigned int cur_buf; 21 extern unsigned char* buf; 22 extern void* sts; 24 23 extern unsigned int slice_x; 25 24 extern unsigned int slice_count; … … 38 37 int ymax = (y1 < FBUF_Y_SIZE ? y1 : FBUF_Y_SIZE); 39 38 40 for (; y < ymax; y++) { 39 for (; y < ymax; y++) 40 { 41 41 // Find texture coordinate 42 42 int ty = (y - y0) * TEX_SIZE / (y1 - y0); 43 43 44 buf[ cur_buf][y * FBUF_X_SIZE + x] = line[ty];44 buf[y * FBUF_X_SIZE + x] = line[ty]; 45 45 } 46 46 } … … 52 52 int ymax = (y1 < FBUF_Y_SIZE ? y1 : FBUF_Y_SIZE); 53 53 54 for (; y < ymax; y++) { 55 buf[cur_buf][y * FBUF_X_SIZE + x] = color; 54 for (; y < ymax; y++) 55 { 56 buf[y * FBUF_X_SIZE + x] = color; 56 57 } 57 58 } -
soft/giet_vm/applications/raycast/raycast.c
r712 r724 9 9 /////////////////////// 10 10 11 unsigned char* buf[2]; // one image per buffer 12 void * sts[2]; // for fbf_cma 13 unsigned int cur_buf; // current buffer 11 unsigned char* buf; // one image buffer 12 void * sts; // buffer status 14 13 volatile unsigned int slice_x; // slice index (shared) 15 14 volatile unsigned int slice_count; // slice count (shared) … … 84 83 sqt_lock_init( &slice_done_lock, w , h , p ); 85 84 86 // Allocate buffers 87 buf[0] = malloc(FBUF_X_SIZE * FBUF_Y_SIZE); 88 buf[1] = malloc(FBUF_X_SIZE * FBUF_Y_SIZE); 89 sts[0] = malloc(64); 90 sts[1] = malloc(64); 85 // Allocate buffer and status for CMA 86 buf = malloc(FBUF_X_SIZE * FBUF_Y_SIZE); 87 sts = malloc(64); 91 88 92 // Initialize frame buffer and start Chained buffer DMA89 // Get frame buffer ownership 93 90 giet_fbf_alloc(); 94 giet_fbf_cma_alloc(); 95 giet_fbf_cma_init_buf(buf[0], buf[1], sts[0], sts[1]); 96 giet_fbf_cma_start(FBUF_X_SIZE * FBUF_Y_SIZE); 97 cur_buf = 0; 91 92 // Get a CMA channel for one single user buffer 93 giet_fbf_cma_alloc( 1 ); 94 95 // Register the user buffer and status 96 giet_fbf_cma_init_buf( 0 , buf , sts ); 97 98 // Start Chained buffer DMA 99 giet_fbf_cma_start(); 98 100 99 101 // Load textures … … 122 124 } 123 125 124 125 126 126 // Game main loop : display one frame 127 127 // and get one player move per iteration 128 128 while ( game.exit == 0 ) 129 129 { 130 // initialise synchronisation variables 131 // this actually allows the render threads to make useful work 130 // check user buffer empty 131 giet_fbf_cma_check( 0 ); 132 133 // re-initialise synchronisation variables 134 // to start parallel synthesis 132 135 slice_count = 0; 133 136 slice_x = 0; 134 137 135 // contribute to build current buffer138 // contribute to synthesis 136 139 unsigned int slice; 137 140 while ( dispRenderSlice( &slice ) ); … … 140 143 while (slice_count < FBUF_X_SIZE) giet_tty_printf(" "); 141 144 142 // Flip buffer 143 giet_fbf_cma_display(cur_buf); 144 cur_buf = 1 - cur_buf; 145 // display image 146 giet_fbf_cma_display( 0 ); 145 147 146 148 // get new player position [x,y,dir]
Note: See TracChangeset
for help on using the changeset viewer.