diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-10-14 19:38:23 +0200 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2014-07-28 12:33:38 +0200 |
commit | 6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e (patch) | |
tree | 7e38c37f097f41f24c0c6a096024636250dc8845 | |
parent | 8335f4be315190489890200e5e7c2b43d3fe31bc (diff) | |
download | mesa-6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e.tar.gz mesa-6563b9ffec0f39f4cf3cc8dcf080167ed0c88f9e.tar.xz |
fbdev_etna: use bo object for framebuffer
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_screen.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_screen.h | 3 | ||||
-rw-r--r-- | src/gallium/winsys/etna/fbdev/etna_fbdev_winsys.c | 8 |
4 files changed, 11 insertions, 8 deletions
@@ -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 || |