drm/i915: Populate possible_crtcs for primary/cursor planes

We're currently not providing the possible_crtcs mask to
drm_universal_plane_init() for primary/cursor planes. While that does
work on account of drm_crtc_init_with_planes() filling those up
for us, it's inconsisten with what we're doing for sprite planes.

Let's just always pass the possible_crtcs bitmask to
drm_universal_plane_init(). This does assume that crtc->index
== pipe. But we're already making that assumption elsewhere so
it doesn't seem like a very big sin here.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181005125817.22576-3-ville.syrjala@linux.intel.com
This commit is contained in:
Ville Syrjälä 2018-10-05 15:58:08 +03:00
parent 679bfe847b
commit deb196895f
2 changed files with 11 additions and 5 deletions

View File

@ -13764,6 +13764,7 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
const struct drm_plane_funcs *plane_funcs; const struct drm_plane_funcs *plane_funcs;
const uint32_t *intel_primary_formats; const uint32_t *intel_primary_formats;
unsigned int supported_rotations; unsigned int supported_rotations;
unsigned int possible_crtcs;
unsigned int num_formats; unsigned int num_formats;
const uint64_t *modifiers; const uint64_t *modifiers;
int ret; int ret;
@ -13860,23 +13861,25 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
plane_funcs = &i8xx_plane_funcs; plane_funcs = &i8xx_plane_funcs;
} }
possible_crtcs = BIT(pipe);
if (INTEL_GEN(dev_priv) >= 9) if (INTEL_GEN(dev_priv) >= 9)
ret = drm_universal_plane_init(&dev_priv->drm, &primary->base, ret = drm_universal_plane_init(&dev_priv->drm, &primary->base,
0, plane_funcs, possible_crtcs, plane_funcs,
intel_primary_formats, num_formats, intel_primary_formats, num_formats,
modifiers, modifiers,
DRM_PLANE_TYPE_PRIMARY, DRM_PLANE_TYPE_PRIMARY,
"plane 1%c", pipe_name(pipe)); "plane 1%c", pipe_name(pipe));
else if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) else if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
ret = drm_universal_plane_init(&dev_priv->drm, &primary->base, ret = drm_universal_plane_init(&dev_priv->drm, &primary->base,
0, plane_funcs, possible_crtcs, plane_funcs,
intel_primary_formats, num_formats, intel_primary_formats, num_formats,
modifiers, modifiers,
DRM_PLANE_TYPE_PRIMARY, DRM_PLANE_TYPE_PRIMARY,
"primary %c", pipe_name(pipe)); "primary %c", pipe_name(pipe));
else else
ret = drm_universal_plane_init(&dev_priv->drm, &primary->base, ret = drm_universal_plane_init(&dev_priv->drm, &primary->base,
0, plane_funcs, possible_crtcs, plane_funcs,
intel_primary_formats, num_formats, intel_primary_formats, num_formats,
modifiers, modifiers,
DRM_PLANE_TYPE_PRIMARY, DRM_PLANE_TYPE_PRIMARY,
@ -13943,6 +13946,7 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv,
{ {
struct intel_plane *cursor = NULL; struct intel_plane *cursor = NULL;
struct intel_plane_state *state = NULL; struct intel_plane_state *state = NULL;
unsigned int possible_crtcs;
int ret; int ret;
cursor = kzalloc(sizeof(*cursor), GFP_KERNEL); cursor = kzalloc(sizeof(*cursor), GFP_KERNEL);
@ -13984,8 +13988,10 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv,
if (IS_I845G(dev_priv) || IS_I865G(dev_priv) || HAS_CUR_FBC(dev_priv)) if (IS_I845G(dev_priv) || IS_I865G(dev_priv) || HAS_CUR_FBC(dev_priv))
cursor->cursor.size = ~0; cursor->cursor.size = ~0;
possible_crtcs = BIT(pipe);
ret = drm_universal_plane_init(&dev_priv->drm, &cursor->base, ret = drm_universal_plane_init(&dev_priv->drm, &cursor->base,
0, &intel_cursor_plane_funcs, possible_crtcs, &intel_cursor_plane_funcs,
intel_cursor_formats, intel_cursor_formats,
ARRAY_SIZE(intel_cursor_formats), ARRAY_SIZE(intel_cursor_formats),
cursor_format_modifiers, cursor_format_modifiers,

View File

@ -1895,7 +1895,7 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv,
intel_plane->id = PLANE_SPRITE0 + plane; intel_plane->id = PLANE_SPRITE0 + plane;
intel_plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, intel_plane->id); intel_plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, intel_plane->id);
possible_crtcs = (1 << pipe); possible_crtcs = BIT(pipe);
if (INTEL_GEN(dev_priv) >= 9) if (INTEL_GEN(dev_priv) >= 9)
ret = drm_universal_plane_init(&dev_priv->drm, &intel_plane->base, ret = drm_universal_plane_init(&dev_priv->drm, &intel_plane->base,