mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 14:42:08 +02:00
drm/i915/display: add intel_bo_get/set_frontbuffer() and use them
Add the struct drm_gem_object based interfaces. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/3120ec430656f04701077dda39cce5f1ed415eee.1726589119.git.jani.nikula@intel.com
This commit is contained in:
parent
63db15feff
commit
ff992dbfbe
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "gem/i915_gem_mman.h"
|
||||
#include "gem/i915_gem_object.h"
|
||||
#include "gem/i915_gem_object_frontbuffer.h"
|
||||
#include "intel_bo.h"
|
||||
|
||||
bool intel_bo_is_tiled(struct drm_gem_object *obj)
|
||||
|
|
@ -39,3 +40,14 @@ int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, i
|
|||
{
|
||||
return i915_gem_object_read_from_page(to_intel_bo(obj), offset, dst, size);
|
||||
}
|
||||
|
||||
struct intel_frontbuffer *intel_bo_get_frontbuffer(struct drm_gem_object *obj)
|
||||
{
|
||||
return i915_gem_object_get_frontbuffer(to_intel_bo(obj));
|
||||
}
|
||||
|
||||
struct intel_frontbuffer *intel_bo_set_frontbuffer(struct drm_gem_object *obj,
|
||||
struct intel_frontbuffer *front)
|
||||
{
|
||||
return i915_gem_object_set_frontbuffer(to_intel_bo(obj), front);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,4 +17,8 @@ void intel_bo_flush_if_display(struct drm_gem_object *obj);
|
|||
int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
|
||||
int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size);
|
||||
|
||||
struct intel_frontbuffer *intel_bo_get_frontbuffer(struct drm_gem_object *obj);
|
||||
struct intel_frontbuffer *intel_bo_set_frontbuffer(struct drm_gem_object *obj,
|
||||
struct intel_frontbuffer *front);
|
||||
|
||||
#endif /* __INTEL_BO__ */
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@
|
|||
#include "gem/i915_gem_object_types.h"
|
||||
#include "i915_active.h"
|
||||
#include "i915_drv.h"
|
||||
#include "intel_bo.h"
|
||||
#include "intel_display_trace.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_dp.h"
|
||||
|
|
@ -266,7 +267,7 @@ static void frontbuffer_release(struct kref *ref)
|
|||
|
||||
i915_ggtt_clear_scanout(obj);
|
||||
|
||||
ret = i915_gem_object_set_frontbuffer(obj, NULL);
|
||||
ret = intel_bo_set_frontbuffer(intel_bo_to_drm_bo(obj), NULL);
|
||||
drm_WARN_ON(&intel_bo_to_i915(obj)->drm, ret);
|
||||
spin_unlock(&intel_bo_to_i915(obj)->display.fb_tracking.lock);
|
||||
|
||||
|
|
@ -280,7 +281,7 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
|
|||
struct drm_i915_private *i915 = intel_bo_to_i915(obj);
|
||||
struct intel_frontbuffer *front, *cur;
|
||||
|
||||
front = i915_gem_object_get_frontbuffer(obj);
|
||||
front = intel_bo_get_frontbuffer(intel_bo_to_drm_bo(obj));
|
||||
if (front)
|
||||
return front;
|
||||
|
||||
|
|
@ -298,7 +299,7 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
|
|||
INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
|
||||
|
||||
spin_lock(&i915->display.fb_tracking.lock);
|
||||
cur = i915_gem_object_set_frontbuffer(obj, front);
|
||||
cur = intel_bo_set_frontbuffer(intel_bo_to_drm_bo(obj), front);
|
||||
spin_unlock(&i915->display.fb_tracking.lock);
|
||||
if (cur != front)
|
||||
kfree(front);
|
||||
|
|
|
|||
|
|
@ -66,3 +66,14 @@ int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, i
|
|||
xe_bo_unlock(bo);
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct intel_frontbuffer *intel_bo_get_frontbuffer(struct drm_gem_object *obj)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct intel_frontbuffer *intel_bo_set_frontbuffer(struct drm_gem_object *obj,
|
||||
struct intel_frontbuffer *front)
|
||||
{
|
||||
return front;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user