From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Schake Subject: [PATCH 2/3] drm/vc4: Add color transformation matrix (CTM) support Date: Fri, 16 Mar 2018 22:50:58 +0100 Message-ID: <1521237059-37117-3-git-send-email-stschake@gmail.com> References: <1521237059-37117-1-git-send-email-stschake@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC0666EC0F for ; Fri, 16 Mar 2018 21:51:25 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id t6so5565212wmt.5 for ; Fri, 16 Mar 2018 14:51:25 -0700 (PDT) In-Reply-To: <1521237059-37117-1-git-send-email-stschake@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: eric@anholt.net Cc: airlied@linux.ie, linux-rpi-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, Stefan Schake List-Id: dri-devel@lists.freedesktop.org VGhlIGhhcmR3YXJlIHN1cHBvcnRzIGEgQ1RNIHdpdGggUzAuOSB2YWx1ZXMuIFdlIHRoZXJlZm9y ZSBvbmx5IGFsbG93CmEgdmFsdWUgb2YgMS4wIG9yIGZyYWN0aW9uYWwgb25seSBhbmQgcmVqZWN0 IGFsbCBvdGhlcnMgd2l0aCBpbnRlZ2VyCnBhcnRzLiBUaGlzIHJlc3RyaWN0aW9uIGlzIG1vc3Rs eSBpbmNvbnNlcXVlbnRpYWwgaW4gcHJhY3RpY2Ugc2luY2UKY29tbW9ubHkgdXNlZCB0cmFuc2Zv cm1hdGlvbiBtYXRyaWNlcyBoYXZlIGFsbCBzY2FsYXJzIDw9IDEuMC4KClNpZ25lZC1vZmYtYnk6 IFN0ZWZhbiBTY2hha2UgPHN0c2NoYWtlQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9jcnRjLmMgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2NydGMuYwppbmRleCA4ZDcxMDk4Li41YzgzZmQyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfY3J0Yy5jCkBAIC0zMTUsNiArMzE1LDgxIEBAIHZjNF9jcnRjX3VwZGF0ZV9nYW1tYV9sdXQo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCXZjNF9jcnRjX2x1dF9sb2FkKGNydGMpOwogfQogCisv KiBDb252ZXJ0cyBhIERSTSBTMzEuMzIgdmFsdWUgdG8gdGhlIEhXIFMwLjkgZm9ybWF0LiAqLwor c3RhdGljIHUxNiB2YzRfY3J0Y19zMzFfMzJfdG9fczBfOSh1NjQgaW4pCit7CisJdTE2IHI7CisK KwkvKiBTaWduIGJpdC4gKi8KKwlyID0gaW4gJiBCSVRfVUxMKDYzKSA/IEJJVCg5KSA6IDA7CisJ LyogV2UgaGF2ZSB6ZXJvIGludGVnZXIgYml0cyBzbyB3ZSBjYW4gb25seSBzYXR1cmF0ZSBoZXJl LiAqLworCWlmICgoaW4gJiBHRU5NQVNLX1VMTCg2MiwgMzIpKSA+IDApCisJCXIgfD0gR0VOTUFT Syg4LCAwKTsKKwkvKiBPdGhlcndpc2UgdGFrZSB0aGUgOSBtb3N0IGltcG9ydGFudCBmcmFjdGlv bmFsIGJpdHMuICovCisJZWxzZQorCQlyIHw9IChpbiA+PiAyMikgJiBHRU5NQVNLKDgsIDApOwor CXJldHVybiByOworfQorCitzdGF0aWMgdm9pZAordmM0X2NydGNfdXBkYXRlX2N0bShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsK KwlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOworCXN0cnVjdCB2YzRfY3J0 YyAqdmM0X2NydGMgPSB0b192YzRfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAq Y3RtID0gY3J0Yy0+c3RhdGUtPmN0bS0+ZGF0YTsKKworCUhWU19XUklURShTQ0FMRVJfT0xFRENP RUYyLAorCQkgIFZDNF9TRVRfRklFTEQodmM0X2NydGNfczMxXzMyX3RvX3MwXzkoY3RtLT5tYXRy aXhbMF0pLAorCQkJCVNDQUxFUl9PTEVEQ09FRjJfUl9UT19SKSB8CisJCSAgVkM0X1NFVF9GSUVM RCh2YzRfY3J0Y19zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJpeFszXSksCisJCQkJU0NBTEVSX09M RURDT0VGMl9SX1RPX0cpIHwKKwkJICBWQzRfU0VUX0ZJRUxEKHZjNF9jcnRjX3MzMV8zMl90b19z MF85KGN0bS0+bWF0cml4WzZdKSwKKwkJCQlTQ0FMRVJfT0xFRENPRUYyX1JfVE9fQikpOworCUhW U19XUklURShTQ0FMRVJfT0xFRENPRUYxLAorCQkgIFZDNF9TRVRfRklFTEQodmM0X2NydGNfczMx XzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbMV0pLAorCQkJCVNDQUxFUl9PTEVEQ09FRjFfR19UT19S KSB8CisJCSAgVkM0X1NFVF9GSUVMRCh2YzRfY3J0Y19zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJp eFs0XSksCisJCQkJU0NBTEVSX09MRURDT0VGMV9HX1RPX0cpIHwKKwkJICBWQzRfU0VUX0ZJRUxE KHZjNF9jcnRjX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4WzddKSwKKwkJCQlTQ0FMRVJfT0xF RENPRUYxX0dfVE9fQikpOworCUhWU19XUklURShTQ0FMRVJfT0xFRENPRUYwLAorCQkgIFZDNF9T RVRfRklFTEQodmM0X2NydGNfczMxXzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbMl0pLAorCQkJCVND QUxFUl9PTEVEQ09FRjBfQl9UT19SKSB8CisJCSAgVkM0X1NFVF9GSUVMRCh2YzRfY3J0Y19zMzFf MzJfdG9fczBfOShjdG0tPm1hdHJpeFs1XSksCisJCQkJU0NBTEVSX09MRURDT0VGMF9CX1RPX0cp IHwKKwkJICBWQzRfU0VUX0ZJRUxEKHZjNF9jcnRjX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4 WzhdKSwKKwkJCQlTQ0FMRVJfT0xFRENPRUYwX0JfVE9fQikpOworCisJLyogQ2hhbm5lbCBpcyAw LWJhc2VkIGJ1dCBmb3IgRElTUEZJRk8sIDAgbWVhbnMgZGlzYWJsZWQuICovCisJSFZTX1dSSVRF KFNDQUxFUl9PTEVET0ZGUywgVkM0X1NFVF9GSUVMRCh2YzRfY3J0Yy0+Y2hhbm5lbCArIDEsCisJ CQkJCQkgU0NBTEVSX09MRURPRkZTX0RJU1BGSUZPKSk7Cit9CisKKy8qIENoZWNrIGlmIHRoZSBD VE0gY29udGFpbnMgdmFsaWQgaW5wdXQuCisgKgorICogRFJNIGV4cG9zZXMgQ1RNIHdpdGggUzMx LjMyIHNjYWxhcnMsIGJ1dCB0aGUgSFcgb25seSBzdXBwb3J0cyBTMC45LgorICogV2UgZG9uJ3Qg YWxsb3cgaW50ZWdlciB2YWx1ZXMgPjEsIGFuZCAxIG9ubHkgd2l0aG91dCBmcmFjdGlvbmFsIHBh cnQKKyAqIHRvIGhhbmRsZSB0aGUgY29tbW9uIDEuMCB2YWx1ZS4KKyAqLworc3RhdGljIGludCB2 YzRfY3J0Y19hdG9taWNfY2hlY2tfY3RtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCit7 CisJc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IHN0YXRlLT5jdG0tPmRhdGE7CisJdTMyIGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdG0tPm1hdHJpeCk7IGkrKykgeworCQl1 NjQgdmFsID0gY3RtLT5tYXRyaXhbaV07CisKKwkJdmFsICY9IH5CSVRfVUxMKDYzKTsKKwkJaWYg KCh2YWwgPj4gMzIpID4gMSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoKHZhbCA+PiAzMikg PT0gMSAmJiAodmFsICYgR0VOTUFTS19VTEwoMzEsIDApKSAhPSAwKQorCQkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB1MzIgdmM0X2dldF9maWZvX2Z1bGxf bGV2ZWwodTMyIGZvcm1hdCkKIHsKIAlzdGF0aWMgY29uc3QgdTMyIGZpZm9fbGVuX2J5dGVzID0g NjQ7CkBAIC02MjEsNiArNjk2LDE1IEBAIHN0YXRpYyBpbnQgdmM0X2NydGNfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoaHdlaWdodDMyKHN0YXRlLT5jb25uZWN0b3Jf bWFzaykgPiAxKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWlmIChzdGF0ZS0+Y3RtKSB7CisJCS8q IFRoZSBDVE0gaGFyZHdhcmUgaGFzIG5vIGludGVnZXIgYml0cywgc28gd2UgY2hlY2sKKwkJICog YW5kIHJlamVjdCBzY2FsYXJzID4xLjAgdGhhdCB3ZSBoYXZlIG5vIGNoYW5jZSBvZgorCQkgKiBh cHByb3hpbWF0aW5nLgorCQkgKi8KKwkJaWYgKHZjNF9jcnRjX2F0b21pY19jaGVja19jdG0oc3Rh dGUpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCiAJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zv cl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBwbGFuZV9zdGF0ZSwgc3RhdGUpCiAJCWRsaXN0X2Nv dW50ICs9IHZjNF9wbGFuZV9kbGlzdF9zaXplKHBsYW5lX3N0YXRlKTsKIApAQCAtNjk3LDggKzc4 MSwxNyBAQCBzdGF0aWMgdm9pZCB2YzRfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlICYmIG9sZF9zdGF0ZS0+YWN0aXZlKQog CQl2YzRfY3J0Y191cGRhdGVfZGxpc3QoY3J0Yyk7CiAKLQlpZiAoY3J0Yy0+c3RhdGUtPmNvbG9y X21nbXRfY2hhbmdlZCAmJiBjcnRjLT5zdGF0ZS0+Z2FtbWFfbHV0KQotCQl2YzRfY3J0Y191cGRh dGVfZ2FtbWFfbHV0KGNydGMpOworCWlmIChjcnRjLT5zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2Vk KSB7CisJCWlmIChjcnRjLT5zdGF0ZS0+Z2FtbWFfbHV0KQorCQkJdmM0X2NydGNfdXBkYXRlX2dh bW1hX2x1dChjcnRjKTsKKworCQlpZiAoY3J0Yy0+c3RhdGUtPmN0bSkKKwkJCXZjNF9jcnRjX3Vw ZGF0ZV9jdG0oY3J0Yyk7CisJCS8qIFdlIGFyZSB0cmFuc2l0aW9uaW5nIHRvIENUTSBkaXNhYmxl ZC4gKi8KKwkJZWxzZSBpZiAob2xkX3N0YXRlLT5jdG0pCisJCQlIVlNfV1JJVEUoU0NBTEVSX09M RURPRkZTLAorCQkJCSAgVkM0X1NFVF9GSUVMRCgwLCBTQ0FMRVJfT0xFRE9GRlNfRElTUEZJRk8p KTsKKwl9CiAKIAlpZiAoZGVidWdfZHVtcF9yZWdzKSB7CiAJCURSTV9JTkZPKCJDUlRDICVkIEhW UyBhZnRlcjpcbiIsIGRybV9jcnRjX2luZGV4KGNydGMpKTsKQEAgLTEwMzYsNyArMTEyOSw3IEBA IHN0YXRpYyBpbnQgdmM0X2NydGNfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAlwcmltYXJ5X3BsYW5lLT5jcnRjID0gY3J0YzsKIAl2 YzRfY3J0Yy0+Y2hhbm5lbCA9IHZjNF9jcnRjLT5kYXRhLT5odnNfY2hhbm5lbDsKIAlkcm1fbW9k ZV9jcnRjX3NldF9nYW1tYV9zaXplKGNydGMsIEFSUkFZX1NJWkUodmM0X2NydGMtPmx1dF9yKSk7 Ci0JZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoY3J0YywgMCwgZmFsc2UsIGNydGMtPmdhbW1h X3NpemUpOworCWRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KGNydGMsIDAsIHRydWUsIGNydGMt PmdhbW1hX3NpemUpOwogCiAJLyogU2V0IHVwIHNvbWUgYXJiaXRyYXJ5IG51bWJlciBvZiBwbGFu ZXMuICBXZSdyZSBub3QgbGltaXRlZAogCSAqIGJ5IGEgc2V0IG51bWJlciBvZiBwaHlzaWNhbCBy ZWdpc3RlcnMsIGp1c3QgdGhlIHNwYWNlIGluCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==