diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-02-13 16:34:55 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-02-24 15:45:52 -0500 |
commit | b5e2f0769a64046cefbfc307cbe6f7fa40dddf10 (patch) | |
tree | 819ac0b4fbbe3b3330a40f52f79ae442c30ce8df /drivers/gpu/drm/nouveau/nvc0_vram.c | |
parent | 3425df486ca247d9e8487be06a6cd0763ba38180 (diff) |
drm/nvc0: allow creation of buffers with any non-compressed memtype
This adds a table of known nvc0 memtypes, and modifies the validity check
to allow any non-compressed type. Support for Z compression will come at
a later point.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvc0_vram.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_vram.c | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/drivers/gpu/drm/nouveau/nvc0_vram.c b/drivers/gpu/drm/nouveau/nvc0_vram.c index 858eda5dedd..b2ef210ae54 100644 --- a/drivers/gpu/drm/nouveau/nvc0_vram.c +++ b/drivers/gpu/drm/nouveau/nvc0_vram.c | |||
@@ -26,20 +26,34 @@ | |||
26 | #include "nouveau_drv.h" | 26 | #include "nouveau_drv.h" |
27 | #include "nouveau_mm.h" | 27 | #include "nouveau_mm.h" |
28 | 28 | ||
29 | /* 0 = unsupported | ||
30 | * 1 = non-compressed | ||
31 | * 3 = compressed | ||
32 | */ | ||
33 | static const u8 types[256] = { | ||
34 | 1, 1, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, | ||
35 | 0, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, | ||
36 | 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, | ||
37 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, | ||
38 | 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
39 | 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
40 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
41 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, | ||
42 | 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 0, | ||
43 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
44 | 0, 0, 0, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, | ||
45 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, | ||
46 | 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, | ||
47 | 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 3, 0, 3, | ||
48 | 3, 0, 3, 3, 3, 3, 3, 0, 0, 3, 0, 3, 0, 3, 3, 0, | ||
49 | 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0 | ||
50 | }; | ||
51 | |||
29 | bool | 52 | bool |
30 | nvc0_vram_flags_valid(struct drm_device *dev, u32 tile_flags) | 53 | nvc0_vram_flags_valid(struct drm_device *dev, u32 tile_flags) |
31 | { | 54 | { |
32 | switch (tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK) { | 55 | u8 memtype = (tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK) >> 8; |
33 | case 0x0000: | 56 | return likely((types[memtype] == 1)); |
34 | case 0xfe00: | ||
35 | case 0xdb00: | ||
36 | case 0x1100: | ||
37 | return true; | ||
38 | default: | ||
39 | break; | ||
40 | } | ||
41 | |||
42 | return false; | ||
43 | } | 57 | } |
44 | 58 | ||
45 | int | 59 | int |