radeon: reading back to scratch reg through status map doesn't work
authorJerome Glisse <glisse@freedesktop.org>
Fri, 22 May 2009 21:44:44 +0000 (23:44 +0200)
committerJerome Glisse <glisse@freedesktop.org>
Fri, 22 May 2009 21:44:44 +0000 (23:44 +0200)
For some unknown reasons the scratch reg value doesn't endup in the status
map at the scratch reg offset, this is a temporary work around until we
figure out why it doesn't work.

src/mesa/drivers/dri/radeon/radeon_bo_legacy.c

index 03a6299ed8ac5861be9c91fea4b907aaccc8b9dc..6a8da402b1ba948e3f28c6273cea326c44a2ec3e 100644 (file)
@@ -48,6 +48,7 @@
 #include "radeon_drm.h"
 #include "radeon_common.h"
 #include "radeon_bocs_wrapper.h"
+#include "radeon_macros.h"
 
 /* no seriously texmem.c is this screwed up */
 struct bo_legacy_texture_object {
@@ -164,6 +165,7 @@ static int legacy_free_handle(struct bo_manager_legacy *bom, uint32_t handle)
 static void legacy_get_current_age(struct bo_manager_legacy *boml)
 {
     drm_radeon_getparam_t gp;
+    unsigned char *RADEONMMIO = NULL;
     int r;
 
     if (IS_R300_CLASS(boml->screen)) {
@@ -175,8 +177,11 @@ static void legacy_get_current_age(struct bo_manager_legacy *boml)
                 fprintf(stderr, "%s: drmRadeonGetParam: %d\n", __FUNCTION__, r);
          exit(1);
        }
-    } else
-       boml->current_age = boml->screen->scratch[3];
+    } else {
+        RADEONMMIO = boml->screen->mmio.map;
+        boml->current_age = boml->screen->scratch[3];
+        boml->current_age = INREG(RADEON_GUI_SCRATCH_REG3);
+    }
 }
 
 static int legacy_is_pending(struct radeon_bo *bo)