From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5CB95C433B4 for ; Wed, 12 May 2021 12:07:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EDE1B61353 for ; Wed, 12 May 2021 12:07:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EDE1B61353 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tuxedocomputers.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 47D946EB7E; Wed, 12 May 2021 12:07:05 +0000 (UTC) Received: from srv6.fidu.org (srv6.fidu.org [IPv6:2a01:4f8:231:de0::2]) by gabe.freedesktop.org (Postfix) with ESMTPS id 78C516EB7C; Wed, 12 May 2021 12:07:02 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by srv6.fidu.org (Postfix) with ESMTP id 16C0EC800DB; Wed, 12 May 2021 14:07:01 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at srv6.fidu.org Received: from srv6.fidu.org ([127.0.0.1]) by localhost (srv6.fidu.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 3YDOHybVgylk; Wed, 12 May 2021 14:07:00 +0200 (CEST) Received: from [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6] (p200300e37F15Cc0073BBE3C1C94613A6.dip0.t-ipconnect.de [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: wse@tuxedocomputers.com) by srv6.fidu.org (Postfix) with ESMTPSA id 15564C800D9; Wed, 12 May 2021 14:06:58 +0200 (CEST) To: Maling list - DRI developers From: Werner Sembach Subject: New uAPI for color management proposal and feedback request Message-ID: <8c0d7ad8-7ade-bf8a-0414-cc795fbb6aa2@tuxedocomputers.com> Date: Wed, 12 May 2021 14:06:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Deucher, Alexander" , intel-gfx@lists.freedesktop.org, amd-gfx list Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hello, In addition to the existing "max bpc", and "Broadcast RGB/output_csc" drm= properties I propose 4 new properties: "preferred pixel encoding", "active color depth", "active color range", a= nd "active pixel encoding" Motivation: Current monitors have a variety pixel encodings available: RGB, YCbCr 4:4= :4, YCbCr 4:2:2, YCbCr 4:2:0. In addition they might be full or limited RGB range and the monitors acce= pt different bit depths. Currently the kernel driver for AMD and Intel GPUs automatically configur= e the color settings automatically with little to no influence of the user. However there are several real world scenari= os where the user might disagree with the default chosen by the drivers and wants to set his or her own preference.= Some examples: 1. While RGB and YCbCr 4:4:4 in theory carry the same amount of color inf= ormation, some screens might look better on one than the other because of bad internal conversion. The driver currently h= owever has a fixed default that is chosen if available (RGB for Intel and YCbCr 4:4:4 for AMD). The only way to change= this currently is by editing and overloading the edid reported by the monitor to the kernel. 2. RGB and YCbCr 4:4:4 need a higher port clock then YCbCr 4:2:0. Some ha= rdware might report that it supports the higher port clock, but because of bad shielding on the PC, the cable, or the mon= itor the screen cuts out every few seconds when RGB or YCbCr 4:4:4 encoding is used, while YCbCr 4:2:0 might just work fi= ne without changing hardware. The drivers currently however always default to the "best available" option even if i= t might be broken. 3. Some screens natively only supporting 8-bit color, simulate 10-Bit col= or by rapidly switching between 2 adjacent colors. They advertise themselves to the kernel as 10-bit monitors but th= e user might not like the "fake" 10-bit effect and prefer running at the native 8-bit per color. 4. Some screens are falsely classified as full RGB range wile they actual= ly use limited RGB range. This results in washed out colors in dark and bright scenes. A user override can be helpf= ul to manually fix this issue when it occurs. There already exist several requests, discussion, and patches regarding t= he thematic: - https://gitlab.freedesktop.org/drm/amd/-/issues/476 - https://gitlab.freedesktop.org/drm/amd/-/issues/1548 - https://lkml.org/lkml/2021/5/7/695 - https://lkml.org/lkml/2021/5/11/416 Current State: I only know bits about the Intel i915 and AMD amdgpu driver. I don't know= how other driver handle color management - "max bpc", global setting applied by both i915 (only on dp i think?) an= d amdgpu. Default value is "8". For every resolution + frequency combination the highest possible even number betwe= en 6 and max_bpc is chosen. If the range doesn't contain a valid mode the resolution + frequency combination is di= scarded (but I guess that would be a very special edge case, if existent at all, when 6 doesn't work but 10 would w= ork). Intel HDMI code always checks 8, 12, and 10 and does not check the max_bpc setting. - "Broadcast RGB" for i915 and "output_csc" for the old radeon driver (no= t amdgpu), overwrites the kernel chosen color range setting (full or limited). If I recall correctly Intel HDMI code de= faults to full unless this property is set, Intel dp code tries to probe the monitor to find out what to use. amdgpu = has no corresponding setting (I don't know how it's decided there). - RGB pixel encoding can be forced by overloading a Monitors edid with on= e that tells the kernel that only RGB is possible. That doesn't work for YCbCr 4:4:4 however because of the edid s= pecification. Forcing YCbCr 4:2:0 would theoretically also be possible this way. amdgpu has a debugfs switch "for= ce_ycbcr_420" which makes the driver default to YCbCr 4:2:0 on all monitors if possible. Proposed Solution: 1. Add a new uAPI property "preferred pixel encoding", as a per port sett= ing. =C2=A0=C2=A0=C2=A0 - An amdgpu specific implementation was already shared= here: https://gitlab.freedesktop.org/drm/amd/-/issues/476 =C2=A0=C2=A0=C2=A0 - It also writes back the actually used encoding if th= e one requested was not possible, overwriting the requested value in the process. I think it would be better to have this feedback ch= annel as a different, read-only property. =C2=A0=C2=A0=C2=A0 - Make this solution vendor agnostic by putting it in = the drm_connector_state struct next do max_bpc https://elixir.bootlin.com/linux/v5.13-rc1/source/include/drm/drm_connect= or.h#L654 and add patches to amdgpu and i915 to respect this setting 2. Convert "Broadcast RGB" to a vendor agnostic setting/replace with a ve= ndor agnostic setting. =C2=A0=C2=A0=C2=A0 - Imho the name is not very fitting, but it pops up in= many tutorials throughout the web (some other opinions? how could a rename be handled?". =C2=A0=C2=A0=C2=A0 - Also move it from Intel specific structs to the drm_= connector_state struct (please let me know if there is a better place) 3. Strive for full implementation of "max bpc" =C2=A0=C2=A0=C2=A0 - I need to double check the Intel HDMI code. 4. Add 3 feedback channels "active color depth", "active color range", an= d "active pixel encoding" as vendor agnostic settings in the drm_connector_state struct =C2=A0=C2=A0=C2=A0 - Possible values are: =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 - unknown, undefined, 6-bit, 8-bit,= 9-bit, 10-bit, 11-bit, 12-bit, 14-bit, 16-bit (alternatively: an integer= from -1 (unknown), 0 (undefined) to 16, let me know what would be more su= itable) =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 - unknown, undefined, full, limited= =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 - unknown, undefined, rgb, ycbcr444= , ycbcr422, ycbcr420 =C2=A0=C2=A0=C2=A0 - it's the responsibility of the driver to update the = values once the port configuration changes =C2=A0=C2=A0=C2=A0 - if the driver does not support the feedback channels= they are set to unknown =C2=A0=C2=A0=C2=A0 - if the driver uses a non listed setting it should se= t the property to undefined =C2=A0=C2=A0=C2=A0 - A more detailed description why I think these feedba= ck channel are important and should be their own read-only property can be found here: https://lkml.org/lkml/2021/5/11/339 Adoption: A KDE dev wants to implement the settings in the KDE settings GUI: https://gitlab.freedesktop.org/drm/amd/-/issues/476#note_912370 Tuxedo Computers (my employer) wants to implement the settings desktop en= vironment agnostic in Tuxedo Control Center. I will start work on this in parallel to implementing the new kernel code. Questions: I'm very curious about feedback from the dri-devel community. Would the c= oncept outlaid above be accepted as new uAPI once it's fully implemented? Where would be the best way to store the new vendor agnostic settings? Fo= llowing the implementation of max_bpc i would put it in the drm_connector_state struct. My way forward would be to implement the feedback channels first, because= they can be very useful for debugging the setting properties afterwards. I will split each of it up it in 3 or 5 pa= tch sets: 1 for the vendor agnostic part, 1 for Intel (or 2 split up between HDMI and DP), and 1 for AMD (or 2 split up b= etween HDMI and DP) Kind regards, Werner Sembach From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0246C433ED for ; Wed, 12 May 2021 12:07:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0C11661184 for ; Wed, 12 May 2021 12:07:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0C11661184 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tuxedocomputers.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 566996EB82; Wed, 12 May 2021 12:07:05 +0000 (UTC) Received: from srv6.fidu.org (srv6.fidu.org [IPv6:2a01:4f8:231:de0::2]) by gabe.freedesktop.org (Postfix) with ESMTPS id 78C516EB7C; Wed, 12 May 2021 12:07:02 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by srv6.fidu.org (Postfix) with ESMTP id 16C0EC800DB; Wed, 12 May 2021 14:07:01 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at srv6.fidu.org Received: from srv6.fidu.org ([127.0.0.1]) by localhost (srv6.fidu.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 3YDOHybVgylk; Wed, 12 May 2021 14:07:00 +0200 (CEST) Received: from [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6] (p200300e37F15Cc0073BBE3C1C94613A6.dip0.t-ipconnect.de [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: wse@tuxedocomputers.com) by srv6.fidu.org (Postfix) with ESMTPSA id 15564C800D9; Wed, 12 May 2021 14:06:58 +0200 (CEST) To: Maling list - DRI developers From: Werner Sembach Message-ID: <8c0d7ad8-7ade-bf8a-0414-cc795fbb6aa2@tuxedocomputers.com> Date: Wed, 12 May 2021 14:06:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 Content-Language: en-US Subject: [Intel-gfx] New uAPI for color management proposal and feedback request X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Deucher, Alexander" , Pekka Paalanen , intel-gfx@lists.freedesktop.org, amd-gfx list Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SGVsbG8sCgpJbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgIm1heCBicGMiLCBhbmQgIkJyb2Fk Y2FzdCBSR0Ivb3V0cHV0X2NzYyIgZHJtIHByb3BlcnRpZXMgSSBwcm9wb3NlIDQgbmV3IHByb3Bl cnRpZXM6CiJwcmVmZXJyZWQgcGl4ZWwgZW5jb2RpbmciLCAiYWN0aXZlIGNvbG9yIGRlcHRoIiwg ImFjdGl2ZSBjb2xvciByYW5nZSIsIGFuZCAiYWN0aXZlIHBpeGVsIGVuY29kaW5nIgoKCk1vdGl2 YXRpb246CgpDdXJyZW50IG1vbml0b3JzIGhhdmUgYSB2YXJpZXR5IHBpeGVsIGVuY29kaW5ncyBh dmFpbGFibGU6IFJHQiwgWUNiQ3IgNDo0OjQsIFlDYkNyIDQ6MjoyLCBZQ2JDciA0OjI6MC4KCklu IGFkZGl0aW9uIHRoZXkgbWlnaHQgYmUgZnVsbCBvciBsaW1pdGVkIFJHQiByYW5nZSBhbmQgdGhl IG1vbml0b3JzIGFjY2VwdCBkaWZmZXJlbnQgYml0IGRlcHRocy4KCkN1cnJlbnRseSB0aGUga2Vy bmVsIGRyaXZlciBmb3IgQU1EIGFuZCBJbnRlbCBHUFVzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJl IHRoZSBjb2xvciBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5IHdpdGggbGl0dGxlCnRvIG5vIGluZmx1 ZW5jZSBvZiB0aGUgdXNlci4gSG93ZXZlciB0aGVyZSBhcmUgc2V2ZXJhbCByZWFsIHdvcmxkIHNj ZW5hcmlvcyB3aGVyZSB0aGUgdXNlciBtaWdodCBkaXNhZ3JlZSB3aXRoIHRoZQpkZWZhdWx0IGNo b3NlbiBieSB0aGUgZHJpdmVycyBhbmQgd2FudHMgdG8gc2V0IGhpcyBvciBoZXIgb3duIHByZWZl cmVuY2UuCgpTb21lIGV4YW1wbGVzOgoKMS4gV2hpbGUgUkdCIGFuZCBZQ2JDciA0OjQ6NCBpbiB0 aGVvcnkgY2FycnkgdGhlIHNhbWUgYW1vdW50IG9mIGNvbG9yIGluZm9ybWF0aW9uLCBzb21lIHNj cmVlbnMgbWlnaHQgbG9vayBiZXR0ZXIgb24gb25lCnRoYW4gdGhlIG90aGVyIGJlY2F1c2Ugb2Yg YmFkIGludGVybmFsIGNvbnZlcnNpb24uIFRoZSBkcml2ZXIgY3VycmVudGx5IGhvd2V2ZXIgaGFz IGEgZml4ZWQgZGVmYXVsdCB0aGF0IGlzIGNob3NlbiBpZgphdmFpbGFibGUgKFJHQiBmb3IgSW50 ZWwgYW5kIFlDYkNyIDQ6NDo0IGZvciBBTUQpLiBUaGUgb25seSB3YXkgdG8gY2hhbmdlIHRoaXMg Y3VycmVudGx5IGlzIGJ5IGVkaXRpbmcgYW5kIG92ZXJsb2FkaW5nCnRoZSBlZGlkIHJlcG9ydGVk IGJ5IHRoZSBtb25pdG9yIHRvIHRoZSBrZXJuZWwuCgoyLiBSR0IgYW5kIFlDYkNyIDQ6NDo0IG5l ZWQgYSBoaWdoZXIgcG9ydCBjbG9jayB0aGVuIFlDYkNyIDQ6MjowLiBTb21lIGhhcmR3YXJlIG1p Z2h0IHJlcG9ydCB0aGF0IGl0IHN1cHBvcnRzIHRoZSBoaWdoZXIKcG9ydCBjbG9jaywgYnV0IGJl Y2F1c2Ugb2YgYmFkIHNoaWVsZGluZyBvbiB0aGUgUEMsIHRoZSBjYWJsZSwgb3IgdGhlIG1vbml0 b3IgdGhlIHNjcmVlbiBjdXRzIG91dCBldmVyeSBmZXcgc2Vjb25kcyB3aGVuClJHQiBvciBZQ2JD ciA0OjQ6NCBlbmNvZGluZyBpcyB1c2VkLCB3aGlsZSBZQ2JDciA0OjI6MCBtaWdodCBqdXN0IHdv cmsgZmluZSB3aXRob3V0IGNoYW5naW5nIGhhcmR3YXJlLiBUaGUgZHJpdmVycwpjdXJyZW50bHkg aG93ZXZlciBhbHdheXMgZGVmYXVsdCB0byB0aGUgImJlc3QgYXZhaWxhYmxlIiBvcHRpb24gZXZl biBpZiBpdCBtaWdodCBiZSBicm9rZW4uCgozLiBTb21lIHNjcmVlbnMgbmF0aXZlbHkgb25seSBz dXBwb3J0aW5nIDgtYml0IGNvbG9yLCBzaW11bGF0ZSAxMC1CaXQgY29sb3IgYnkgcmFwaWRseSBz d2l0Y2hpbmcgYmV0d2VlbiAyIGFkamFjZW50CmNvbG9ycy4gVGhleSBhZHZlcnRpc2UgdGhlbXNl bHZlcyB0byB0aGUga2VybmVsIGFzIDEwLWJpdCBtb25pdG9ycyBidXQgdGhlIHVzZXIgbWlnaHQg bm90IGxpa2UgdGhlICJmYWtlIiAxMC1iaXQgZWZmZWN0CmFuZCBwcmVmZXIgcnVubmluZyBhdCB0 aGUgbmF0aXZlIDgtYml0IHBlciBjb2xvci4KCjQuIFNvbWUgc2NyZWVucyBhcmUgZmFsc2VseSBj bGFzc2lmaWVkIGFzIGZ1bGwgUkdCIHJhbmdlIHdpbGUgdGhleSBhY3R1YWxseSB1c2UgbGltaXRl ZCBSR0IgcmFuZ2UuIFRoaXMgcmVzdWx0cyBpbgp3YXNoZWQgb3V0IGNvbG9ycyBpbiBkYXJrIGFu ZCBicmlnaHQgc2NlbmVzLiBBIHVzZXIgb3ZlcnJpZGUgY2FuIGJlIGhlbHBmdWwgdG8gbWFudWFs bHkgZml4IHRoaXMgaXNzdWUgd2hlbiBpdCBvY2N1cnMuCgpUaGVyZSBhbHJlYWR5IGV4aXN0IHNl dmVyYWwgcmVxdWVzdHMsIGRpc2N1c3Npb24sIGFuZCBwYXRjaGVzIHJlZ2FyZGluZyB0aGUgdGhl bWF0aWM6CgotIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vYW1kLy0vaXNzdWVz LzQ3NgoKLSBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL2FtZC8tL2lzc3Vlcy8x NTQ4CgotIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDIxLzUvNy82OTUKCi0gaHR0cHM6Ly9sa21s Lm9yZy9sa21sLzIwMjEvNS8xMS80MTYKCgpDdXJyZW50IFN0YXRlOgoKSSBvbmx5IGtub3cgYml0 cyBhYm91dCB0aGUgSW50ZWwgaTkxNSBhbmQgQU1EIGFtZGdwdSBkcml2ZXIuIEkgZG9uJ3Qga25v dyBob3cgb3RoZXIgZHJpdmVyIGhhbmRsZSBjb2xvciBtYW5hZ2VtZW50CgotICJtYXggYnBjIiwg Z2xvYmFsIHNldHRpbmcgYXBwbGllZCBieSBib3RoIGk5MTUgKG9ubHkgb24gZHAgaSB0aGluaz8p IGFuZCBhbWRncHUuIERlZmF1bHQgdmFsdWUgaXMgIjgiLiBGb3IgZXZlcnkKcmVzb2x1dGlvbiAr IGZyZXF1ZW5jeSBjb21iaW5hdGlvbiB0aGUgaGlnaGVzdCBwb3NzaWJsZSBldmVuIG51bWJlciBi ZXR3ZWVuIDYgYW5kIG1heF9icGMgaXMgY2hvc2VuLiBJZiB0aGUgcmFuZ2UKZG9lc24ndCBjb250 YWluIGEgdmFsaWQgbW9kZSB0aGUgcmVzb2x1dGlvbiArIGZyZXF1ZW5jeSBjb21iaW5hdGlvbiBp cyBkaXNjYXJkZWQgKGJ1dCBJIGd1ZXNzIHRoYXQgd291bGQgYmUgYSB2ZXJ5CnNwZWNpYWwgZWRn ZSBjYXNlLCBpZiBleGlzdGVudCBhdCBhbGwsIHdoZW4gNiBkb2Vzbid0IHdvcmsgYnV0IDEwIHdv dWxkIHdvcmspLiBJbnRlbCBIRE1JIGNvZGUgYWx3YXlzIGNoZWNrcyA4LCAxMiwgYW5kCjEwIGFu ZCBkb2VzIG5vdCBjaGVjayB0aGUgbWF4X2JwYyBzZXR0aW5nLgoKLSAiQnJvYWRjYXN0IFJHQiIg Zm9yIGk5MTUgYW5kICJvdXRwdXRfY3NjIiBmb3IgdGhlIG9sZCByYWRlb24gZHJpdmVyIChub3Qg YW1kZ3B1KSwgb3ZlcndyaXRlcyB0aGUga2VybmVsIGNob3NlbiBjb2xvcgpyYW5nZSBzZXR0aW5n IChmdWxsIG9yIGxpbWl0ZWQpLiBJZiBJIHJlY2FsbCBjb3JyZWN0bHkgSW50ZWwgSERNSSBjb2Rl IGRlZmF1bHRzIHRvIGZ1bGwgdW5sZXNzIHRoaXMgcHJvcGVydHkgaXMgc2V0LApJbnRlbCBkcCBj b2RlIHRyaWVzIHRvIHByb2JlIHRoZSBtb25pdG9yIHRvIGZpbmQgb3V0IHdoYXQgdG8gdXNlLiBh bWRncHUgaGFzIG5vIGNvcnJlc3BvbmRpbmcgc2V0dGluZyAoSSBkb24ndCBrbm93IGhvdwppdCdz IGRlY2lkZWQgdGhlcmUpLgoKLSBSR0IgcGl4ZWwgZW5jb2RpbmcgY2FuIGJlIGZvcmNlZCBieSBv dmVybG9hZGluZyBhIE1vbml0b3JzIGVkaWQgd2l0aCBvbmUgdGhhdCB0ZWxscyB0aGUga2VybmVs IHRoYXQgb25seSBSR0IgaXMKcG9zc2libGUuIFRoYXQgZG9lc24ndCB3b3JrIGZvciBZQ2JDciA0 OjQ6NCBob3dldmVyIGJlY2F1c2Ugb2YgdGhlIGVkaWQgc3BlY2lmaWNhdGlvbi4gRm9yY2luZyBZ Q2JDciA0OjI6MCB3b3VsZAp0aGVvcmV0aWNhbGx5IGFsc28gYmUgcG9zc2libGUgdGhpcyB3YXku IGFtZGdwdSBoYXMgYSBkZWJ1Z2ZzIHN3aXRjaCAiZm9yY2VfeWNiY3JfNDIwIiB3aGljaCBtYWtl cyB0aGUgZHJpdmVyIGRlZmF1bHQgdG8KWUNiQ3IgNDoyOjAgb24gYWxsIG1vbml0b3JzIGlmIHBv c3NpYmxlLgoKClByb3Bvc2VkIFNvbHV0aW9uOgoKMS4gQWRkIGEgbmV3IHVBUEkgcHJvcGVydHkg InByZWZlcnJlZCBwaXhlbCBlbmNvZGluZyIsIGFzIGEgcGVyIHBvcnQgc2V0dGluZy4KCsKgwqDC oCAtIEFuIGFtZGdwdSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB3YXMgYWxyZWFkeSBzaGFyZWQg aGVyZTogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9hbWQvLS9pc3N1ZXMvNDc2 CgrCoMKgwqAgLSBJdCBhbHNvIHdyaXRlcyBiYWNrIHRoZSBhY3R1YWxseSB1c2VkIGVuY29kaW5n IGlmIHRoZSBvbmUgcmVxdWVzdGVkIHdhcyBub3QgcG9zc2libGUsIG92ZXJ3cml0aW5nIHRoZSBy ZXF1ZXN0ZWQKdmFsdWUgaW4gdGhlIHByb2Nlc3MuIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVy IHRvIGhhdmUgdGhpcyBmZWVkYmFjayBjaGFubmVsIGFzIGEgZGlmZmVyZW50LCByZWFkLW9ubHkg cHJvcGVydHkuCgrCoMKgwqAgLSBNYWtlIHRoaXMgc29sdXRpb24gdmVuZG9yIGFnbm9zdGljIGJ5 IHB1dHRpbmcgaXQgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0IG5leHQgZG8gbWF4 X2JwYwpodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzEvc291cmNlL2lu Y2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCNMNjU0IGFuZCBhZGQgcGF0Y2hlcyB0byBhbWRncHUg YW5kIGk5MTUgdG8KcmVzcGVjdCB0aGlzIHNldHRpbmcKCjIuIENvbnZlcnQgIkJyb2FkY2FzdCBS R0IiIHRvIGEgdmVuZG9yIGFnbm9zdGljIHNldHRpbmcvcmVwbGFjZSB3aXRoIGEgdmVuZG9yIGFn bm9zdGljIHNldHRpbmcuCgrCoMKgwqAgLSBJbWhvIHRoZSBuYW1lIGlzIG5vdCB2ZXJ5IGZpdHRp bmcsIGJ1dCBpdCBwb3BzIHVwIGluIG1hbnkgdHV0b3JpYWxzIHRocm91Z2hvdXQgdGhlIHdlYiAo c29tZSBvdGhlciBvcGluaW9ucz8gaG93CmNvdWxkIGEgcmVuYW1lIGJlIGhhbmRsZWQ/Ii4KCsKg wqDCoCAtIEFsc28gbW92ZSBpdCBmcm9tIEludGVsIHNwZWNpZmljIHN0cnVjdHMgdG8gdGhlIGRy bV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0IChwbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlcmUgaXMg YQpiZXR0ZXIgcGxhY2UpCgozLiBTdHJpdmUgZm9yIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgIm1h eCBicGMiCgrCoMKgwqAgLSBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBJbnRlbCBIRE1JIGNv ZGUuCgo0LiBBZGQgMyBmZWVkYmFjayBjaGFubmVscyAiYWN0aXZlIGNvbG9yIGRlcHRoIiwgImFj dGl2ZSBjb2xvciByYW5nZSIsIGFuZCAiYWN0aXZlIHBpeGVsIGVuY29kaW5nIiBhcyB2ZW5kb3Ig YWdub3N0aWMKc2V0dGluZ3MgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0CgrCoMKg wqAgLSBQb3NzaWJsZSB2YWx1ZXMgYXJlOgoKwqDCoMKgIMKgwqDCoCAtIHVua25vd24sIHVuZGVm aW5lZCwgNi1iaXQsIDgtYml0LCA5LWJpdCwgMTAtYml0LCAxMS1iaXQsIDEyLWJpdCwgMTQtYml0 LCAxNi1iaXQgKGFsdGVybmF0aXZlbHk6IGFuIGludGVnZXIKZnJvbSAtMSAodW5rbm93biksIDAg KHVuZGVmaW5lZCkgdG8gMTYsIGxldCBtZSBrbm93IHdoYXQgd291bGQgYmUgbW9yZSBzdWl0YWJs ZSkKCsKgwqDCoCDCoMKgwqAgLSB1bmtub3duLCB1bmRlZmluZWQsIGZ1bGwsIGxpbWl0ZWQKCsKg wqDCoCDCoMKgwqAgLSB1bmtub3duLCB1bmRlZmluZWQsIHJnYiwgeWNiY3I0NDQsIHljYmNyNDIy LCB5Y2JjcjQyMAoKwqDCoMKgIC0gaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRyaXZl ciB0byB1cGRhdGUgdGhlIHZhbHVlcyBvbmNlIHRoZSBwb3J0IGNvbmZpZ3VyYXRpb24gY2hhbmdl cwoKwqDCoMKgIC0gaWYgdGhlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmZWVkYmFjayBj aGFubmVscyB0aGV5IGFyZSBzZXQgdG8gdW5rbm93bgoKwqDCoMKgIC0gaWYgdGhlIGRyaXZlciB1 c2VzIGEgbm9uIGxpc3RlZCBzZXR0aW5nIGl0IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHRvIHVu ZGVmaW5lZAoKwqDCoMKgIC0gQSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIHdoeSBJIHRoaW5r IHRoZXNlIGZlZWRiYWNrIGNoYW5uZWwgYXJlIGltcG9ydGFudCBhbmQgc2hvdWxkIGJlIHRoZWly IG93biByZWFkLW9ubHkKcHJvcGVydHkgY2FuIGJlIGZvdW5kIGhlcmU6IGh0dHBzOi8vbGttbC5v cmcvbGttbC8yMDIxLzUvMTEvMzM5CgoKQWRvcHRpb246CgpBIEtERSBkZXYgd2FudHMgdG8gaW1w bGVtZW50IHRoZSBzZXR0aW5ncyBpbiB0aGUgS0RFIHNldHRpbmdzIEdVSToKaHR0cHM6Ly9naXRs YWIuZnJlZWRlc2t0b3Aub3JnL2RybS9hbWQvLS9pc3N1ZXMvNDc2I25vdGVfOTEyMzcwCgpUdXhl ZG8gQ29tcHV0ZXJzIChteSBlbXBsb3llcikgd2FudHMgdG8gaW1wbGVtZW50IHRoZSBzZXR0aW5n cyBkZXNrdG9wIGVudmlyb25tZW50IGFnbm9zdGljIGluIFR1eGVkbyBDb250cm9sIENlbnRlci4g SQp3aWxsIHN0YXJ0IHdvcmsgb24gdGhpcyBpbiBwYXJhbGxlbCB0byBpbXBsZW1lbnRpbmcgdGhl IG5ldyBrZXJuZWwgY29kZS4KCgpRdWVzdGlvbnM6CgpJJ20gdmVyeSBjdXJpb3VzIGFib3V0IGZl ZWRiYWNrIGZyb20gdGhlIGRyaS1kZXZlbCBjb21tdW5pdHkuIFdvdWxkIHRoZSBjb25jZXB0IG91 dGxhaWQgYWJvdmUgYmUgYWNjZXB0ZWQgYXMgbmV3IHVBUEkKb25jZSBpdCdzIGZ1bGx5IGltcGxl bWVudGVkPwoKV2hlcmUgd291bGQgYmUgdGhlIGJlc3Qgd2F5IHRvIHN0b3JlIHRoZSBuZXcgdmVu ZG9yIGFnbm9zdGljIHNldHRpbmdzPyBGb2xsb3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIG1h eF9icGMgaSB3b3VsZApwdXQgaXQgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0LgoK TXkgd2F5IGZvcndhcmQgd291bGQgYmUgdG8gaW1wbGVtZW50IHRoZSBmZWVkYmFjayBjaGFubmVs cyBmaXJzdCwgYmVjYXVzZSB0aGV5IGNhbiBiZSB2ZXJ5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRo ZQpzZXR0aW5nIHByb3BlcnRpZXMgYWZ0ZXJ3YXJkcy4gSSB3aWxsIHNwbGl0IGVhY2ggb2YgaXQg dXAgaXQgaW4gMyBvciA1IHBhdGNoIHNldHM6IDEgZm9yIHRoZSB2ZW5kb3IgYWdub3N0aWMgcGFy dCwgMSBmb3IKSW50ZWwgKG9yIDIgc3BsaXQgdXAgYmV0d2VlbiBIRE1JIGFuZCBEUCksIGFuZCAx IGZvciBBTUQgKG9yIDIgc3BsaXQgdXAgYmV0d2VlbiBIRE1JIGFuZCBEUCkKCktpbmQgcmVnYXJk cywKCldlcm5lciBTZW1iYWNoCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89B0AC433B4 for ; Wed, 12 May 2021 12:07:11 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 28B30613EE for ; Wed, 12 May 2021 12:07:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 28B30613EE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tuxedocomputers.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 453766EB7C; Wed, 12 May 2021 12:07:07 +0000 (UTC) Received: from srv6.fidu.org (srv6.fidu.org [159.69.62.71]) by gabe.freedesktop.org (Postfix) with ESMTPS id 40CB76EB7C for ; Wed, 12 May 2021 12:07:05 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by srv6.fidu.org (Postfix) with ESMTP id 16C0EC800DB; Wed, 12 May 2021 14:07:01 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at srv6.fidu.org Received: from srv6.fidu.org ([127.0.0.1]) by localhost (srv6.fidu.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 3YDOHybVgylk; Wed, 12 May 2021 14:07:00 +0200 (CEST) Received: from [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6] (p200300e37F15Cc0073BBE3C1C94613A6.dip0.t-ipconnect.de [IPv6:2003:e3:7f15:cc00:73bb:e3c1:c946:13a6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: wse@tuxedocomputers.com) by srv6.fidu.org (Postfix) with ESMTPSA id 15564C800D9; Wed, 12 May 2021 14:06:58 +0200 (CEST) To: Maling list - DRI developers From: Werner Sembach Subject: New uAPI for color management proposal and feedback request Message-ID: <8c0d7ad8-7ade-bf8a-0414-cc795fbb6aa2@tuxedocomputers.com> Date: Wed, 12 May 2021 14:06:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Deucher, Alexander" , Pekka Paalanen , intel-gfx@lists.freedesktop.org, =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , amd-gfx list Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" SGVsbG8sCgpJbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgIm1heCBicGMiLCBhbmQgIkJyb2Fk Y2FzdCBSR0Ivb3V0cHV0X2NzYyIgZHJtIHByb3BlcnRpZXMgSSBwcm9wb3NlIDQgbmV3IHByb3Bl cnRpZXM6CiJwcmVmZXJyZWQgcGl4ZWwgZW5jb2RpbmciLCAiYWN0aXZlIGNvbG9yIGRlcHRoIiwg ImFjdGl2ZSBjb2xvciByYW5nZSIsIGFuZCAiYWN0aXZlIHBpeGVsIGVuY29kaW5nIgoKCk1vdGl2 YXRpb246CgpDdXJyZW50IG1vbml0b3JzIGhhdmUgYSB2YXJpZXR5IHBpeGVsIGVuY29kaW5ncyBh dmFpbGFibGU6IFJHQiwgWUNiQ3IgNDo0OjQsIFlDYkNyIDQ6MjoyLCBZQ2JDciA0OjI6MC4KCklu IGFkZGl0aW9uIHRoZXkgbWlnaHQgYmUgZnVsbCBvciBsaW1pdGVkIFJHQiByYW5nZSBhbmQgdGhl IG1vbml0b3JzIGFjY2VwdCBkaWZmZXJlbnQgYml0IGRlcHRocy4KCkN1cnJlbnRseSB0aGUga2Vy bmVsIGRyaXZlciBmb3IgQU1EIGFuZCBJbnRlbCBHUFVzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJl IHRoZSBjb2xvciBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5IHdpdGggbGl0dGxlCnRvIG5vIGluZmx1 ZW5jZSBvZiB0aGUgdXNlci4gSG93ZXZlciB0aGVyZSBhcmUgc2V2ZXJhbCByZWFsIHdvcmxkIHNj ZW5hcmlvcyB3aGVyZSB0aGUgdXNlciBtaWdodCBkaXNhZ3JlZSB3aXRoIHRoZQpkZWZhdWx0IGNo b3NlbiBieSB0aGUgZHJpdmVycyBhbmQgd2FudHMgdG8gc2V0IGhpcyBvciBoZXIgb3duIHByZWZl cmVuY2UuCgpTb21lIGV4YW1wbGVzOgoKMS4gV2hpbGUgUkdCIGFuZCBZQ2JDciA0OjQ6NCBpbiB0 aGVvcnkgY2FycnkgdGhlIHNhbWUgYW1vdW50IG9mIGNvbG9yIGluZm9ybWF0aW9uLCBzb21lIHNj cmVlbnMgbWlnaHQgbG9vayBiZXR0ZXIgb24gb25lCnRoYW4gdGhlIG90aGVyIGJlY2F1c2Ugb2Yg YmFkIGludGVybmFsIGNvbnZlcnNpb24uIFRoZSBkcml2ZXIgY3VycmVudGx5IGhvd2V2ZXIgaGFz IGEgZml4ZWQgZGVmYXVsdCB0aGF0IGlzIGNob3NlbiBpZgphdmFpbGFibGUgKFJHQiBmb3IgSW50 ZWwgYW5kIFlDYkNyIDQ6NDo0IGZvciBBTUQpLiBUaGUgb25seSB3YXkgdG8gY2hhbmdlIHRoaXMg Y3VycmVudGx5IGlzIGJ5IGVkaXRpbmcgYW5kIG92ZXJsb2FkaW5nCnRoZSBlZGlkIHJlcG9ydGVk IGJ5IHRoZSBtb25pdG9yIHRvIHRoZSBrZXJuZWwuCgoyLiBSR0IgYW5kIFlDYkNyIDQ6NDo0IG5l ZWQgYSBoaWdoZXIgcG9ydCBjbG9jayB0aGVuIFlDYkNyIDQ6MjowLiBTb21lIGhhcmR3YXJlIG1p Z2h0IHJlcG9ydCB0aGF0IGl0IHN1cHBvcnRzIHRoZSBoaWdoZXIKcG9ydCBjbG9jaywgYnV0IGJl Y2F1c2Ugb2YgYmFkIHNoaWVsZGluZyBvbiB0aGUgUEMsIHRoZSBjYWJsZSwgb3IgdGhlIG1vbml0 b3IgdGhlIHNjcmVlbiBjdXRzIG91dCBldmVyeSBmZXcgc2Vjb25kcyB3aGVuClJHQiBvciBZQ2JD ciA0OjQ6NCBlbmNvZGluZyBpcyB1c2VkLCB3aGlsZSBZQ2JDciA0OjI6MCBtaWdodCBqdXN0IHdv cmsgZmluZSB3aXRob3V0IGNoYW5naW5nIGhhcmR3YXJlLiBUaGUgZHJpdmVycwpjdXJyZW50bHkg aG93ZXZlciBhbHdheXMgZGVmYXVsdCB0byB0aGUgImJlc3QgYXZhaWxhYmxlIiBvcHRpb24gZXZl biBpZiBpdCBtaWdodCBiZSBicm9rZW4uCgozLiBTb21lIHNjcmVlbnMgbmF0aXZlbHkgb25seSBz dXBwb3J0aW5nIDgtYml0IGNvbG9yLCBzaW11bGF0ZSAxMC1CaXQgY29sb3IgYnkgcmFwaWRseSBz d2l0Y2hpbmcgYmV0d2VlbiAyIGFkamFjZW50CmNvbG9ycy4gVGhleSBhZHZlcnRpc2UgdGhlbXNl bHZlcyB0byB0aGUga2VybmVsIGFzIDEwLWJpdCBtb25pdG9ycyBidXQgdGhlIHVzZXIgbWlnaHQg bm90IGxpa2UgdGhlICJmYWtlIiAxMC1iaXQgZWZmZWN0CmFuZCBwcmVmZXIgcnVubmluZyBhdCB0 aGUgbmF0aXZlIDgtYml0IHBlciBjb2xvci4KCjQuIFNvbWUgc2NyZWVucyBhcmUgZmFsc2VseSBj bGFzc2lmaWVkIGFzIGZ1bGwgUkdCIHJhbmdlIHdpbGUgdGhleSBhY3R1YWxseSB1c2UgbGltaXRl ZCBSR0IgcmFuZ2UuIFRoaXMgcmVzdWx0cyBpbgp3YXNoZWQgb3V0IGNvbG9ycyBpbiBkYXJrIGFu ZCBicmlnaHQgc2NlbmVzLiBBIHVzZXIgb3ZlcnJpZGUgY2FuIGJlIGhlbHBmdWwgdG8gbWFudWFs bHkgZml4IHRoaXMgaXNzdWUgd2hlbiBpdCBvY2N1cnMuCgpUaGVyZSBhbHJlYWR5IGV4aXN0IHNl dmVyYWwgcmVxdWVzdHMsIGRpc2N1c3Npb24sIGFuZCBwYXRjaGVzIHJlZ2FyZGluZyB0aGUgdGhl bWF0aWM6CgotIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vYW1kLy0vaXNzdWVz LzQ3NgoKLSBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL2FtZC8tL2lzc3Vlcy8x NTQ4CgotIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDIxLzUvNy82OTUKCi0gaHR0cHM6Ly9sa21s Lm9yZy9sa21sLzIwMjEvNS8xMS80MTYKCgpDdXJyZW50IFN0YXRlOgoKSSBvbmx5IGtub3cgYml0 cyBhYm91dCB0aGUgSW50ZWwgaTkxNSBhbmQgQU1EIGFtZGdwdSBkcml2ZXIuIEkgZG9uJ3Qga25v dyBob3cgb3RoZXIgZHJpdmVyIGhhbmRsZSBjb2xvciBtYW5hZ2VtZW50CgotICJtYXggYnBjIiwg Z2xvYmFsIHNldHRpbmcgYXBwbGllZCBieSBib3RoIGk5MTUgKG9ubHkgb24gZHAgaSB0aGluaz8p IGFuZCBhbWRncHUuIERlZmF1bHQgdmFsdWUgaXMgIjgiLiBGb3IgZXZlcnkKcmVzb2x1dGlvbiAr IGZyZXF1ZW5jeSBjb21iaW5hdGlvbiB0aGUgaGlnaGVzdCBwb3NzaWJsZSBldmVuIG51bWJlciBi ZXR3ZWVuIDYgYW5kIG1heF9icGMgaXMgY2hvc2VuLiBJZiB0aGUgcmFuZ2UKZG9lc24ndCBjb250 YWluIGEgdmFsaWQgbW9kZSB0aGUgcmVzb2x1dGlvbiArIGZyZXF1ZW5jeSBjb21iaW5hdGlvbiBp cyBkaXNjYXJkZWQgKGJ1dCBJIGd1ZXNzIHRoYXQgd291bGQgYmUgYSB2ZXJ5CnNwZWNpYWwgZWRn ZSBjYXNlLCBpZiBleGlzdGVudCBhdCBhbGwsIHdoZW4gNiBkb2Vzbid0IHdvcmsgYnV0IDEwIHdv dWxkIHdvcmspLiBJbnRlbCBIRE1JIGNvZGUgYWx3YXlzIGNoZWNrcyA4LCAxMiwgYW5kCjEwIGFu ZCBkb2VzIG5vdCBjaGVjayB0aGUgbWF4X2JwYyBzZXR0aW5nLgoKLSAiQnJvYWRjYXN0IFJHQiIg Zm9yIGk5MTUgYW5kICJvdXRwdXRfY3NjIiBmb3IgdGhlIG9sZCByYWRlb24gZHJpdmVyIChub3Qg YW1kZ3B1KSwgb3ZlcndyaXRlcyB0aGUga2VybmVsIGNob3NlbiBjb2xvcgpyYW5nZSBzZXR0aW5n IChmdWxsIG9yIGxpbWl0ZWQpLiBJZiBJIHJlY2FsbCBjb3JyZWN0bHkgSW50ZWwgSERNSSBjb2Rl IGRlZmF1bHRzIHRvIGZ1bGwgdW5sZXNzIHRoaXMgcHJvcGVydHkgaXMgc2V0LApJbnRlbCBkcCBj b2RlIHRyaWVzIHRvIHByb2JlIHRoZSBtb25pdG9yIHRvIGZpbmQgb3V0IHdoYXQgdG8gdXNlLiBh bWRncHUgaGFzIG5vIGNvcnJlc3BvbmRpbmcgc2V0dGluZyAoSSBkb24ndCBrbm93IGhvdwppdCdz IGRlY2lkZWQgdGhlcmUpLgoKLSBSR0IgcGl4ZWwgZW5jb2RpbmcgY2FuIGJlIGZvcmNlZCBieSBv dmVybG9hZGluZyBhIE1vbml0b3JzIGVkaWQgd2l0aCBvbmUgdGhhdCB0ZWxscyB0aGUga2VybmVs IHRoYXQgb25seSBSR0IgaXMKcG9zc2libGUuIFRoYXQgZG9lc24ndCB3b3JrIGZvciBZQ2JDciA0 OjQ6NCBob3dldmVyIGJlY2F1c2Ugb2YgdGhlIGVkaWQgc3BlY2lmaWNhdGlvbi4gRm9yY2luZyBZ Q2JDciA0OjI6MCB3b3VsZAp0aGVvcmV0aWNhbGx5IGFsc28gYmUgcG9zc2libGUgdGhpcyB3YXku IGFtZGdwdSBoYXMgYSBkZWJ1Z2ZzIHN3aXRjaCAiZm9yY2VfeWNiY3JfNDIwIiB3aGljaCBtYWtl cyB0aGUgZHJpdmVyIGRlZmF1bHQgdG8KWUNiQ3IgNDoyOjAgb24gYWxsIG1vbml0b3JzIGlmIHBv c3NpYmxlLgoKClByb3Bvc2VkIFNvbHV0aW9uOgoKMS4gQWRkIGEgbmV3IHVBUEkgcHJvcGVydHkg InByZWZlcnJlZCBwaXhlbCBlbmNvZGluZyIsIGFzIGEgcGVyIHBvcnQgc2V0dGluZy4KCsKgwqDC oCAtIEFuIGFtZGdwdSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB3YXMgYWxyZWFkeSBzaGFyZWQg aGVyZTogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9hbWQvLS9pc3N1ZXMvNDc2 CgrCoMKgwqAgLSBJdCBhbHNvIHdyaXRlcyBiYWNrIHRoZSBhY3R1YWxseSB1c2VkIGVuY29kaW5n IGlmIHRoZSBvbmUgcmVxdWVzdGVkIHdhcyBub3QgcG9zc2libGUsIG92ZXJ3cml0aW5nIHRoZSBy ZXF1ZXN0ZWQKdmFsdWUgaW4gdGhlIHByb2Nlc3MuIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVy IHRvIGhhdmUgdGhpcyBmZWVkYmFjayBjaGFubmVsIGFzIGEgZGlmZmVyZW50LCByZWFkLW9ubHkg cHJvcGVydHkuCgrCoMKgwqAgLSBNYWtlIHRoaXMgc29sdXRpb24gdmVuZG9yIGFnbm9zdGljIGJ5 IHB1dHRpbmcgaXQgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0IG5leHQgZG8gbWF4 X2JwYwpodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzEvc291cmNlL2lu Y2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCNMNjU0IGFuZCBhZGQgcGF0Y2hlcyB0byBhbWRncHUg YW5kIGk5MTUgdG8KcmVzcGVjdCB0aGlzIHNldHRpbmcKCjIuIENvbnZlcnQgIkJyb2FkY2FzdCBS R0IiIHRvIGEgdmVuZG9yIGFnbm9zdGljIHNldHRpbmcvcmVwbGFjZSB3aXRoIGEgdmVuZG9yIGFn bm9zdGljIHNldHRpbmcuCgrCoMKgwqAgLSBJbWhvIHRoZSBuYW1lIGlzIG5vdCB2ZXJ5IGZpdHRp bmcsIGJ1dCBpdCBwb3BzIHVwIGluIG1hbnkgdHV0b3JpYWxzIHRocm91Z2hvdXQgdGhlIHdlYiAo c29tZSBvdGhlciBvcGluaW9ucz8gaG93CmNvdWxkIGEgcmVuYW1lIGJlIGhhbmRsZWQ/Ii4KCsKg wqDCoCAtIEFsc28gbW92ZSBpdCBmcm9tIEludGVsIHNwZWNpZmljIHN0cnVjdHMgdG8gdGhlIGRy bV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0IChwbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlcmUgaXMg YQpiZXR0ZXIgcGxhY2UpCgozLiBTdHJpdmUgZm9yIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgIm1h eCBicGMiCgrCoMKgwqAgLSBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBJbnRlbCBIRE1JIGNv ZGUuCgo0LiBBZGQgMyBmZWVkYmFjayBjaGFubmVscyAiYWN0aXZlIGNvbG9yIGRlcHRoIiwgImFj dGl2ZSBjb2xvciByYW5nZSIsIGFuZCAiYWN0aXZlIHBpeGVsIGVuY29kaW5nIiBhcyB2ZW5kb3Ig YWdub3N0aWMKc2V0dGluZ3MgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0CgrCoMKg wqAgLSBQb3NzaWJsZSB2YWx1ZXMgYXJlOgoKwqDCoMKgIMKgwqDCoCAtIHVua25vd24sIHVuZGVm aW5lZCwgNi1iaXQsIDgtYml0LCA5LWJpdCwgMTAtYml0LCAxMS1iaXQsIDEyLWJpdCwgMTQtYml0 LCAxNi1iaXQgKGFsdGVybmF0aXZlbHk6IGFuIGludGVnZXIKZnJvbSAtMSAodW5rbm93biksIDAg KHVuZGVmaW5lZCkgdG8gMTYsIGxldCBtZSBrbm93IHdoYXQgd291bGQgYmUgbW9yZSBzdWl0YWJs ZSkKCsKgwqDCoCDCoMKgwqAgLSB1bmtub3duLCB1bmRlZmluZWQsIGZ1bGwsIGxpbWl0ZWQKCsKg wqDCoCDCoMKgwqAgLSB1bmtub3duLCB1bmRlZmluZWQsIHJnYiwgeWNiY3I0NDQsIHljYmNyNDIy LCB5Y2JjcjQyMAoKwqDCoMKgIC0gaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRyaXZl ciB0byB1cGRhdGUgdGhlIHZhbHVlcyBvbmNlIHRoZSBwb3J0IGNvbmZpZ3VyYXRpb24gY2hhbmdl cwoKwqDCoMKgIC0gaWYgdGhlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmZWVkYmFjayBj aGFubmVscyB0aGV5IGFyZSBzZXQgdG8gdW5rbm93bgoKwqDCoMKgIC0gaWYgdGhlIGRyaXZlciB1 c2VzIGEgbm9uIGxpc3RlZCBzZXR0aW5nIGl0IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHRvIHVu ZGVmaW5lZAoKwqDCoMKgIC0gQSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIHdoeSBJIHRoaW5r IHRoZXNlIGZlZWRiYWNrIGNoYW5uZWwgYXJlIGltcG9ydGFudCBhbmQgc2hvdWxkIGJlIHRoZWly IG93biByZWFkLW9ubHkKcHJvcGVydHkgY2FuIGJlIGZvdW5kIGhlcmU6IGh0dHBzOi8vbGttbC5v cmcvbGttbC8yMDIxLzUvMTEvMzM5CgoKQWRvcHRpb246CgpBIEtERSBkZXYgd2FudHMgdG8gaW1w bGVtZW50IHRoZSBzZXR0aW5ncyBpbiB0aGUgS0RFIHNldHRpbmdzIEdVSToKaHR0cHM6Ly9naXRs YWIuZnJlZWRlc2t0b3Aub3JnL2RybS9hbWQvLS9pc3N1ZXMvNDc2I25vdGVfOTEyMzcwCgpUdXhl ZG8gQ29tcHV0ZXJzIChteSBlbXBsb3llcikgd2FudHMgdG8gaW1wbGVtZW50IHRoZSBzZXR0aW5n cyBkZXNrdG9wIGVudmlyb25tZW50IGFnbm9zdGljIGluIFR1eGVkbyBDb250cm9sIENlbnRlci4g SQp3aWxsIHN0YXJ0IHdvcmsgb24gdGhpcyBpbiBwYXJhbGxlbCB0byBpbXBsZW1lbnRpbmcgdGhl IG5ldyBrZXJuZWwgY29kZS4KCgpRdWVzdGlvbnM6CgpJJ20gdmVyeSBjdXJpb3VzIGFib3V0IGZl ZWRiYWNrIGZyb20gdGhlIGRyaS1kZXZlbCBjb21tdW5pdHkuIFdvdWxkIHRoZSBjb25jZXB0IG91 dGxhaWQgYWJvdmUgYmUgYWNjZXB0ZWQgYXMgbmV3IHVBUEkKb25jZSBpdCdzIGZ1bGx5IGltcGxl bWVudGVkPwoKV2hlcmUgd291bGQgYmUgdGhlIGJlc3Qgd2F5IHRvIHN0b3JlIHRoZSBuZXcgdmVu ZG9yIGFnbm9zdGljIHNldHRpbmdzPyBGb2xsb3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIG1h eF9icGMgaSB3b3VsZApwdXQgaXQgaW4gdGhlIGRybV9jb25uZWN0b3Jfc3RhdGUgc3RydWN0LgoK TXkgd2F5IGZvcndhcmQgd291bGQgYmUgdG8gaW1wbGVtZW50IHRoZSBmZWVkYmFjayBjaGFubmVs cyBmaXJzdCwgYmVjYXVzZSB0aGV5IGNhbiBiZSB2ZXJ5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRo ZQpzZXR0aW5nIHByb3BlcnRpZXMgYWZ0ZXJ3YXJkcy4gSSB3aWxsIHNwbGl0IGVhY2ggb2YgaXQg dXAgaXQgaW4gMyBvciA1IHBhdGNoIHNldHM6IDEgZm9yIHRoZSB2ZW5kb3IgYWdub3N0aWMgcGFy dCwgMSBmb3IKSW50ZWwgKG9yIDIgc3BsaXQgdXAgYmV0d2VlbiBIRE1JIGFuZCBEUCksIGFuZCAx IGZvciBBTUQgKG9yIDIgc3BsaXQgdXAgYmV0d2VlbiBIRE1JIGFuZCBEUCkKCktpbmQgcmVnYXJk cywKCldlcm5lciBTZW1iYWNoCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==