From patchwork Wed Aug 12 00:33:40 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mario Kleiner X-Patchwork-Id: 6995211 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 54915C05AD for ; Wed, 12 Aug 2015 00:33:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 46274206D2 for ; Wed, 12 Aug 2015 00:33:53 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 347EE206CD for ; Wed, 12 Aug 2015 00:33:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5DB896E10C; Tue, 11 Aug 2015 17:33:47 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C6A66E0C0; Tue, 11 Aug 2015 17:33:45 -0700 (PDT) Received: by wicne3 with SMTP id ne3so80934731wic.0; Tue, 11 Aug 2015 17:33:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=ss8moWk0F39hBRlIx8GgvtKqqpvEV8SB0mEZ+vxQWNQ=; b=rJRDSqP/LY3XSkRAi8A0KqgfWgCyI/dRFk6P+Iel7FMk8QDZXlpm5hem/u5gDR+dZ6 p4gKbU7qufd3GIHM5qO48vqMh84w2t85HVtb24DytMuSbVQeyDhsbR83Yr1AK05QDeda R6Ce6rJwANwhe+hKiVebECSoPoRbcOB3luZSBrJt3iuDPo0bEvJeBBLK6UUDDh07rYcP bJkf2vpndQr8yq83geVlW9NreQ5MH7Vey1euOc2Hc/8GXKo9KxM/sHw56F3sAaMVtTK1 PHBrGN7WTf9idHv7kNEbOKqmQ2Mz7v6xs0JV0TK4M8uPkf1oqOcMAB4jGC3MOxtN4ajZ L50g== X-Received: by 10.194.81.137 with SMTP id a9mr65909012wjy.155.1439339623673; Tue, 11 Aug 2015 17:33:43 -0700 (PDT) Received: from [192.168.178.25] (x5f71771e.dyn.telefonica.de. [95.113.119.30]) by smtp.gmail.com with ESMTPSA id r19sm5698075wib.7.2015.08.11.17.33.42 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Aug 2015 17:33:42 -0700 (PDT) Message-ID: <55CA9464.3030204@gmail.com> Date: Wed, 12 Aug 2015 02:33:40 +0200 From: Mario Kleiner User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Daniel Vetter References: <55C3D803.5070904@gmail.com> <55C3E3A0.8040503@gmail.com> <20150807071430.GG17734@phenom.ffwll.local> In-Reply-To: <20150807071430.GG17734@phenom.ffwll.local> Cc: intel-gfx , "dri-devel@lists.freedesktop.org" Subject: Re: [Intel-gfx] Intel-kms in Linux-4.2rc causes regression due to dithering always on. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 08/07/2015 09:14 AM, Daniel Vetter wrote: > On Fri, Aug 07, 2015 at 12:45:52AM +0200, Mario Kleiner wrote: >> On 08/07/2015 12:12 AM, Daniel Vetter wrote: >>> On Thu, Aug 6, 2015 at 11:56 PM, Mario Kleiner >>> wrote: >>>> Hi Daniel and all, >>>> >>>> since Linux 4.2 (tested with rc4), i think this commit >>>> d328c9d78d64ca11e744fe227096990430a88477 >>>> "drm/i915: Select starting pipe bpp irrespective or the primary plane" >>>> >>>> causes trouble for me and my users, as tested on Intel HD Ironlake and Ivy >>>> Bridge with MiniDP->Singlelink-DVI adapter -> Measurement device. >>>> >>>> Afaics it causes dithering to always be enabled on a regular 8bpc >>>> framebuffer, even when outputting to a 8 bpc DVI-D output, and that >>>> dithering causes my display measurement equipment and other special display >>>> devices used for neuro-science and medical applications to fail. This >>>> equipment requires an identity passthrough of 8 bpc framebuffer pixels to >>>> the digital outputs, iow. dithering off. >>>> >>>> Log output on Linux 4.1 (good): >>>> >>>> Aug 1 06:39:26 twisty kernel: [ 154.175394] >>>> [drm:connected_sink_compute_bpp] [CONNECTOR:35:HDMI-A-1] checking for sink >>>> bpp constrains >>>> Aug 1 06:39:26 twisty kernel: [ 154.175396] >>>> [drm:intel_hdmi_compute_config] picking bpc to 8 for HDMI output >>>> Aug 1 06:39:26 twisty kernel: [ 154.175397] >>>> [drm:intel_hdmi_compute_config] forcing pipe bpc to 24 for HDMI >>>> Aug 1 06:39:26 twisty kernel: [ 154.175400] [drm:ironlake_check_fdi_lanes] >>>> checking fdi config on pipe A, lanes 1 >>>> Aug 1 06:39:26 twisty kernel: [ 154.175402] >>>> [drm:intel_modeset_pipe_config] plane bpp: 24, pipe bpp: 24, dithering: 0 >>>> Aug 1 06:39:26 twisty kernel: [ 154.175403] [drm:intel_dump_pipe_config] >>>> [CRTC:20][modeset] config for pipe A >>>> Aug 1 06:39:26 twisty kernel: [ 154.175404] [drm:intel_dump_pipe_config] >>>> cpu_transcoder: A >>>> Aug 1 06:39:26 twisty kernel: [ 154.175405] [drm:intel_dump_pipe_config] >>>> pipe bpp: 24, dithering: 0 >>>> >>>> Log output on Linux 4.2-rc4 (bad): >>>> >>>> Aug 1 06:21:31 twisty kernel: [ 200.924831] >>>> [drm:connected_sink_compute_bpp] [CONNECTOR:36:HDMI-A-1] checking for sink >>>> bpp constrains >>>> Aug 1 06:21:31 twisty kernel: [ 200.924832] >>>> [drm:connected_sink_compute_bpp] clamping display bpp (was 36) to default >>>> limit of 24 >>>> Aug 1 06:21:31 twisty kernel: [ 200.924834] >>>> [drm:intel_hdmi_compute_config] picking bpc to 8 for HDMI output >>>> Aug 1 06:21:31 twisty kernel: [ 200.924835] >>>> [drm:intel_hdmi_compute_config] forcing pipe bpc to 24 for HDMI >>>> Aug 1 06:21:31 twisty kernel: [ 200.924838] [drm:ironlake_check_fdi_lanes] >>>> checking fdi config on pipe A, lanes 1 >>>> Aug 1 06:21:31 twisty kernel: [ 200.924840] >>>> [drm:intel_modeset_pipe_config] plane bpp: 36, pipe bpp: 24, dithering: 1 >>>> Aug 1 06:21:31 twisty kernel: [ 200.924841] [drm:intel_dump_pipe_config] >>>> [CRTC:21][modeset] config ffff880131a5c800 for pipe A >>>> Aug 1 06:21:31 twisty kernel: [ 200.924842] [drm:intel_dump_pipe_config] >>>> cpu_transcoder: A >>>> Aug 1 06:21:31 twisty kernel: [ 200.924843] [drm:intel_dump_pipe_config] >>>> pipe bpp: 24, dithering: 1 >>>> >>>> Ideas what to do about this? >>> >>> Well I somehow assumed the dither bit would be sane and not wreak >>> havoc with the lower bits when they would fit into the final bpc pipe >>> mode ... Can you confirm with your equipment that we seem to be doing >>> 8bpc->6bpc dithering on the 8bpc sink? >>> >> >> It will need a bit of work to find this out when i'm back in the lab. So far >> i just know something bad is happening to the signal and i assume it's the >> dithering, because the visual error pattern of messiness looks like that >> caused by dithering. E.g., on a static framebuffer i see some repeating >> pattern over the screen, but the pattern changes with every OpenGL >> bufferswap, even if i swap to the same fb content, as if the swap triggers >> some change of the spatial dither pattern (assuming PIPECONF_DITHER_TYPE_SP >> = spatial dithering?) >> >>> If that's the case we simply limit to only ever dither when the sink >>> is 6bpc, and not in any other case. >>> -Daniel >>> >> >> That would be an improvement for my immediate problem if that works. But >> assuming we have 10 bpc framebuffers at some point, dithering 10 bpc -> 8 >> bpc would also have some practical use. >> >> Probably some dynamic check would be good, a la if there is a mismatch >> between the max(bpc) over all active planes and the supported depth of the >> sink then dither? >> >> It's not clear to me where the dithering happens on intel hw. I'd expected >> that with a 24 bpp framebuffer feeding into a 24 bpp pipe, dithering simply >> wouldn't do anything even if enabled. > > Yeah my assumption was that if you run the pipe at a given bpc it will > just pass through anything that fits and only dither the additional bits. > But obviously that's not how the hardware works ... > > The problem with adaptive schemes is that we have multiple planes nowadays > and they might all run at different depths. And dither seems to be > happening at the pipe/overall level (at least there's only one bit). Of > course this wouldn't be a problem if the thing wouldn't mangle bits which > should pass! > > Anyway if we can confirm this I think dithering for only 6bpc should be > ok. > -Daniel > Ok, did some testing and the results are weird. The procedure was to render a fullscreen constant color image via OpenGL - set constant color framebuffer via glClearColor + glClear + bufferswap, using pageflips through unredirected fullscreen windows. Gamma tables were set to identity mapping. I stepped through all 256 R = G = B = Ref. values and my equipment captured the actual single-link DVI-D video input signal of the topmost scanline. The table below shows the actual value in the framebuffer vs. the readback 8 bpc values of the red channel for the first 10 pixels in the scanline, green and blue channels have same result: >> >> On Linux 4.2-rc5, Intel HD Ironlake, 24 bpp fb,pipeconf etc. via DVI-D. Ref 0: 0 0 0 0 0 0 0 0 0 0 Ref 1: 1 0 1 0 1 0 1 0 1 0 Ref 2: 2 1 2 1 2 1 2 1 2 1 Ref 3: 3 2 3 2 3 2 3 2 3 2 Ref 4: 4 3 4 3 4 3 4 3 4 3 Ref 5: 5 4 5 4 5 4 5 4 5 4 Ref 6: 6 5 6 5 6 5 6 5 6 5 Ref 7: 7 6 7 6 7 6 7 6 7 6 Ref 8: 8 7 8 7 8 7 8 7 8 7 Ref 9: 9 8 9 8 9 8 9 8 9 8 Ref 10: 10 9 10 9 10 9 10 9 10 9 Ref 11: 11 10 11 10 11 10 11 10 11 10 Ref 12: 12 11 12 11 12 11 12 11 12 11 Ref 13: 13 12 13 12 13 12 13 12 13 12 Ref 14: 14 13 14 13 14 13 14 13 14 13 Ref 15: 15 14 15 14 15 14 15 14 15 14 Ref 16: 16 15 16 15 16 15 16 15 16 15 Ref 17: 17 16 17 16 17 16 17 16 17 16 Ref 18: 18 17 18 17 18 17 18 17 18 17 Ref 19: 19 18 19 18 19 18 19 18 19 18 Ref 20: 20 19 20 19 20 19 20 19 20 19 Ref 21: 21 20 21 20 21 20 21 20 21 20 Ref 22: 22 21 22 21 22 21 22 21 22 21 Ref 23: 23 22 23 22 23 22 23 22 23 22 Ref 24: 24 23 24 23 24 23 24 23 24 23 Ref 25: 25 24 25 24 25 24 25 24 25 24 Ref 26: 26 25 26 25 26 25 26 25 26 25 Ref 27: 27 26 27 26 27 26 27 26 27 26 Ref 28: 28 27 28 27 28 27 28 27 28 27 Ref 29: 29 28 29 28 29 28 29 28 29 28 Ref 30: 30 29 30 29 30 29 30 29 30 29 Ref 31: 31 30 31 30 31 30 31 30 31 30 Ref 32: 32 31 32 31 32 31 32 31 32 31 Ref 33: 33 32 33 32 33 32 33 32 33 32 Ref 34: 34 33 34 33 34 33 34 33 34 33 Ref 35: 35 34 35 34 35 34 35 34 35 34 Ref 36: 36 35 36 35 36 35 36 35 36 35 Ref 37: 37 36 37 36 37 36 37 36 37 36 Ref 38: 38 37 38 37 38 37 38 37 38 37 Ref 39: 39 38 39 38 39 38 39 38 39 38 Ref 40: 40 39 40 39 40 39 40 39 40 39 Ref 41: 41 40 41 40 41 40 41 40 41 40 Ref 42: 42 41 42 41 42 41 42 41 42 41 Ref 43: 43 42 43 42 43 42 43 42 43 42 Ref 44: 44 43 44 43 44 43 44 43 44 43 Ref 45: 45 44 45 44 45 44 45 44 45 44 Ref 46: 46 45 46 45 46 45 46 45 46 45 Ref 47: 47 46 47 46 47 46 47 46 47 46 Ref 48: 48 47 48 47 48 47 48 47 48 47 Ref 49: 49 48 49 48 49 48 49 48 49 48 Ref 50: 50 49 50 49 50 49 50 49 50 49 Ref 51: 51 50 51 50 51 50 51 50 51 50 Ref 52: 52 51 52 51 52 51 52 51 52 51 Ref 53: 53 52 53 52 53 52 53 52 53 52 Ref 54: 54 53 54 53 54 53 54 53 54 53 Ref 55: 55 54 55 54 55 54 55 54 55 54 Ref 56: 56 55 56 55 56 55 56 55 56 55 Ref 57: 57 56 57 56 57 56 57 56 57 56 Ref 58: 58 57 58 57 58 57 58 57 58 57 Ref 59: 59 58 59 58 59 58 59 58 59 58 Ref 60: 60 59 60 59 60 59 60 59 60 59 Ref 61: 61 60 61 60 61 60 61 60 61 60 Ref 62: 62 61 62 61 62 61 62 61 62 61 Ref 63: 63 62 63 62 63 62 63 62 63 62 Ref 64: 64 63 64 63 64 63 64 63 64 63 Ref 65: 65 64 65 64 65 64 65 64 65 64 Ref 66: 66 65 66 65 66 65 66 65 66 65 Ref 67: 67 66 67 66 67 66 67 66 67 66 Ref 68: 68 67 68 67 68 67 68 67 68 67 Ref 69: 69 68 69 68 69 68 69 68 69 68 Ref 70: 70 69 70 69 70 69 70 69 70 69 Ref 71: 71 70 71 70 71 70 71 70 71 70 Ref 72: 72 71 72 71 72 71 72 71 72 71 Ref 73: 73 72 73 72 73 72 73 72 73 72 Ref 74: 74 73 74 73 74 73 74 73 74 73 Ref 75: 75 74 75 74 75 74 75 74 75 74 Ref 76: 76 75 76 75 76 75 76 75 76 75 Ref 77: 77 76 77 76 77 76 77 76 77 76 Ref 78: 78 77 78 77 78 77 78 77 78 77 Ref 79: 79 78 79 78 79 78 79 78 79 78 Ref 80: 80 79 80 79 80 79 80 79 80 79 Ref 81: 81 80 81 80 81 80 81 80 81 80 Ref 82: 82 81 82 81 82 81 82 81 82 81 Ref 83: 83 82 83 82 83 82 83 82 83 82 Ref 84: 84 83 84 83 84 83 84 83 84 83 Ref 85: 85 84 85 84 85 84 85 84 85 84 Ref 86: 86 85 86 85 86 85 86 85 86 85 Ref 87: 87 86 87 86 87 86 87 86 87 86 Ref 88: 88 87 88 87 88 87 88 87 88 87 Ref 89: 89 88 89 88 89 88 89 88 89 88 Ref 90: 90 89 90 89 90 89 90 89 90 89 Ref 91: 91 90 91 90 91 90 91 90 91 90 Ref 92: 92 91 92 91 92 91 92 91 92 91 Ref 93: 93 92 93 92 93 92 93 92 93 92 Ref 94: 94 93 94 93 94 93 94 93 94 93 Ref 95: 95 94 95 94 95 94 95 94 95 94 Ref 96: 96 95 96 95 96 95 96 95 96 95 Ref 97: 97 96 97 96 97 96 97 96 97 96 Ref 98: 98 97 98 97 98 97 98 97 98 97 Ref 99: 99 98 99 98 99 98 99 98 99 98 Ref 100: 100 99 100 99 100 99 100 99 100 99 Ref 101: 101 100 101 100 101 100 101 100 101 100 Ref 102: 102 101 102 101 102 101 102 101 102 101 Ref 103: 103 102 103 102 103 102 103 102 103 102 Ref 104: 104 103 104 103 104 103 104 103 104 103 Ref 105: 105 104 105 104 105 104 105 104 105 104 Ref 106: 106 105 106 105 106 105 106 105 106 105 Ref 107: 107 106 107 106 107 106 107 106 107 106 Ref 108: 108 107 108 107 108 107 108 107 108 107 Ref 109: 109 108 109 108 109 108 109 108 109 108 Ref 110: 110 109 110 109 110 109 110 109 110 109 Ref 111: 111 110 111 110 111 110 111 110 111 110 Ref 112: 112 111 112 111 112 111 112 111 112 111 Ref 113: 113 112 113 112 113 112 113 112 113 112 Ref 114: 114 113 114 113 114 113 114 113 114 113 Ref 115: 115 114 115 114 115 114 115 114 115 114 Ref 116: 116 115 116 115 116 115 116 115 116 115 Ref 117: 117 116 117 116 117 116 117 116 117 116 Ref 118: 118 117 118 117 118 117 118 117 118 117 Ref 119: 119 118 119 118 119 118 119 118 119 118 Ref 120: 120 119 120 119 120 119 120 119 120 119 Ref 121: 121 120 121 120 121 120 121 120 121 120 Ref 122: 122 121 122 121 122 121 122 121 122 121 Ref 123: 123 122 123 122 123 122 123 122 123 122 Ref 124: 124 123 124 123 124 123 124 123 124 123 Ref 125: 125 124 125 124 125 124 125 124 125 124 Ref 126: 126 125 126 125 126 125 126 125 126 125 Ref 127: 127 126 127 126 127 126 127 126 127 126 Ref 128: 127 128 127 128 127 128 127 128 127 128 Ref 129: 128 129 128 129 128 129 128 129 128 129 Ref 130: 129 130 129 130 129 130 129 130 129 130 Ref 131: 130 131 130 131 130 131 130 131 130 131 Ref 132: 131 132 131 132 131 132 131 132 131 132 Ref 133: 132 133 132 133 132 133 132 133 132 133 Ref 134: 133 134 133 134 133 134 133 134 133 134 Ref 135: 134 135 134 135 134 135 134 135 134 135 Ref 136: 135 136 135 136 135 136 135 136 135 136 Ref 137: 136 137 136 137 136 137 136 137 136 137 Ref 138: 137 138 137 138 137 138 137 138 137 138 Ref 139: 138 139 138 139 138 139 138 139 138 139 Ref 140: 139 140 139 140 139 140 139 140 139 140 Ref 141: 140 141 140 141 140 141 140 141 140 141 Ref 142: 141 142 141 142 141 142 141 142 141 142 Ref 143: 142 143 142 143 142 143 142 143 142 143 Ref 144: 143 144 143 144 143 144 143 144 143 144 Ref 145: 144 145 144 145 144 145 144 145 144 145 Ref 146: 145 146 145 146 145 146 145 146 145 146 Ref 147: 146 147 146 147 146 147 146 147 146 147 Ref 148: 147 148 147 148 147 148 147 148 147 148 Ref 149: 148 149 148 149 148 149 148 149 148 149 Ref 150: 149 150 149 150 149 150 149 150 149 150 Ref 151: 150 151 150 151 150 151 150 151 150 151 Ref 152: 151 152 151 152 151 152 151 152 151 152 Ref 153: 152 153 152 153 152 153 152 153 152 153 Ref 154: 153 154 153 154 153 154 153 154 153 154 Ref 155: 154 155 154 155 154 155 154 155 154 155 Ref 156: 155 156 155 156 155 156 155 156 155 156 Ref 157: 156 157 156 157 156 157 156 157 156 157 Ref 158: 157 158 157 158 157 158 157 158 157 158 Ref 159: 158 159 158 159 158 159 158 159 158 159 Ref 160: 159 160 159 160 159 160 159 160 159 160 Ref 161: 160 161 160 161 160 161 160 161 160 161 Ref 162: 161 162 161 162 161 162 161 162 161 162 Ref 163: 162 163 162 163 162 163 162 163 162 163 Ref 164: 163 164 163 164 163 164 163 164 163 164 Ref 165: 164 165 164 165 164 165 164 165 164 165 Ref 166: 165 166 165 166 165 166 165 166 165 166 Ref 167: 166 167 166 167 166 167 166 167 166 167 Ref 168: 167 168 167 168 167 168 167 168 167 168 Ref 169: 168 169 168 169 168 169 168 169 168 169 Ref 170: 169 170 169 170 169 170 169 170 169 170 Ref 171: 170 171 170 171 170 171 170 171 170 171 Ref 172: 171 172 171 172 171 172 171 172 171 172 Ref 173: 172 173 172 173 172 173 172 173 172 173 Ref 174: 173 174 173 174 173 174 173 174 173 174 Ref 175: 174 175 174 175 174 175 174 175 174 175 Ref 176: 175 176 175 176 175 176 175 176 175 176 Ref 177: 176 177 176 177 176 177 176 177 176 177 Ref 178: 177 178 177 178 177 178 177 178 177 178 Ref 179: 178 179 178 179 178 179 178 179 178 179 Ref 180: 179 180 179 180 179 180 179 180 179 180 Ref 181: 180 181 180 181 180 181 180 181 180 181 Ref 182: 181 182 181 182 181 182 181 182 181 182 Ref 183: 182 183 182 183 182 183 182 183 182 183 Ref 184: 183 184 183 184 183 184 183 184 183 184 Ref 185: 184 185 184 185 184 185 184 185 184 185 Ref 186: 185 186 185 186 185 186 185 186 185 186 Ref 187: 186 187 186 187 186 187 186 187 186 187 Ref 188: 187 188 187 188 187 188 187 188 187 188 Ref 189: 188 189 188 189 188 189 188 189 188 189 Ref 190: 189 190 189 190 189 190 189 190 189 190 Ref 191: 190 191 190 191 190 191 190 191 190 191 Ref 192: 192 192 192 192 192 192 192 192 192 192 Ref 193: 193 193 193 193 193 193 193 193 193 193 Ref 194: 194 194 194 194 194 194 194 194 194 194 Ref 195: 195 195 195 195 195 195 195 195 195 195 Ref 196: 196 196 196 196 196 196 196 196 196 196 Ref 197: 197 197 197 197 197 197 197 197 197 197 Ref 198: 198 198 198 198 198 198 198 198 198 198 Ref 199: 199 199 199 199 199 199 199 199 199 199 Ref 200: 200 200 200 200 200 200 200 200 200 200 Ref 201: 201 201 201 201 201 201 201 201 201 201 Ref 202: 202 202 202 202 202 202 202 202 202 202 Ref 203: 203 203 203 203 203 203 203 203 203 203 Ref 204: 204 204 204 204 204 204 204 204 204 204 Ref 205: 205 205 205 205 205 205 205 205 205 205 Ref 206: 206 206 206 206 206 206 206 206 206 206 Ref 207: 207 207 207 207 207 207 207 207 207 207 Ref 208: 208 208 208 208 208 208 208 208 208 208 Ref 209: 209 209 209 209 209 209 209 209 209 209 Ref 210: 210 210 210 210 210 210 210 210 210 210 Ref 211: 211 211 211 211 211 211 211 211 211 211 Ref 212: 212 212 212 212 212 212 212 212 212 212 Ref 213: 213 213 213 213 213 213 213 213 213 213 Ref 214: 214 214 214 214 214 214 214 214 214 214 Ref 215: 215 215 215 215 215 215 215 215 215 215 Ref 216: 216 216 216 216 216 216 216 216 216 216 Ref 217: 217 217 217 217 217 217 217 217 217 217 Ref 218: 218 218 218 218 218 218 218 218 218 218 Ref 219: 219 219 219 219 219 219 219 219 219 219 Ref 220: 220 220 220 220 220 220 220 220 220 220 Ref 221: 221 221 221 221 221 221 221 221 221 221 Ref 222: 222 222 222 222 222 222 222 222 222 222 Ref 223: 223 223 223 223 223 223 223 223 223 223 Ref 224: 224 224 224 224 224 224 224 224 224 224 Ref 225: 225 225 225 225 225 225 225 225 225 225 Ref 226: 226 226 226 226 226 226 226 226 226 226 Ref 227: 227 227 227 227 227 227 227 227 227 227 Ref 228: 228 228 228 228 228 228 228 228 228 228 Ref 229: 229 229 229 229 229 229 229 229 229 229 Ref 230: 230 230 230 230 230 230 230 230 230 230 Ref 231: 231 231 231 231 231 231 231 231 231 231 Ref 232: 232 232 232 232 232 232 232 232 232 232 Ref 233: 233 233 233 233 233 233 233 233 233 233 Ref 234: 234 234 234 234 234 234 234 234 234 234 Ref 235: 235 235 235 235 235 235 235 235 235 235 Ref 236: 236 236 236 236 236 236 236 236 236 236 Ref 237: 237 237 237 237 237 237 237 237 237 237 Ref 238: 238 238 238 238 238 238 238 238 238 238 Ref 239: 239 239 239 239 239 239 239 239 239 239 Ref 240: 240 240 240 240 240 240 240 240 240 240 Ref 241: 241 241 241 241 241 241 241 241 241 241 Ref 242: 242 242 242 242 242 242 242 242 242 242 Ref 243: 243 243 243 243 243 243 243 243 243 243 Ref 244: 244 244 244 244 244 244 244 244 244 244 Ref 245: 245 245 245 245 245 245 245 245 245 245 Ref 246: 246 246 246 246 246 246 246 246 246 246 Ref 247: 247 247 247 247 247 247 247 247 247 247 Ref 248: 248 248 248 248 248 248 248 248 248 248 Ref 249: 249 249 249 249 249 249 249 249 249 249 Ref 250: 250 250 250 250 250 250 250 250 250 250 Ref 251: 251 251 251 251 251 251 251 251 251 251 Ref 252: 252 252 252 252 252 252 252 252 252 252 Ref 253: 253 253 253 253 253 253 253 253 253 253 Ref 254: 254 254 254 254 254 254 254 254 254 254 Ref 255: 255 255 255 255 255 255 255 255 255 255 I get the same result on Ironlake and IvyBridge. So it's not dithering the 8 bpc fb on the 8 bpc pipe to 6 bpc output, as all 256 values are in the output, but it is somehow screwing with the 8 bpc signal for no reason. Values >= 192 are unaffected, values between 0 and 127 get treated slightly different wrong than between 128 and 191. On Linux <= 4.1 the output is as expected. If i apply this patch to force dithering off, then the problem is fixed on 4.2-rc: if (intel_crtc->config->base.adjusted_mode.flags & DRM_MODE_FLAG_INTERLACE) val |= PIPECONF_INTERLACED_ILK; So the weirdness is triggered by dither enable on a 24 bpp fb feeding into the 24 bpp pipe, at least on the ironlake code path. Don't have a haswell part atm. to test that. -mario --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8622,8 +8622,10 @@ static void ironlake_set_pipeconf(struct drm_crtc *crtc) BUG(); } - if (intel_crtc->config->dither) - val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); + if (intel_crtc->config->dither) { + DRM_INFO("Ironlake wants dithering, but skipping dither enable!\n"); + /* val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); */ + }