summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-12-02 19:26:16 +0100
committerMarek Olšák <[email protected]>2012-12-02 22:18:11 +0100
commit838b19609f759bc76e140910e6dcf0e0c3680688 (patch)
treeae058a2d4e13608974edb3c95240a1b72541f267 /src/gallium/drivers/r300
parent12dcbd5954676ee32604d82cacbf9a4259967e13 (diff)
r300g: add blacklist for apps that shouldn't steal hyperz access
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_chipset.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_chipset.c b/src/gallium/drivers/r300/r300_chipset.c
index 80148b80afb..beaa1f46e50 100644
--- a/src/gallium/drivers/r300/r300_chipset.c
+++ b/src/gallium/drivers/r300/r300_chipset.c
@@ -24,12 +24,38 @@
#include "r300_chipset.h"
#include "util/u_debug.h"
+#include "util/u_memory.h"
#include <stdio.h>
+#include <errno.h>
/* r300_chipset: A file all to itself for deducing the various properties of
* Radeons. */
+static void r300_apply_hyperz_blacklist(struct r300_capabilities* caps)
+{
+ static const char *list[] = {
+ "X", /* the DDX or indirect rendering */
+ "Xorg", /* (alternative name) */
+ "check_gl_texture_size", /* compiz */
+ "Compiz",
+ "gnome-session-check-accelerated-helper",
+ "gnome-shell",
+ "kwin_opengl_test",
+ "kwin",
+ "firefox",
+ };
+ int i;
+
+ for (i = 0; i < Elements(list); i++) {
+ if (strcmp(list[i], program_invocation_short_name) == 0) {
+ caps->zmask_ram = 0;
+ caps->hiz_ram = 0;
+ break;
+ }
+ }
+}
+
/* Parse a PCI ID and fill an r300_capabilities struct with information. */
void r300_parse_chipset(uint32_t pci_id, struct r300_capabilities* caps)
{
@@ -138,4 +164,6 @@ void r300_parse_chipset(uint32_t pci_id, struct r300_capabilities* caps)
if (caps->has_tcl) {
caps->has_tcl = debug_get_bool_option("RADEON_NO_TCL", FALSE) ? FALSE : TRUE;
}
+
+ r300_apply_hyperz_blacklist(caps);
}