diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_cs.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index a56084410372..ac6ece61a476 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <drm/radeon_drm.h> | 28 | #include <drm/radeon_drm.h> |
29 | #include "radeon_reg.h" | 29 | #include "radeon_reg.h" |
30 | #include "radeon.h" | 30 | #include "radeon.h" |
31 | #include "radeon_trace.h" | ||
31 | 32 | ||
32 | static int radeon_cs_parser_relocs(struct radeon_cs_parser *p) | 33 | static int radeon_cs_parser_relocs(struct radeon_cs_parser *p) |
33 | { | 34 | { |
@@ -80,9 +81,11 @@ static int radeon_cs_parser_relocs(struct radeon_cs_parser *p) | |||
80 | p->relocs[i].lobj.bo = p->relocs[i].robj; | 81 | p->relocs[i].lobj.bo = p->relocs[i].robj; |
81 | p->relocs[i].lobj.written = !!r->write_domain; | 82 | p->relocs[i].lobj.written = !!r->write_domain; |
82 | 83 | ||
83 | /* the first reloc of an UVD job is the | 84 | /* the first reloc of an UVD job is the msg and that must be in |
84 | msg and that must be in VRAM */ | 85 | VRAM, also but everything into VRAM on AGP cards to avoid |
85 | if (p->ring == R600_RING_TYPE_UVD_INDEX && i == 0) { | 86 | image corruptions */ |
87 | if (p->ring == R600_RING_TYPE_UVD_INDEX && | ||
88 | (i == 0 || p->rdev->flags & RADEON_IS_AGP)) { | ||
86 | /* TODO: is this still needed for NI+ ? */ | 89 | /* TODO: is this still needed for NI+ ? */ |
87 | p->relocs[i].lobj.domain = | 90 | p->relocs[i].lobj.domain = |
88 | RADEON_GEM_DOMAIN_VRAM; | 91 | RADEON_GEM_DOMAIN_VRAM; |
@@ -559,6 +562,8 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) | |||
559 | return r; | 562 | return r; |
560 | } | 563 | } |
561 | 564 | ||
565 | trace_radeon_cs(&parser); | ||
566 | |||
562 | r = radeon_cs_ib_chunk(rdev, &parser); | 567 | r = radeon_cs_ib_chunk(rdev, &parser); |
563 | if (r) { | 568 | if (r) { |
564 | goto out; | 569 | goto out; |