Let's just do a full DRRS disable/enable across all pipe updates. This guarantees that the DRRS work doesn't interfere with anything while the atomic commit is busy reprogramming the pipe. Needed so that we can start reprogramming M/N seamlessly during fastsets whenever possible. Also avoids the pre-bdw DRRS PIPECONF rmw racing with the potential PIPECONF write from the atomic commit (eg. due to GAMMA_MODE changes). v2: Include has_drrs in state dump (José) Reviewed-by: José Roberto de Souza <jose.souza@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220315213944.17132-1-ville.syrjala@linux.intel.com
34 lines
1.1 KiB
C
34 lines
1.1 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2021 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_DRRS_H__
|
|
#define __INTEL_DRRS_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum drrs_type;
|
|
struct drm_i915_private;
|
|
struct intel_atomic_state;
|
|
struct intel_crtc;
|
|
struct intel_crtc_state;
|
|
struct intel_connector;
|
|
|
|
const char *intel_drrs_type_str(enum drrs_type drrs_type);
|
|
bool intel_drrs_is_enabled(struct intel_crtc *crtc);
|
|
void intel_drrs_enable(const struct intel_crtc_state *crtc_state);
|
|
void intel_drrs_disable(const struct intel_crtc_state *crtc_state);
|
|
void intel_drrs_invalidate(struct drm_i915_private *dev_priv,
|
|
unsigned int frontbuffer_bits);
|
|
void intel_drrs_flush(struct drm_i915_private *dev_priv,
|
|
unsigned int frontbuffer_bits);
|
|
void intel_drrs_compute_config(struct intel_connector *connector,
|
|
struct intel_crtc_state *pipe_config,
|
|
int output_bpp, bool constant_n);
|
|
void intel_crtc_drrs_init(struct intel_crtc *crtc);
|
|
struct drm_display_mode *intel_drrs_init(struct intel_connector *connector,
|
|
const struct drm_display_mode *fixed_mode);
|
|
|
|
#endif /* __INTEL_DRRS_H__ */
|