mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-24 06:44:23 +08:00
drm/i915: move INTEL_FRONTBUFFER_* macros to intel_frontbuffer.h
The macros clearly don't belong in i915_drv.h. Move to intel_frontbuffer.h. Also split the BUILD_BUG_ON()s to intel_frontbuffer_track() to avoid depending on some other macros in the header. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/c899fd1ef2220564a876cd88c03e53c4c7b0168b.1661346845.git.jani.nikula@intel.com
This commit is contained in:
parent
44eba1b851
commit
df22d67e5f
@ -311,6 +311,8 @@ void intel_frontbuffer_track(struct intel_frontbuffer *old,
|
||||
*/
|
||||
BUILD_BUG_ON(INTEL_FRONTBUFFER_BITS_PER_PIPE * I915_MAX_PIPES >
|
||||
BITS_PER_TYPE(atomic_t));
|
||||
BUILD_BUG_ON(INTEL_FRONTBUFFER_BITS_PER_PIPE * I915_MAX_PIPES > 32);
|
||||
BUILD_BUG_ON(I915_MAX_PLANES > INTEL_FRONTBUFFER_BITS_PER_PIPE);
|
||||
|
||||
if (old) {
|
||||
drm_WARN_ON(old->obj->base.dev,
|
||||
|
@ -25,6 +25,7 @@
|
||||
#define __INTEL_FRONTBUFFER_H__
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/bits.h>
|
||||
#include <linux/kref.h>
|
||||
|
||||
#include "gem/i915_gem_object_types.h"
|
||||
@ -48,6 +49,23 @@ struct intel_frontbuffer {
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
/*
|
||||
* Frontbuffer tracking bits. Set in obj->frontbuffer_bits while a gem bo is
|
||||
* considered to be the frontbuffer for the given plane interface-wise. This
|
||||
* doesn't mean that the hw necessarily already scans it out, but that any
|
||||
* rendering (by the cpu or gpu) will land in the frontbuffer eventually.
|
||||
*
|
||||
* We have one bit per pipe and per scanout plane type.
|
||||
*/
|
||||
#define INTEL_FRONTBUFFER_BITS_PER_PIPE 8
|
||||
#define INTEL_FRONTBUFFER(pipe, plane_id) \
|
||||
BIT((plane_id) + INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe));
|
||||
#define INTEL_FRONTBUFFER_OVERLAY(pipe) \
|
||||
BIT(INTEL_FRONTBUFFER_BITS_PER_PIPE - 1 + INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
|
||||
#define INTEL_FRONTBUFFER_ALL_MASK(pipe) \
|
||||
GENMASK(INTEL_FRONTBUFFER_BITS_PER_PIPE * ((pipe) + 1) - 1, \
|
||||
INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
|
||||
|
||||
void intel_frontbuffer_flip_prepare(struct drm_i915_private *i915,
|
||||
unsigned frontbuffer_bits);
|
||||
void intel_frontbuffer_flip_complete(struct drm_i915_private *i915,
|
||||
|
@ -602,26 +602,6 @@ static inline struct intel_gt *to_gt(struct drm_i915_private *i915)
|
||||
|
||||
#define I915_GTT_OFFSET_NONE ((u32)-1)
|
||||
|
||||
/*
|
||||
* Frontbuffer tracking bits. Set in obj->frontbuffer_bits while a gem bo is
|
||||
* considered to be the frontbuffer for the given plane interface-wise. This
|
||||
* doesn't mean that the hw necessarily already scans it out, but that any
|
||||
* rendering (by the cpu or gpu) will land in the frontbuffer eventually.
|
||||
*
|
||||
* We have one bit per pipe and per scanout plane type.
|
||||
*/
|
||||
#define INTEL_FRONTBUFFER_BITS_PER_PIPE 8
|
||||
#define INTEL_FRONTBUFFER(pipe, plane_id) ({ \
|
||||
BUILD_BUG_ON(INTEL_FRONTBUFFER_BITS_PER_PIPE * I915_MAX_PIPES > 32); \
|
||||
BUILD_BUG_ON(I915_MAX_PLANES > INTEL_FRONTBUFFER_BITS_PER_PIPE); \
|
||||
BIT((plane_id) + INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe)); \
|
||||
})
|
||||
#define INTEL_FRONTBUFFER_OVERLAY(pipe) \
|
||||
BIT(INTEL_FRONTBUFFER_BITS_PER_PIPE - 1 + INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
|
||||
#define INTEL_FRONTBUFFER_ALL_MASK(pipe) \
|
||||
GENMASK(INTEL_FRONTBUFFER_BITS_PER_PIPE * ((pipe) + 1) - 1, \
|
||||
INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
|
||||
|
||||
#define INTEL_INFO(dev_priv) (&(dev_priv)->__info)
|
||||
#define RUNTIME_INFO(dev_priv) (&(dev_priv)->__runtime)
|
||||
#define DRIVER_CAPS(dev_priv) (&(dev_priv)->caps)
|
||||
|
Loading…
Reference in New Issue
Block a user