All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: [PATCH 1/2] drm/i915: fixed EDID/sink-based bpp clamping
Date: Sat,  1 Jun 2013 19:45:55 +0200	[thread overview]
Message-ID: <1370108756-1948-1-git-send-email-daniel.vetter@ffwll.ch> (raw)

Since this is run in the compute config stage we need to check
the new_ pointers, not the current modeset layout. Also there
was a little logic bug in properly skipping connectors. This has
been broken when moving the pipe bpp selection in

commit 4e53c2e010e531b4a014692199e978482d471c7e
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Wed Mar 27 00:44:58 2013 +0100

    drm/i915: precompute pipe bpp before touching the hw

To avoid too much casting switch from drm_ to intel_ types.

Also add a bit of debug output to help reconstructing what's going
on.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_display.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f410ede..3f24d7f 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -7568,12 +7568,12 @@ static void intel_modeset_commit_output_state(struct drm_device *dev)
 }
 
 static int
-pipe_config_set_bpp(struct drm_crtc *crtc,
+pipe_config_set_bpp(struct intel_crtc *crtc,
 		    struct drm_framebuffer *fb,
 		    struct intel_crtc_config *pipe_config)
 {
-	struct drm_device *dev = crtc->dev;
-	struct drm_connector *connector;
+	struct drm_device *dev = crtc->base.dev;
+	struct intel_connector *connector;
 	int bpp;
 
 	switch (fb->pixel_format) {
@@ -7616,20 +7616,25 @@ pipe_config_set_bpp(struct drm_crtc *crtc,
 
 	/* Clamp display bpp to EDID value */
 	list_for_each_entry(connector, &dev->mode_config.connector_list,
-			    head) {
-		if (connector->encoder && connector->encoder->crtc != crtc)
+			    base.head) {
+		if (!connector->new_encoder ||
+		    connector->new_encoder->new_crtc != crtc)
 			continue;
 
+		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] checking for sink bpp constrains\n",
+			connector->base.base.id,
+			drm_get_connector_name(&connector->base));
+
 		/* Don't use an invalid EDID bpc value */
-		if (connector->display_info.bpc &&
-		    connector->display_info.bpc * 3 < bpp) {
+		if (connector->base.display_info.bpc &&
+		    connector->base.display_info.bpc * 3 < bpp) {
 			DRM_DEBUG_KMS("clamping display bpp (was %d) to EDID reported max of %d\n",
-				      bpp, connector->display_info.bpc*3);
-			pipe_config->pipe_bpp = connector->display_info.bpc*3;
+				      bpp, connector->base.display_info.bpc*3);
+			pipe_config->pipe_bpp = connector->base.display_info.bpc*3;
 		}
 
 		/* Clamp bpp to 8 on screens without EDID 1.4 */
-		if (connector->display_info.bpc == 0 && bpp > 24) {
+		if (connector->base.display_info.bpc == 0 && bpp > 24) {
 			DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of 24\n",
 				      bpp);
 			pipe_config->pipe_bpp = 24;
@@ -7714,7 +7719,8 @@ intel_modeset_pipe_config(struct drm_crtc *crtc,
 	pipe_config->cpu_transcoder = to_intel_crtc(crtc)->pipe;
 	pipe_config->shared_dpll = DPLL_ID_PRIVATE;
 
-	plane_bpp = pipe_config_set_bpp(crtc, fb, pipe_config);
+	plane_bpp = pipe_config_set_bpp(to_intel_crtc(crtc),
+					fb, pipe_config);
 	if (plane_bpp < 0)
 		goto fail;
 
-- 
1.7.11.7

             reply	other threads:[~2013-06-01 17:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-01 17:45 Daniel Vetter [this message]
2013-06-01 17:45 ` [PATCH 2/2] drm/i915: enable 30bpp for DP outputs Daniel Vetter
2013-06-07  5:51   ` Daniel Vetter
2013-06-07  8:00     ` Chris Wilson
2013-06-07  8:35       ` Daniel Vetter
2013-06-01 17:52 ` [PATCH 1/2] drm/i915: fixed EDID/sink-based bpp clamping Chris Wilson
2013-06-01 19:10   ` Daniel Vetter
2013-06-01 19:24   ` [PATCH] drm/i915: fix " Daniel Vetter
2013-06-01 21:53   ` Daniel Vetter
2013-06-02 10:09     ` Chris Wilson
2013-06-02 11:22       ` Daniel Vetter
2013-06-02 11:26       ` [PATCH 1/2] drm/i915: refactor sink " Daniel Vetter
2013-06-02 11:26         ` [PATCH 2/2] drm/i915: fix EDID/sink-based " Daniel Vetter
2013-06-03  7:50           ` Chris Wilson
2013-06-04 11:53             ` Daniel Vetter
2013-06-03  9:17         ` [PATCH 1/2] drm/i915: refactor sink " Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1370108756-1948-1-git-send-email-daniel.vetter@ffwll.ch \
    --to=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.