[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