画面描画の高速化
フレームバッファでキャッシュを有効にしただけなんだけどさ。他の箇所でキャッシュが効きにくくなるしイマイチかなぁ。
Index: pxa2x0_lcd.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/xscale/pxa2x0_lcd.c,v retrieving revision 1.27 diff -u -r1.27 pxa2x0_lcd.c --- pxa2x0_lcd.c 29 Jan 2009 12:28:15 -0000 1.27 +++ pxa2x0_lcd.c 6 Mar 2009 09:49:56 -0000 @@ -307,6 +307,11 @@ /* Clear stickey status bits */ bus_space_write_4(iot, ioh, LCDC_LCSR, status); + if (sc->active) { + cpu_dcache_wb_range((vaddr_t)sc->active->buf_va, + sc->active->buf_size); + } + return 1; } @@ -362,7 +367,7 @@ /* Enable LCDC */ tmp = bus_space_read_4(iot, ioh, LCDC_LCCR0); - /*tmp &= ~LCCR0_SFM;*/ + tmp &= ~LCCR0_SFM; bus_space_write_4(iot, ioh, LCDC_LCCR0, tmp | LCCR0_ENB); restore_interrupts(save); @@ -531,7 +536,7 @@ } error = bus_dmamem_map(dma_tag, scr->segs, scr->nsegs, size, - (void **)&scr->buf_va, busdma_flag | BUS_DMA_COHERENT); + (void **)&scr->buf_va, busdma_flag /*| BUS_DMA_COHERENT*/); if (error) goto bad; @@ -576,7 +581,7 @@ } -#if 0 +#if 1 desc[0].ldcmd |= LDCMD_SOFINT; desc[1].ldcmd |= LDCMD_SOFINT; #endif @@ -892,7 +897,7 @@ return -1; return bus_dmamem_mmap(sc->dma_tag, scr->segs, scr->nsegs, - offset, prot, BUS_DMA_WAITOK|BUS_DMA_COHERENT); + offset, prot, BUS_DMA_WAITOK/*|BUS_DMA_COHERENT*/); }