tech-x11 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: radeon RS480 gets "Disabling GPU acceleration"



Hi, can you try this patch?
Thanks.
Index: radeon.h
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h,v
retrieving revision 1.3
diff -u -r1.3 radeon.h
--- radeon.h	25 Jul 2014 12:47:18 -0000	1.3
+++ radeon.h	8 Aug 2016 15:25:28 -0000
@@ -607,6 +607,12 @@
 #define RADEON_GPU_PAGE_SHIFT 12
 #define RADEON_GPU_PAGE_ALIGN(a) (((a) + RADEON_GPU_PAGE_MASK) & ~RADEON_GPU_PAGE_MASK)
 
+#define RADEON_GART_PAGE_DUMMY  0
+#define RADEON_GART_PAGE_VALID  (1 << 0)
+#define RADEON_GART_PAGE_READ   (1 << 1)
+#define RADEON_GART_PAGE_WRITE  (1 << 2)
+#define RADEON_GART_PAGE_SNOOP  (1 << 3)
+
 struct radeon_gart {
 #ifdef __NetBSD__
 	bus_dma_segment_t		rg_table_seg;
Index: rs400.c
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/radeon/rs400.c,v
retrieving revision 1.3
diff -u -r1.3 rs400.c
--- rs400.c	26 Feb 2015 23:00:05 -0000	1.3
+++ rs400.c	8 Aug 2016 15:25:28 -0000
@@ -209,6 +209,7 @@
 	radeon_gart_table_ram_free(rdev);
 }
 
+#define RS400_PTE_UNSNOOPED (1 << 0)
 #define RS400_PTE_WRITEABLE (1 << 2)
 #define RS400_PTE_READABLE  (1 << 3)
 
@@ -222,9 +223,15 @@
 	}
 
 	entry = (lower_32_bits(addr) & PAGE_MASK) |
-		((upper_32_bits(addr) & 0xff) << 4) |
-		RS400_PTE_WRITEABLE | RS400_PTE_READABLE;
+		((upper_32_bits(addr) & 0xff) << 4);
+	if (rdev->flags & RADEON_GART_PAGE_READ)
+		entry |= RS400_PTE_READABLE;
+	if (rdev->flags & RADEON_GART_PAGE_WRITE)
+		entry |= RS400_PTE_WRITEABLE;
+	if (!(rdev->flags & RADEON_GART_PAGE_SNOOP))
+		entry |= RS400_PTE_UNSNOOPED;
 	entry = cpu_to_le32(entry);
+
 	gtt[i] = entry;
 	return 0;
 }


Home | Main Index | Thread Index | Old Index