diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-10-14 21:42:19 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-10-14 21:42:19 +0200 |
commit | 107db54e8745af3304a29a3e0694b85db4e424a7 (patch) | |
tree | 0cb355ec8e52efcf60197ee00b147eac7490cff3 /src | |
parent | a9210fb96d3403db0e2b932e4b0a28b9e7bd90d9 (diff) | |
download | etna_viv-107db54e8745af3304a29a3e0694b85db4e424a7.tar.gz etna_viv-107db54e8745af3304a29a3e0694b85db4e424a7.tar.xz |
fbdemos: use new way of passing fb
Pass buffer object here instead of raw physical address.
Diffstat (limited to 'src')
-rw-r--r-- | src/fb/alpha_blend.c | 2 | ||||
-rw-r--r-- | src/fb/cube_companion.c | 2 | ||||
-rw-r--r-- | src/fb/cubemap_sphere.c | 2 | ||||
-rw-r--r-- | src/fb/displacement.c | 2 | ||||
-rw-r--r-- | src/fb/mip_cube.c | 2 | ||||
-rw-r--r-- | src/fb/particle_system.c | 2 | ||||
-rw-r--r-- | src/fb/ps_sandbox.c | 2 | ||||
-rw-r--r-- | src/fb/rotate_cube.c | 2 | ||||
-rw-r--r-- | src/fb/stencil_test.c | 2 | ||||
-rw-r--r-- | src/fb_old/cube_companion.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/alpha_blend.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/cube_companion.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/cubemap_sphere.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/displacement.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/mip_cube.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/particle_system.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/rotate_cube.c | 2 | ||||
-rw-r--r-- | src/fb_rawshader/stencil_test.c | 2 | ||||
-rw-r--r-- | src/lib/fbdemos.c | 30 | ||||
-rw-r--r-- | src/lib/fbdemos.h | 10 |
20 files changed, 36 insertions, 40 deletions
diff --git a/src/fb/alpha_blend.c b/src/fb/alpha_blend.c index 3d0a553..376f3ab 100644 --- a/src/fb/alpha_blend.c +++ b/src/fb/alpha_blend.c @@ -354,7 +354,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/cube_companion.c b/src/fb/cube_companion.c index 8e565ed..424977e 100644 --- a/src/fb/cube_companion.c +++ b/src/fb/cube_companion.c @@ -410,7 +410,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/cubemap_sphere.c b/src/fb/cubemap_sphere.c index d6895fc..07a4403 100644 --- a/src/fb/cubemap_sphere.c +++ b/src/fb/cubemap_sphere.c @@ -388,7 +388,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/displacement.c b/src/fb/displacement.c index b01888e..0df78af 100644 --- a/src/fb/displacement.c +++ b/src/fb/displacement.c @@ -421,7 +421,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/mip_cube.c b/src/fb/mip_cube.c index 5f262e1..d197078 100644 --- a/src/fb/mip_cube.c +++ b/src/fb/mip_cube.c @@ -535,7 +535,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/particle_system.c b/src/fb/particle_system.c index 18bc4b2..0e7f8b0 100644 --- a/src/fb/particle_system.c +++ b/src/fb/particle_system.c @@ -398,7 +398,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/ps_sandbox.c b/src/fb/ps_sandbox.c index f0d7739..410b20b 100644 --- a/src/fb/ps_sandbox.c +++ b/src/fb/ps_sandbox.c @@ -357,7 +357,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/rotate_cube.c b/src/fb/rotate_cube.c index d61e70f..8988977 100644 --- a/src/fb/rotate_cube.c +++ b/src/fb/rotate_cube.c @@ -423,7 +423,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb/stencil_test.c b/src/fb/stencil_test.c index eea8463..121d75b 100644 --- a/src/fb/stencil_test.c +++ b/src/fb/stencil_test.c @@ -509,7 +509,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_old/cube_companion.c b/src/fb_old/cube_companion.c index f005a0f..414525e 100644 --- a/src/fb_old/cube_companion.c +++ b/src/fb_old/cube_companion.c @@ -672,7 +672,7 @@ int main(int argc, char **argv) etna_set_state(ctx, VIVS_RS_CLEAR_CONTROL, VIVS_RS_CLEAR_CONTROL_MODE_DISABLED); etna_set_state(ctx, VIVS_RS_EXTRA_CONFIG, 0); etna_set_state(ctx, VIVS_RS_SOURCE_ADDR, etna_bo_gpu_address(rt)); - etna_set_state(ctx, VIVS_RS_DEST_ADDR, fbs->fb.physical[backbuffer]); + etna_set_state(ctx, VIVS_RS_DEST_ADDR, etna_bo_gpu_address(fbs->fb.buffer[backbuffer])); etna_set_state(ctx, VIVS_RS_WINDOW_SIZE, VIVS_RS_WINDOW_SIZE_HEIGHT(height * supersample_y) | VIVS_RS_WINDOW_SIZE_WIDTH(width * supersample_x)); diff --git a/src/fb_rawshader/alpha_blend.c b/src/fb_rawshader/alpha_blend.c index 87f763f..45bec5f 100644 --- a/src/fb_rawshader/alpha_blend.c +++ b/src/fb_rawshader/alpha_blend.c @@ -367,7 +367,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/cube_companion.c b/src/fb_rawshader/cube_companion.c index dbb3f3e..12f79e4 100644 --- a/src/fb_rawshader/cube_companion.c +++ b/src/fb_rawshader/cube_companion.c @@ -415,7 +415,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/cubemap_sphere.c b/src/fb_rawshader/cubemap_sphere.c index 9a199c5..b5d706c 100644 --- a/src/fb_rawshader/cubemap_sphere.c +++ b/src/fb_rawshader/cubemap_sphere.c @@ -397,7 +397,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/displacement.c b/src/fb_rawshader/displacement.c index 64d3c6f..e58c27c 100644 --- a/src/fb_rawshader/displacement.c +++ b/src/fb_rawshader/displacement.c @@ -431,7 +431,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/mip_cube.c b/src/fb_rawshader/mip_cube.c index 2334de8..e07c2e5 100644 --- a/src/fb_rawshader/mip_cube.c +++ b/src/fb_rawshader/mip_cube.c @@ -501,7 +501,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/particle_system.c b/src/fb_rawshader/particle_system.c index 2f4f9ee..305879c 100644 --- a/src/fb_rawshader/particle_system.c +++ b/src/fb_rawshader/particle_system.c @@ -400,7 +400,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/rotate_cube.c b/src/fb_rawshader/rotate_cube.c index 0c6a7c3..702d5c4 100644 --- a/src/fb_rawshader/rotate_cube.c +++ b/src/fb_rawshader/rotate_cube.c @@ -431,7 +431,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/fb_rawshader/stencil_test.c b/src/fb_rawshader/stencil_test.c index 1d9280f..fecd87e 100644 --- a/src/fb_rawshader/stencil_test.c +++ b/src/fb_rawshader/stencil_test.c @@ -528,7 +528,7 @@ int main(int argc, char **argv) etna_swap_buffers(fbs->buffers); } #ifdef DUMP - bmp_dump32(fbs->fb.logical[1-fbs->buffers->backbuffer], width, height, false, "/mnt/sdcard/fb.bmp"); + bmp_dump32(etna_bo_map(fbs->fb.buffer[1-fbs->buffers->backbuffer]), width, height, false, "/mnt/sdcard/fb.bmp"); printf("Dump complete\n"); #endif fbdemo_free(fbs); diff --git a/src/lib/fbdemos.c b/src/lib/fbdemos.c index 7b83096..8763ef4 100644 --- a/src/lib/fbdemos.c +++ b/src/lib/fbdemos.c @@ -22,6 +22,7 @@ */ #include "fbdemos.h" +#include <etnaviv/etna_bo.h> #include "etna_pipe.h" #include "etna_translate.h" #include "etna_screen.h" @@ -53,14 +54,6 @@ void fbdemo_init(struct fbdemos_scaffold **out) { struct fbdemos_scaffold *fbs = CALLOC_STRUCT(fbdemos_scaffold); int rv; - - rv = fb_open(0, &fbs->fb); - if(rv!=0) - { - exit(1); - } - fbs->width = fbs->fb.fb_var.xres; - fbs->height = fbs->fb.fb_var.yres; if(getenv("ETNA_MSAA_SAMPLES")) fbdemos_msaa_samples = atoi(getenv("ETNA_MSAA_SAMPLES")); @@ -73,6 +66,14 @@ void fbdemo_init(struct fbdemos_scaffold **out) } printf("Succesfully opened device\n"); + rv = fb_open(fbs->conn, 0, &fbs->fb); + if(rv!=0) + { + exit(1); + } + fbs->width = fbs->fb.fb_var.xres; + fbs->height = fbs->fb.fb_var.yres; + /* Create screen */ if((fbs->screen = etna_screen_create(fbs->conn)) == NULL) { @@ -166,7 +167,7 @@ void etna_convert_r8g8b8_to_b8g8r8x8(uint32_t *dst, const uint8_t *src, unsigned } /* Open framebuffer and get information */ -int fb_open(int num, struct fb_info *out) +int fb_open(struct viv_conn *conn, int num, struct fb_info *out) { char devname[256]; memset(out, 0, sizeof(struct fb_info)); @@ -211,8 +212,6 @@ int fb_open(int num, struct fb_info *out) out->stride = out->fb_fix.line_length; out->buffer_stride = out->stride * out->fb_var.yres; out->num_buffers = out->fb_fix.smem_len / out->buffer_stride; - out->map = mmap(NULL, out->fb_fix.smem_len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - printf(" mmap: %p\n", out->map); if(out->num_buffers > ETNA_FB_MAX_BUFFERS) out->num_buffers = ETNA_FB_MAX_BUFFERS; @@ -226,8 +225,9 @@ int fb_open(int num, struct fb_info *out) for(int idx=0; idx<out->num_buffers; ++idx) { - out->physical[idx] = out->fb_fix.smem_start + idx * out->buffer_stride; - out->logical[idx] = (void*)((size_t)out->map + idx * out->buffer_stride); + out->buffer[idx] = etna_bo_from_fbdev(conn, fd, + idx * out->buffer_stride, + out->buffer_stride); } printf("number of fb buffers: %i\n", out->num_buffers); int req_virth = (out->num_buffers * out->fb_var.yres); @@ -272,8 +272,6 @@ int fb_set_buffer(struct fb_info *fb, int buffer) int fb_close(struct fb_info *fb) { - if(fb->map) - munmap(fb->map, fb->fb_fix.smem_len); close(fb->fd); return 0; } @@ -297,7 +295,7 @@ int etna_fb_bind_resource(struct fb_info *fb, struct pipe_resource *rt_resource_ .source_stride = rt_resource->levels[0].stride, .dest_format = fb->rs_format, .dest_tiling = ETNA_LAYOUT_LINEAR, - .dest_addr = fb->physical[bi], + .dest_addr = etna_bo_gpu_address(fb->buffer[bi]), .dest_stride = fb->fb_fix.line_length, .downsample_x = msaa_xscale > 1, .downsample_y = msaa_yscale > 1, diff --git a/src/lib/fbdemos.h b/src/lib/fbdemos.h index 9079fea..e39285e 100644 --- a/src/lib/fbdemos.h +++ b/src/lib/fbdemos.h @@ -29,19 +29,17 @@ #define ETNA_FB_MAX_BUFFERS (2) /* double buffering is enough */ struct pipe_resource; +struct etna_bo; + struct fb_info { int fd; int num_buffers; - /* GPU addresses of buffers */ - size_t physical[ETNA_FB_MAX_BUFFERS]; - /* CPU addresses of buffers */ - void *logical[ETNA_FB_MAX_BUFFERS]; + struct etna_bo *buffer[ETNA_FB_MAX_BUFFERS]; size_t stride; size_t buffer_stride; struct fb_var_screeninfo fb_var; struct fb_fix_screeninfo fb_fix; - void *map; struct etna_resource *resource; struct compiled_rs_state copy_to_screen[ETNA_FB_MAX_BUFFERS]; @@ -79,7 +77,7 @@ void etna_pipe_inline_write(struct pipe_context *pipe, struct pipe_resource *res void etna_convert_r8g8b8_to_b8g8r8x8(uint32_t *dst, const uint8_t *src, unsigned num_pixels); /* Open framebuffer and get information */ -int fb_open(int num, struct fb_info *out); +int fb_open(struct viv_conn *conn, int num, struct fb_info *out); /* Set currently visible buffer id */ int fb_set_buffer(struct fb_info *fb, int buffer); |