summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-14 19:38:23 +0200
committerLucas Stach <l.stach@pengutronix.de>2014-07-28 12:33:38 +0200
commit6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e (patch)
tree7e38c37f097f41f24c0c6a096024636250dc8845
parent8335f4be315190489890200e5e7c2b43d3fe31bc (diff)
downloadmesa-6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e.tar.gz
mesa-6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e.tar.xz
fbdev_etna: use bo object for framebuffer
-rw-r--r--README.md4
-rw-r--r--src/gallium/drivers/etna/etna_screen.c4
-rw-r--r--src/gallium/drivers/etna/etna_screen.h3
-rw-r--r--src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c8
4 files changed, 11 insertions, 8 deletions
diff --git a/README.md b/README.md
index 5f2d4121a3..1996e11937 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,8 @@ My configure script for cubox:
#!/bin/bash
DIR=... # path to target headers and libraries
ETNAVIV_BASE="${HOME}/projects/etna_viv"
-ETNAVIV_LIB="${ETNAVIV_BASE}/native/etnaviv"
-ETNAVIV_INC="${ETNAVIV_BASE}/native"
+ETNAVIV_LIB="${ETNAVIV_BASE}/src/etnaviv" # important!
+ETNAVIV_INC="${ETNAVIV_BASE}/src" # important!
export TARGET="arm-linux-gnueabihf"
export CFLAGS="-I${DIR}/cubox/include -I${ETNAVIV_INC}"
diff --git a/src/gallium/drivers/etna/etna_screen.c b/src/gallium/drivers/etna/etna_screen.c
index 7d21d37512..6a8f2bfcc9 100644
--- a/src/gallium/drivers/etna/etna_screen.c
+++ b/src/gallium/drivers/etna/etna_screen.c
@@ -478,7 +478,7 @@ static void etna_screen_flush_frontbuffer( struct pipe_screen *screen,
.source_stride = rt_resource->levels[level].stride,
.dest_format = drawable->rs_format,
.dest_tiling = ETNA_LAYOUT_LINEAR,
- .dest_addr = drawable->addr,
+ .dest_addr = etna_bo_gpu_address(drawable->bo),
.dest_stride = drawable->stride,
.downsample_x = msaa_xscale > 1,
.downsample_y = msaa_yscale > 1,
@@ -492,7 +492,7 @@ static void etna_screen_flush_frontbuffer( struct pipe_screen *screen,
DBG_F(ETNA_DBG_FRAME_MSGS,
"Queued RS command to flush screen from %08x to %08x stride=%08x width=%i height=%i, ctx %p",
etna_bo_gpu_address(rt_resource->bo) + rt_resource->levels[level].offset,
- drawable->addr, drawable->stride,
+ etna_bo_gpu_address(drawable->bo), drawable->stride,
drawable->width, drawable->height, ctx);
ectx->base.flush(&ectx->base, &drawable->fence, 0);
}
diff --git a/src/gallium/drivers/etna/etna_screen.h b/src/gallium/drivers/etna/etna_screen.h
index 074f0ffb91..80ccd2cf0a 100644
--- a/src/gallium/drivers/etna/etna_screen.h
+++ b/src/gallium/drivers/etna/etna_screen.h
@@ -29,6 +29,7 @@
#include "os/os_thread.h"
struct viv_conn;
+struct etna_bo;
#define ETNA_SCREEN_NAME_LEN (64)
/* Gallium screen structure for etna driver.
@@ -48,7 +49,7 @@ struct etna_rs_target
unsigned rs_format;
bool swap_rb;
unsigned width, height;
- size_t addr; /* GPU address */
+ struct etna_bo *bo;
size_t stride;
struct pipe_fence_handle *fence;
};
diff --git a/src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c b/src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c
index 9e831db515..ea92712ae2 100644
--- a/src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c
+++ b/src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c
@@ -11,6 +11,7 @@
#include "etna/etna_screen.h"
#include <etnaviv/viv.h>
+#include <etnaviv/etna_bo.h>
#include <etnaviv/etna_fb.h>
#include <stdio.h>
@@ -41,6 +42,7 @@ static void *etna_fbdev_create_drawable(struct native_fbdev_screen *fbdev_screen
struct etna_rs_target *drawable = CALLOC_STRUCT(etna_rs_target);
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
+ struct etna_screen *screen = etna_screen(fbdev_screen->screen);
if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo))
return NULL;
@@ -63,9 +65,9 @@ static void *etna_fbdev_create_drawable(struct native_fbdev_screen *fbdev_screen
drawable->width = width;
drawable->height = height;
- drawable->addr = finfo.smem_start +
- finfo.line_length * yoffset +
- vinfo.bits_per_pixel / 8 * xoffset;
+ drawable->bo = etna_bo_from_fbdev(screen->dev, fd,
+ finfo.line_length * yoffset + vinfo.bits_per_pixel / 8 * xoffset,
+ finfo.line_length * height);
drawable->stride = finfo.line_length;
if(width == 0 || height == 0 ||