diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-09-30 14:03:14 +0200 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2014-07-28 12:33:37 +0200 |
commit | fc6a00cf6dde2531bd17bb534f5e5b576632b08e (patch) | |
tree | 60a087f8acfaf2c39cec5e41b9558079647790a2 | |
parent | 4f4cccf8e63b96c42e7740252df4148c4905e033 (diff) | |
download | mesa-fc6a00cf6dde2531bd17bb534f5e5b576632b08e.tar.gz mesa-fc6a00cf6dde2531bd17bb534f5e5b576632b08e.tar.xz |
sync etna driver to 6e4d4cb
-rw-r--r-- | src/gallium/drivers/etna/etna_debug.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_internal.h | 2 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_pipe.c | 9 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_resource.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/etna/etna_screen.c | 7 |
5 files changed, 22 insertions, 4 deletions
diff --git a/src/gallium/drivers/etna/etna_debug.h b/src/gallium/drivers/etna/etna_debug.h index f75ae71dff..1274ffcba6 100644 --- a/src/gallium/drivers/etna/etna_debug.h +++ b/src/gallium/drivers/etna/etna_debug.h @@ -47,6 +47,7 @@ #define ETNA_DBG_MSAA_4X 0x40000 /* Force 4X MSAA for screen */ #define ETNA_DBG_FINISH_ALL 0x80000 /* Finish on every flush */ #define ETNA_DBG_FLUSH_ALL 0x100000 /* Flush after every rendered primitive */ +#define ETNA_DBG_ZERO 0x200000 /* Zero all resources after allocation */ extern uint32_t etna_mesa_debug; /* set in etna_screen.c from ETNA_DEBUG */ diff --git a/src/gallium/drivers/etna/etna_internal.h b/src/gallium/drivers/etna/etna_internal.h index 7e534a171d..d9eaaafade 100644 --- a/src/gallium/drivers/etna/etna_internal.h +++ b/src/gallium/drivers/etna/etna_internal.h @@ -39,6 +39,8 @@ #define ETNA_RS_WIDTH_MASK (16-1) /* RS tiled operations must have height%4 = 0 */ #define ETNA_RS_HEIGHT_MASK (3) +/* PE render targets must be aligned to 64 bytes */ +#define ETNA_PE_ALIGNMENT (64) /* GPU chip 3D specs */ struct etna_pipe_specs diff --git a/src/gallium/drivers/etna/etna_pipe.c b/src/gallium/drivers/etna/etna_pipe.c index fd7e4c34eb..e5b20a0f3e 100644 --- a/src/gallium/drivers/etna/etna_pipe.c +++ b/src/gallium/drivers/etna/etna_pipe.c @@ -939,7 +939,6 @@ static void etna_pipe_set_framebuffer_state(struct pipe_context *pipe, int nr_samples_color = -1; int nr_samples_depth = -1; - /* Set up TS as well. Warning: this state is used by both the RS and PE */ uint32_t ts_mem_config = 0; if(sv->nr_cbufs > 0) /* at least one color buffer? */ @@ -953,6 +952,14 @@ static void etna_pipe_set_framebuffer_state(struct pipe_context *pipe, (color_supertiled ? VIVS_PE_COLOR_FORMAT_SUPER_TILED : 0); /* XXX VIVS_PE_COLOR_FORMAT_OVERWRITE and the rest comes from blend_state / depth_stencil_alpha */ /* merged with depth_stencil_alpha */ + if((cbuf->surf.address & 63) || (((cbuf->surf.stride*4) & 63) && cbuf->surf.height > 4)) + { + /* XXX Must get temporary surface here. + */ + printf("%s: Alignment error, trying to render to %08x with tile stride %i\n", __func__, + cbuf->surf.address, cbuf->surf.stride*4); + } + if (priv->ctx->conn->chip.pixel_pipes == 1) { cs->PE_COLOR_ADDR = cbuf->surf.address; diff --git a/src/gallium/drivers/etna/etna_resource.c b/src/gallium/drivers/etna/etna_resource.c index 6d52a925d5..3a2272da26 100644 --- a/src/gallium/drivers/etna/etna_resource.c +++ b/src/gallium/drivers/etna/etna_resource.c @@ -203,7 +203,7 @@ static struct pipe_resource * etna_screen_resource_create(struct pipe_screen *sc mip->layer_stride = align(mip->padded_width, divSizeX)/divSizeX * align(mip->padded_height, divSizeY)/divSizeY * element_size; mip->size = templat->array_size * mip->layer_stride; - offset += mip->size; + offset += align(mip->size, ETNA_PE_ALIGNMENT); /* align mipmaps to 64 bytes to be able to render to them */ if(ix == max_mip_level || (x == 1 && y == 1)) break; // stop at last level x = (x+1)>>1; @@ -249,6 +249,11 @@ static struct pipe_resource * etna_screen_resource_create(struct pipe_screen *sc resource->ts = 0; /* TS is only created when first bound to surface */ pipe_reference_init(&resource->base.reference, 1); + if(DBG_ENABLED(ETNA_DBG_ZERO)) + { + memset(resource->surface->logical, 0, rt_size); + } + for(unsigned ix=0; ix<=resource->base.last_level; ++ix) { struct etna_resource_level *mip = &resource->levels[ix]; diff --git a/src/gallium/drivers/etna/etna_screen.c b/src/gallium/drivers/etna/etna_screen.c index f9c8420b8e..d62b11190c 100644 --- a/src/gallium/drivers/etna/etna_screen.c +++ b/src/gallium/drivers/etna/etna_screen.c @@ -65,7 +65,8 @@ static void etna_set_debug_flags(const char *str) { "msaa2x", ETNA_DBG_MSAA_2X }, { "msaa4x", ETNA_DBG_MSAA_4X }, { "finish_all", ETNA_DBG_FINISH_ALL }, - { "flush_all", ETNA_DBG_FLUSH_ALL } + { "flush_all", ETNA_DBG_FLUSH_ALL }, + { "zero", ETNA_DBG_ZERO } }; int i; @@ -315,6 +316,7 @@ static int etna_screen_get_shader_param( struct pipe_screen *screen, unsigned sh static int etna_screen_get_video_param( struct pipe_screen *screen, enum pipe_video_profile profile, + enum pipe_video_entrypoint entrypoint, enum pipe_video_cap param ) { DBG("unimplemented etna_screen_get_video_param"); @@ -419,7 +421,8 @@ static boolean etna_screen_is_format_supported( struct pipe_screen *screen, static boolean etna_screen_is_video_format_supported( struct pipe_screen *screen, enum pipe_format format, - enum pipe_video_profile profile ) + enum pipe_video_profile profile, + enum pipe_video_entrypoint entrypoint ) { DBG("unimplemented etna_screen_is_video_format_supported"); return false; |