I tried the patch, but unlike kernel 3.5 which gives me a huge performance improvement, I don't see any performance improvements with this patch.
I think you are forgetting how the developers work and assuming conspiracy where none exists. In general they will work on a new feature for all generations (in this case 2xxx through NI) but things will start working on one generation before others as a consequence of generation-to-generation quirks. The developers don't choose this, it just works out that way.
If you are saying "developers should be forbidden from working on newer generations until everything is finished on older generations" then the overall rate of progress would drop dramatically, since it's generally a lot faster to write code for a new feature designed to work across all the generations supported by the driver than to only look at older parts. In this case hyper-z and the backend work are pretty interdependent IIRC and both were happening at the same time, so it seems to make sense that Jerome would have had an Evergreen card in his system when it all came together.
Anyways, key point here is that most of these features are implemented for multiple generations at the same time, and it's luck of the draw which generation starts working first. If you assume conspiracy or lack of care for older hardware each time that happens you're going to be whipsawing between happiness and misery for no good reason. You probably owe the developers a bit of an apology.
I tried the patch, but unlike kernel 3.5 which gives me a huge performance improvement, I don't see any performance improvements with this patch.
Looking through the patch, it looks like the patch disables HyperZ by default:
If you run your program (example = glxgears) withCode:diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index e0ee823..7004ff9 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -942,6 +942,7 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws) rscreen->use_surface_alloc = debug_get_bool_option("R600_SURF", TRUE); rscreen->glsl_feature_level = debug_get_bool_option("R600_GLSL130", TRUE) ? 130 : 120; + rscreen->use_hyperz = debug_get_bool_option("R600_HYPERZ", FALSE);, then maybe performance will change...Code:R600_HYPERZ=1 glxgears
From the Bug thread on FD.o, it sounds like all of the kernel patches are upstream, but I haven't checked if the DDX patches have all made it there yet. If this doesn't work, or throws errors, you might want to check that.
Last edited by Veerappan; 06-06-2012 at 08:05 AM.
The Hiz patches add support for all asics supported by r600g (6xx, 7xx, evergreen, NI). Most of the code is shared since the programming model is very similar across generations (in fact it works very similarly in SI). There were various issues with chips from all generations which have finally been solved. It just happened that the last remaining issue was an evergreen one. There was no conscious decision to hold back certain asics.
Also, all r600g chips can support OpenGL 3, no one has said it would be evergreen only.
HD2000-HD4000 are not second class citizen, the evergreen fix also apply to R7XX generation (HD4xxx). And all the kernel work on the backend stuff was needed and also impact R7XX and in smaller way R6XX GPU. The commit message might have more emphasis on evergreen but it's just due to the fact that at the time i was on an evergreen. You need to understand that we have many GPU and we keep switching btw generation and sometimes when things start to come into shape we might not stress what it does on all generations.
Juniper (5750)
You can download a demo hereWhere can i download FEAR ?
http://www.gamershell.com/download_10167.shtml
It's a Windows game, but works fine on Linux with wine and r600 drivers, except when run with R600_HYPERZ=1.
I do some tests
HD 6770
lightsmark 1024
w/o patch | with patch
240 | 330
lightsmark 1920
130 | 180
But mesa with this patch 90% of time shows me black screen, only text and one scene is rendered correctly.
R600_HYPERZ=1\0 don't change anything for lightsmark.