Module Name: src
Committed By: riastradh
Date: Wed Apr 8 01:42:40 UTC 2015
Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon: radeon_legacy_crtc.c
Log Message:
Don't reserve if atomic -- caller must have pre-pinned the buffer.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.2
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.1.1.1 Wed Jul 16 19:35:28 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c Wed Apr 8 01:42:40 2015
@@ -422,6 +422,16 @@ int radeon_crtc_do_set_base(struct drm_c
/* Pin framebuffer & get tilling informations */
obj = radeon_fb->obj;
rbo = gem_to_radeon_bo(obj);
+ if (atomic) {
+ /*
+ * If you want to do this in atomic, better have it
+ * pinned ahead of time.
+ */
+ BUG_ON(rbo->pin_count == 0);
+ base = radeon_bo_gpu_offset(rbo);
+ tiling_flags = 0;
+ goto pinned;
+ }
retry:
r = radeon_bo_reserve(rbo, false);
if (unlikely(r != 0))
@@ -444,7 +454,7 @@ retry:
* We don't shutdown the display controller because new buffer
* will end up in same spot.
*/
- if (!atomic && fb && fb != crtc->primary->fb) {
+ if (fb && fb != crtc->primary->fb) {
struct radeon_bo *old_rbo;
unsigned long nsize, osize;
@@ -462,6 +472,7 @@ retry:
}
radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL);
radeon_bo_unreserve(rbo);
+pinned:
if (tiling_flags & RADEON_TILING_MICRO)
DRM_ERROR("trying to scanout microtiled buffer\n");