summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-14 21:42:19 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-14 21:42:19 +0200
commit107db54e8745af3304a29a3e0694b85db4e424a7 (patch)
tree0cb355ec8e52efcf60197ee00b147eac7490cff3 /src
parenta9210fb96d3403db0e2b932e4b0a28b9e7bd90d9 (diff)
downloadetna_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.c2
-rw-r--r--src/fb/cube_companion.c2
-rw-r--r--src/fb/cubemap_sphere.c2
-rw-r--r--src/fb/displacement.c2
-rw-r--r--src/fb/mip_cube.c2
-rw-r--r--src/fb/particle_system.c2
-rw-r--r--src/fb/ps_sandbox.c2
-rw-r--r--src/fb/rotate_cube.c2
-rw-r--r--src/fb/stencil_test.c2
-rw-r--r--src/fb_old/cube_companion.c2
-rw-r--r--src/fb_rawshader/alpha_blend.c2
-rw-r--r--src/fb_rawshader/cube_companion.c2
-rw-r--r--src/fb_rawshader/cubemap_sphere.c2
-rw-r--r--src/fb_rawshader/displacement.c2
-rw-r--r--src/fb_rawshader/mip_cube.c2
-rw-r--r--src/fb_rawshader/particle_system.c2
-rw-r--r--src/fb_rawshader/rotate_cube.c2
-rw-r--r--src/fb_rawshader/stencil_test.c2
-rw-r--r--src/lib/fbdemos.c30
-rw-r--r--src/lib/fbdemos.h10
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);