[Mesa-dev] R600 tiling halves the frame rate

Tzvetan Mikov tmikov at jupiter.com
Tue Oct 30 17:20:17 PDT 2012


On 10/30/2012 11:45 AM, Jerome Glisse wrote:
> So tested, it's something inside egl that lead to this, same program
> as yours with glut on X11 with 2d tiling enabled and 2d color tiling
> have a slight advantage 140fps vs 137fps (windowed so there is a blit
> which would account for a hugue chunk of perf diff with fglrx).
>
> However using egl i got 70fps with color tiling and 74fps without. So
> something in egl is slowing things down.

Thanks a lot! I reproduced the same results here and I think I have 
figured out what the problem is. The frame buffer is always created in 
linear mode. The temporary hack included below doubles the performance 
for me with EGL.

Could you please check if it has the same result for you?

If it does, what would be the next step to address this? I guess I could 
try to prepare a real patch to fix this, as soon as I figure the right 
way to do it... :-) I am new to Mesa, but I am making my way through the 
code base.

regards,
Tzvetan


commit 10bb3497caba1655022a53a3a04c81be6e122faa
Author: Tzvetan Mikov <tmikov at jupiter.com>
Date:   Tue Oct 30 17:12:42 2012 -0700

     r600_texture.c: HACK to enforce tiling in the default case

diff --git a/src/gallium/drivers/r600/r600_texture.c 
b/src/gallium/drivers/r600/r600_texture.c
index 85e4e0c..f415de3 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -450,7 +450,7 @@ struct pipe_resource *r600_texture_create(struct 
pipe_screen *screen,
  {
  	struct r600_screen *rscreen = (struct r600_screen*)screen;
  	struct radeon_surface surface;
-	unsigned array_mode = 0;
+	unsigned array_mode = V_038000_ARRAY_1D_TILED_THIN1;
  	int r;

  	if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER)) {




More information about the mesa-dev mailing list