[PATCH 3/5] drm/i915/frontbuffer: add low-level kref accessors
Jani Nikula
jani.nikula at intel.com
Mon Jun 17 14:19:00 UTC 2024
Add _raw accessors for front->ref to avoid direct access from outside of
intel_frontbuffer.c, in preparation for making struct intel_frontbuffer
opaque.
Signed-off-by: Jani Nikula <jani.nikula at intel.com>
---
drivers/gpu/drm/i915/display/intel_frontbuffer.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_frontbuffer.h | 3 +++
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h | 4 ++--
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index effb13e8a6bb..42defe2b7661 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -77,6 +77,16 @@ void intel_frontbuffer_bits_or(struct intel_frontbuffer *front, unsigned int bit
atomic_or(bits, &front->bits);
}
+bool intel_frontbuffer_get_unless_zero_raw(struct intel_frontbuffer *front)
+{
+ return kref_get_unless_zero(&front->ref);
+}
+
+void intel_frontbuffer_get_raw(struct intel_frontbuffer *front)
+{
+ kref_get(&front->ref);
+}
+
/**
* frontbuffer_flush - flush frontbuffer
* @i915: i915 device
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 827b0129da71..221f41096416 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -79,6 +79,9 @@ void intel_frontbuffer_flip(struct drm_i915_private *i915,
void intel_frontbuffer_put(struct intel_frontbuffer *front);
+bool intel_frontbuffer_get_unless_zero_raw(struct intel_frontbuffer *front);
+void intel_frontbuffer_get_raw(struct intel_frontbuffer *front);
+
struct intel_frontbuffer *
intel_frontbuffer_get(struct drm_i915_gem_object *obj);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
index 9fbf14867a2a..22df3c70c8a6 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
@@ -56,7 +56,7 @@ i915_gem_object_get_frontbuffer(const struct drm_i915_gem_object *obj)
if (!front)
break;
- if (unlikely(!kref_get_unless_zero(&front->ref)))
+ if (unlikely(!intel_frontbuffer_get_unless_zero_raw(front)))
continue;
if (likely(front == rcu_access_pointer(obj->frontbuffer)))
@@ -92,7 +92,7 @@ i915_gem_object_set_frontbuffer(struct drm_i915_gem_object *obj,
drm_gem_object_put(intel_bo_to_drm_bo(obj));
} else if (rcu_access_pointer(obj->frontbuffer)) {
cur = rcu_dereference_protected(obj->frontbuffer, true);
- kref_get(&cur->ref);
+ intel_frontbuffer_get_raw(cur);
} else {
drm_gem_object_get(intel_bo_to_drm_bo(obj));
rcu_assign_pointer(obj->frontbuffer, front);
--
2.39.2
More information about the Intel-gfx
mailing list