mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
drm/i915: Relocate some other plane fb related stuff into intel_fb.c
Move intel_fb_xy_to_linear() and intel_add_fb_offsets() These are technially sitting somewhere between plane vs. fb code, but we do have a bunch of code like that in intel_fb.c anyway. Might need to think about splitting intel_fb.c into pure fb vs. plane->fb related stuff somehow, but dunno if that's even feasible. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-12-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
2d017fea5b
commit
9ba19223a5
|
|
@ -600,37 +600,6 @@ void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state)
|
|||
intel_wait_for_pipe_off(old_crtc_state);
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert the x/y offsets into a linear offset.
|
||||
* Only valid with 0/180 degree rotation, which is fine since linear
|
||||
* offset is only used with linear buffers on pre-hsw and tiled buffers
|
||||
* with gen2/3, and 90/270 degree rotations isn't supported on any of them.
|
||||
*/
|
||||
u32 intel_fb_xy_to_linear(int x, int y,
|
||||
const struct intel_plane_state *state,
|
||||
int color_plane)
|
||||
{
|
||||
const struct drm_framebuffer *fb = state->hw.fb;
|
||||
unsigned int cpp = fb->format->cpp[color_plane];
|
||||
unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
|
||||
|
||||
return y * pitch + x * cpp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the x/y offsets derived from fb->offsets[] to the user
|
||||
* specified plane src x/y offsets. The resulting x/y offsets
|
||||
* specify the start of scanout from the beginning of the gtt mapping.
|
||||
*/
|
||||
void intel_add_fb_offsets(int *x, int *y,
|
||||
const struct intel_plane_state *state,
|
||||
int color_plane)
|
||||
|
||||
{
|
||||
*x += state->view.color_plane[color_plane].x;
|
||||
*y += state->view.color_plane[color_plane].y;
|
||||
}
|
||||
|
||||
u32 intel_plane_fb_max_stride(struct drm_device *drm,
|
||||
u32 pixel_format, u64 modifier)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -458,11 +458,6 @@ int vlv_get_cck_clock(struct drm_i915_private *dev_priv,
|
|||
int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
|
||||
const char *name, u32 reg);
|
||||
void intel_init_display_hooks(struct drm_i915_private *dev_priv);
|
||||
unsigned int intel_fb_xy_to_linear(int x, int y,
|
||||
const struct intel_plane_state *state,
|
||||
int plane);
|
||||
void intel_add_fb_offsets(int *x, int *y,
|
||||
const struct intel_plane_state *state, int plane);
|
||||
bool intel_has_pending_fb_unpin(struct drm_i915_private *dev_priv);
|
||||
void intel_encoder_destroy(struct drm_encoder *encoder);
|
||||
struct drm_display_mode *
|
||||
|
|
|
|||
|
|
@ -1938,6 +1938,37 @@ void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio
|
|||
*view = fb->normal_view;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert the x/y offsets into a linear offset.
|
||||
* Only valid with 0/180 degree rotation, which is fine since linear
|
||||
* offset is only used with linear buffers on pre-hsw and tiled buffers
|
||||
* with gen2/3, and 90/270 degree rotations isn't supported on any of them.
|
||||
*/
|
||||
u32 intel_fb_xy_to_linear(int x, int y,
|
||||
const struct intel_plane_state *state,
|
||||
int color_plane)
|
||||
{
|
||||
const struct drm_framebuffer *fb = state->hw.fb;
|
||||
unsigned int cpp = fb->format->cpp[color_plane];
|
||||
unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
|
||||
|
||||
return y * pitch + x * cpp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the x/y offsets derived from fb->offsets[] to the user
|
||||
* specified plane src x/y offsets. The resulting x/y offsets
|
||||
* specify the start of scanout from the beginning of the gtt mapping.
|
||||
*/
|
||||
void intel_add_fb_offsets(int *x, int *y,
|
||||
const struct intel_plane_state *state,
|
||||
int color_plane)
|
||||
|
||||
{
|
||||
*x += state->view.color_plane[color_plane].x;
|
||||
*y += state->view.color_plane[color_plane].y;
|
||||
}
|
||||
|
||||
static
|
||||
u32 intel_fb_max_stride(struct intel_display *display,
|
||||
u32 pixel_format, u64 modifier)
|
||||
|
|
|
|||
|
|
@ -93,6 +93,12 @@ unsigned int intel_fb_view_vtd_guard(const struct drm_framebuffer *fb,
|
|||
unsigned int rotation);
|
||||
int intel_plane_compute_gtt(struct intel_plane_state *plane_state);
|
||||
|
||||
unsigned int intel_fb_xy_to_linear(int x, int y,
|
||||
const struct intel_plane_state *state,
|
||||
int plane);
|
||||
void intel_add_fb_offsets(int *x, int *y,
|
||||
const struct intel_plane_state *state, int plane);
|
||||
|
||||
int intel_framebuffer_init(struct intel_framebuffer *ifb,
|
||||
struct drm_gem_object *obj,
|
||||
struct drm_mode_fb_cmd2 *mode_cmd);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user