Lines Matching refs:fbc
46 return dev_priv->fbc.enable_fbc != NULL; in fbc_supported()
66 dev_priv->fbc.enabled = false; in i8xx_fbc_disable()
94 dev_priv->fbc.enabled = true; in i8xx_fbc_enable()
97 cfb_pitch = dev_priv->fbc.uncompressed_size / FBC_LL_SIZE; in i8xx_fbc_enable()
147 dev_priv->fbc.enabled = true; in g4x_fbc_enable()
168 dev_priv->fbc.enabled = false; in g4x_fbc_disable()
197 int threshold = dev_priv->fbc.threshold; in ilk_fbc_enable()
200 dev_priv->fbc.enabled = true; in ilk_fbc_enable()
243 dev_priv->fbc.enabled = false; in ilk_fbc_disable()
266 int threshold = dev_priv->fbc.threshold; in gen7_fbc_enable()
268 dev_priv->fbc.enabled = true; in gen7_fbc_enable()
292 if (dev_priv->fbc.false_color) in gen7_fbc_enable()
328 return dev_priv->fbc.enabled; in intel_fbc_enabled()
336 dev_priv->fbc.enable_fbc(crtc); in intel_fbc_enable()
338 dev_priv->fbc.crtc = crtc; in intel_fbc_enable()
339 dev_priv->fbc.fb_id = fb->base.id; in intel_fbc_enable()
340 dev_priv->fbc.y = crtc->base.y; in intel_fbc_enable()
351 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_work_fn()
352 if (work == dev_priv->fbc.fbc_work) { in intel_fbc_work_fn()
359 dev_priv->fbc.fbc_work = NULL; in intel_fbc_work_fn()
361 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_work_fn()
368 WARN_ON(!mutex_is_locked(&dev_priv->fbc.lock)); in intel_fbc_cancel_work()
370 if (dev_priv->fbc.fbc_work == NULL) in intel_fbc_cancel_work()
379 if (cancel_delayed_work(&dev_priv->fbc.fbc_work->work)) in intel_fbc_cancel_work()
381 kfree(dev_priv->fbc.fbc_work); in intel_fbc_cancel_work()
388 dev_priv->fbc.fbc_work = NULL; in intel_fbc_cancel_work()
396 WARN_ON(!mutex_is_locked(&dev_priv->fbc.lock)); in intel_fbc_schedule_enable()
411 dev_priv->fbc.fbc_work = work; in intel_fbc_schedule_enable()
431 WARN_ON(!mutex_is_locked(&dev_priv->fbc.lock)); in __intel_fbc_disable()
435 dev_priv->fbc.disable_fbc(dev_priv); in __intel_fbc_disable()
436 dev_priv->fbc.crtc = NULL; in __intel_fbc_disable()
450 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_disable()
452 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_disable()
468 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_disable_crtc()
469 if (dev_priv->fbc.crtc == crtc) in intel_fbc_disable_crtc()
471 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_disable_crtc()
518 if (dev_priv->fbc.no_fbc_reason == reason) in set_no_fbc_reason()
521 dev_priv->fbc.no_fbc_reason = reason; in set_no_fbc_reason()
626 ret = find_compression_threshold(dev_priv, &dev_priv->fbc.compressed_fb, in intel_fbc_alloc_cfb()
635 dev_priv->fbc.threshold = ret; in intel_fbc_alloc_cfb()
638 I915_WRITE(ILK_DPFC_CB_BASE, dev_priv->fbc.compressed_fb.start); in intel_fbc_alloc_cfb()
640 I915_WRITE(DPFC_CB_BASE, dev_priv->fbc.compressed_fb.start); in intel_fbc_alloc_cfb()
651 dev_priv->fbc.compressed_llb = compressed_llb; in intel_fbc_alloc_cfb()
654 dev_priv->mm.stolen_base + dev_priv->fbc.compressed_fb.start); in intel_fbc_alloc_cfb()
659 dev_priv->fbc.uncompressed_size = size; in intel_fbc_alloc_cfb()
662 dev_priv->fbc.compressed_fb.size, in intel_fbc_alloc_cfb()
663 dev_priv->fbc.threshold); in intel_fbc_alloc_cfb()
669 i915_gem_stolen_remove_node(dev_priv, &dev_priv->fbc.compressed_fb); in intel_fbc_alloc_cfb()
677 if (dev_priv->fbc.uncompressed_size == 0) in __intel_fbc_cleanup_cfb()
680 i915_gem_stolen_remove_node(dev_priv, &dev_priv->fbc.compressed_fb); in __intel_fbc_cleanup_cfb()
682 if (dev_priv->fbc.compressed_llb) { in __intel_fbc_cleanup_cfb()
684 dev_priv->fbc.compressed_llb); in __intel_fbc_cleanup_cfb()
685 kfree(dev_priv->fbc.compressed_llb); in __intel_fbc_cleanup_cfb()
688 dev_priv->fbc.uncompressed_size = 0; in __intel_fbc_cleanup_cfb()
696 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_cleanup_cfb()
698 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_cleanup_cfb()
749 if (size <= dev_priv->fbc.uncompressed_size) in intel_fbc_setup_cfb()
858 WARN_ON(!mutex_is_locked(&dev_priv->fbc.lock)); in __intel_fbc_update()
964 if (dev_priv->fbc.crtc == intel_crtc && in __intel_fbc_update()
965 dev_priv->fbc.fb_id == fb->base.id && in __intel_fbc_update()
966 dev_priv->fbc.y == crtc->y) in __intel_fbc_update()
998 dev_priv->fbc.no_fbc_reason = FBC_OK; in __intel_fbc_update()
1021 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_update()
1023 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_update()
1038 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_invalidate()
1040 if (dev_priv->fbc.enabled) in intel_fbc_invalidate()
1041 fbc_bits = INTEL_FRONTBUFFER_PRIMARY(dev_priv->fbc.crtc->pipe); in intel_fbc_invalidate()
1042 else if (dev_priv->fbc.fbc_work) in intel_fbc_invalidate()
1044 dev_priv->fbc.fbc_work->crtc->pipe); in intel_fbc_invalidate()
1046 fbc_bits = dev_priv->fbc.possible_framebuffer_bits; in intel_fbc_invalidate()
1048 dev_priv->fbc.busy_bits |= (fbc_bits & frontbuffer_bits); in intel_fbc_invalidate()
1050 if (dev_priv->fbc.busy_bits) in intel_fbc_invalidate()
1053 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_invalidate()
1065 mutex_lock(&dev_priv->fbc.lock); in intel_fbc_flush()
1067 dev_priv->fbc.busy_bits &= ~frontbuffer_bits; in intel_fbc_flush()
1069 if (!dev_priv->fbc.busy_bits) { in intel_fbc_flush()
1074 mutex_unlock(&dev_priv->fbc.lock); in intel_fbc_flush()
1087 mutex_init(&dev_priv->fbc.lock); in intel_fbc_init()
1090 dev_priv->fbc.enabled = false; in intel_fbc_init()
1091 dev_priv->fbc.no_fbc_reason = FBC_UNSUPPORTED; in intel_fbc_init()
1096 dev_priv->fbc.possible_framebuffer_bits |= in intel_fbc_init()
1104 dev_priv->fbc.fbc_enabled = ilk_fbc_enabled; in intel_fbc_init()
1105 dev_priv->fbc.enable_fbc = gen7_fbc_enable; in intel_fbc_init()
1106 dev_priv->fbc.disable_fbc = ilk_fbc_disable; in intel_fbc_init()
1108 dev_priv->fbc.fbc_enabled = ilk_fbc_enabled; in intel_fbc_init()
1109 dev_priv->fbc.enable_fbc = ilk_fbc_enable; in intel_fbc_init()
1110 dev_priv->fbc.disable_fbc = ilk_fbc_disable; in intel_fbc_init()
1112 dev_priv->fbc.fbc_enabled = g4x_fbc_enabled; in intel_fbc_init()
1113 dev_priv->fbc.enable_fbc = g4x_fbc_enable; in intel_fbc_init()
1114 dev_priv->fbc.disable_fbc = g4x_fbc_disable; in intel_fbc_init()
1116 dev_priv->fbc.fbc_enabled = i8xx_fbc_enabled; in intel_fbc_init()
1117 dev_priv->fbc.enable_fbc = i8xx_fbc_enable; in intel_fbc_init()
1118 dev_priv->fbc.disable_fbc = i8xx_fbc_disable; in intel_fbc_init()
1124 dev_priv->fbc.enabled = dev_priv->fbc.fbc_enabled(dev_priv); in intel_fbc_init()