|
@@ -26,20 +26,34 @@
|
|
#include "nouveau_drv.h"
|
|
#include "nouveau_drv.h"
|
|
#include "nouveau_mm.h"
|
|
#include "nouveau_mm.h"
|
|
|
|
|
|
|
|
+/* 0 = unsupported
|
|
|
|
+ * 1 = non-compressed
|
|
|
|
+ * 3 = compressed
|
|
|
|
+ */
|
|
|
|
+static const u8 types[256] = {
|
|
|
|
+ 1, 1, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
|
|
|
+ 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
|
|
|
|
+ 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3,
|
|
|
|
+ 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 3, 0, 3,
|
|
|
|
+ 3, 0, 3, 3, 3, 3, 3, 0, 0, 3, 0, 3, 0, 3, 3, 0,
|
|
|
|
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0
|
|
|
|
+};
|
|
|
|
+
|
|
bool
|
|
bool
|
|
nvc0_vram_flags_valid(struct drm_device *dev, u32 tile_flags)
|
|
nvc0_vram_flags_valid(struct drm_device *dev, u32 tile_flags)
|
|
{
|
|
{
|
|
- switch (tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK) {
|
|
|
|
- case 0x0000:
|
|
|
|
- case 0xfe00:
|
|
|
|
- case 0xdb00:
|
|
|
|
- case 0x1100:
|
|
|
|
- return true;
|
|
|
|
- default:
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
|
|
+ u8 memtype = (tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK) >> 8;
|
|
|
|
+ return likely((types[memtype] == 1));
|
|
}
|
|
}
|
|
|
|
|
|
int
|
|
int
|