summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2016-02-23 15:15:43 -0300
committerPaulo Zanoni <paulo.r.zanoni@intel.com>2016-02-23 16:17:08 -0300
commitc307a049c2c5781ca7b48f143e275fc1733f0100 (patch)
treeb728c4ec7f38b4f28d4d038f146846811b3e0fe7
parent2536128ecd5a3e42618588c98936df42f6da6020 (diff)
XXX: mmap debug stuff for FBCfbc-2016-02-26
Not-signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
-rw-r--r--drivers/gpu/drm/i915/intel_fbc.c9
-rw-r--r--drivers/gpu/drm/i915/intel_frontbuffer.c49
2 files changed, 56 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
index 57378ce7acaa..6b58ed780c96 100644
--- a/drivers/gpu/drm/i915/intel_fbc.c
+++ b/drivers/gpu/drm/i915/intel_fbc.c
@@ -818,8 +818,11 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
}
if (cache->fb.mmap_bits & (MMAP_BITS_CPU | MMAP_BITS_WC)) {
+ DRM_DEBUG_KMS("=== rejecting due to MMAP\n");
fbc->no_fbc_reason = "FB is CPU or WC mmapped";
return false;
+ } else {
+ DRM_DEBUG_KMS("=== not rejecting now :)\n");
}
return true;
@@ -1035,8 +1038,12 @@ void intel_fbc_mmap_notify(struct drm_i915_private *dev_priv,
if (fbc->enabled &&
(intel_fbc_get_frontbuffer_bit(fbc) & frontbuffer_bits)) {
fbc->state_cache.fb.mmap_bits = mmap_bits;
- if (mmap_bits & (MMAP_BITS_CPU | MMAP_BITS_WC))
+ if (mmap_bits & (MMAP_BITS_CPU | MMAP_BITS_WC)) {
+ DRM_DEBUG_KMS("=== CPU/WC mmap: disabling FBC\n");
intel_fbc_deactivate(dev_priv);
+ } else {
+ DRM_DEBUG_KMS("=== GTT mmap: keeping FBC\n");
+ }
}
mutex_unlock(&fbc->lock);
diff --git a/drivers/gpu/drm/i915/intel_frontbuffer.c b/drivers/gpu/drm/i915/intel_frontbuffer.c
index a4471c335bdc..3ab7fe5a9a8f 100644
--- a/drivers/gpu/drm/i915/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/intel_frontbuffer.c
@@ -261,8 +261,55 @@ void intel_frontbuffer_obj_mmap(struct drm_i915_gem_object *obj)
{
struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
- if (!obj->frontbuffer_bits)
+ if (!obj->frontbuffer_bits) {
+ switch (obj->mmap_bits) {
+ case MMAP_BITS_CPU:
+ DRM_DEBUG_KMS("=== CPU mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_GTT:
+ DRM_DEBUG_KMS("=== GTT mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== WC mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_GTT:
+ DRM_DEBUG_KMS("=== CPU+GTT mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== CPU+WC mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_GTT | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== GTT+WC mmap on backbuffer object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_GTT | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== CPU+GTT+WC mmap on backbuffer object\n");
+ break;
+ }
return;
+ }
+ switch (obj->mmap_bits) {
+ case MMAP_BITS_CPU:
+ DRM_DEBUG_KMS("=== CPU mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_GTT:
+ DRM_DEBUG_KMS("=== GTT mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== WC mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_GTT:
+ DRM_DEBUG_KMS("=== CPU+GTT mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== CPU+WC mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_GTT | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== GTT+WC mmap on -FRONTBUFFER- object\n");
+ break;
+ case MMAP_BITS_CPU | MMAP_BITS_GTT | MMAP_BITS_WC:
+ DRM_DEBUG_KMS("=== CPU+GTT+WC mmap on -FRONTBUFFER- object\n");
+ break;
+ }
intel_fbc_mmap_notify(dev_priv, obj->frontbuffer_bits, obj->mmap_bits);
}