[Mesa-dev] R600 tiling halves the frame rate

Marek Olšák maraeo at gmail.com
Tue Oct 30 17:28:03 PDT 2012


On Wed, Oct 31, 2012 at 1:20 AM, Tzvetan Mikov <tmikov at jupiter.com> wrote:
> 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)) {

I guess templ->bind is set to PIPE_BIND_SCANOUT, which turns off
tiling (or some other flag is set).

Marek


More information about the mesa-dev mailing list