From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Schake Subject: [PATCH v2 3/4] drm/vc4: Add color transformation matrix (CTM) support Date: Sat, 24 Mar 2018 18:52:39 -0700 Message-ID: <20180325015240.75464-4-stschake@gmail.com> References: <20180325015240.75464-1-stschake@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id B010A6E064 for ; Sun, 25 Mar 2018 01:53:34 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r131so2754406wmb.2 for ; Sat, 24 Mar 2018 18:53:34 -0700 (PDT) In-Reply-To: <20180325015240.75464-1-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 IFN0ZWZhbiBTY2hha2UgPHN0c2NoYWtlQGdtYWlsLmNvbT4KLS0tCnYyOiBTaW1wbGlmeSBDVE0g YXRvbWljIGNoZWNrIChWaWxsZSkKCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMgfCA5 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFu Z2VkLCA5NCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMu YwppbmRleCA4ZDcxMDk4ZDAwYzQuLmJhZmIwMTAyZmUxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMu YwpAQCAtMzE1LDYgKzMxNSw3OSBAQCB2YzRfY3J0Y191cGRhdGVfZ2FtbWFfbHV0KHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAl2YzRfY3J0Y19sdXRfbG9hZChjcnRjKTsKIH0KIAorLyogQ29udmVy dHMgYSBEUk0gUzMxLjMyIHZhbHVlIHRvIHRoZSBIVyBTMC45IGZvcm1hdC4gKi8KK3N0YXRpYyB1 MTYgdmM0X2NydGNfczMxXzMyX3RvX3MwXzkodTY0IGluKQoreworCXUxNiByOworCisJLyogU2ln biBiaXQuICovCisJciA9IGluICYgQklUX1VMTCg2MykgPyBCSVQoOSkgOiAwOworCS8qIFdlIGhh dmUgemVybyBpbnRlZ2VyIGJpdHMgc28gd2UgY2FuIG9ubHkgc2F0dXJhdGUgaGVyZS4gKi8KKwlp ZiAoKGluICYgR0VOTUFTS19VTEwoNjIsIDMyKSkgPiAwKQorCQlyIHw9IEdFTk1BU0soOCwgMCk7 CisJLyogT3RoZXJ3aXNlIHRha2UgdGhlIDkgbW9zdCBpbXBvcnRhbnQgZnJhY3Rpb25hbCBiaXRz LiAqLworCWVsc2UKKwkJciB8PSAoaW4gPj4gMjIpICYgR0VOTUFTSyg4LCAwKTsKKwlyZXR1cm4g cjsKK30KKworc3RhdGljIHZvaWQKK3ZjNF9jcnRjX3VwZGF0ZV9jdG0oc3RydWN0IGRybV9jcnRj ICpjcnRjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0 IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKKwlzdHJ1Y3QgdmM0X2NydGMgKnZjNF9j cnRjID0gdG9fdmM0X2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNy dGMtPnN0YXRlLT5jdG0tPmRhdGE7CisKKwlIVlNfV1JJVEUoU0NBTEVSX09MRURDT0VGMiwKKwkJ ICBWQzRfU0VUX0ZJRUxEKHZjNF9jcnRjX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4WzBdKSwK KwkJCQlTQ0FMRVJfT0xFRENPRUYyX1JfVE9fUikgfAorCQkgIFZDNF9TRVRfRklFTEQodmM0X2Ny dGNfczMxXzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbM10pLAorCQkJCVNDQUxFUl9PTEVEQ09FRjJf Ul9UT19HKSB8CisJCSAgVkM0X1NFVF9GSUVMRCh2YzRfY3J0Y19zMzFfMzJfdG9fczBfOShjdG0t Pm1hdHJpeFs2XSksCisJCQkJU0NBTEVSX09MRURDT0VGMl9SX1RPX0IpKTsKKwlIVlNfV1JJVEUo U0NBTEVSX09MRURDT0VGMSwKKwkJICBWQzRfU0VUX0ZJRUxEKHZjNF9jcnRjX3MzMV8zMl90b19z MF85KGN0bS0+bWF0cml4WzFdKSwKKwkJCQlTQ0FMRVJfT0xFRENPRUYxX0dfVE9fUikgfAorCQkg IFZDNF9TRVRfRklFTEQodmM0X2NydGNfczMxXzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbNF0pLAor CQkJCVNDQUxFUl9PTEVEQ09FRjFfR19UT19HKSB8CisJCSAgVkM0X1NFVF9GSUVMRCh2YzRfY3J0 Y19zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJpeFs3XSksCisJCQkJU0NBTEVSX09MRURDT0VGMV9H X1RPX0IpKTsKKwlIVlNfV1JJVEUoU0NBTEVSX09MRURDT0VGMCwKKwkJICBWQzRfU0VUX0ZJRUxE KHZjNF9jcnRjX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4WzJdKSwKKwkJCQlTQ0FMRVJfT0xF RENPRUYwX0JfVE9fUikgfAorCQkgIFZDNF9TRVRfRklFTEQodmM0X2NydGNfczMxXzMyX3RvX3Mw XzkoY3RtLT5tYXRyaXhbNV0pLAorCQkJCVNDQUxFUl9PTEVEQ09FRjBfQl9UT19HKSB8CisJCSAg VkM0X1NFVF9GSUVMRCh2YzRfY3J0Y19zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJpeFs4XSksCisJ CQkJU0NBTEVSX09MRURDT0VGMF9CX1RPX0IpKTsKKworCS8qIENoYW5uZWwgaXMgMC1iYXNlZCBi dXQgZm9yIERJU1BGSUZPLCAwIG1lYW5zIGRpc2FibGVkLiAqLworCUhWU19XUklURShTQ0FMRVJf T0xFRE9GRlMsIFZDNF9TRVRfRklFTEQodmM0X2NydGMtPmNoYW5uZWwgKyAxLAorCQkJCQkJIFND QUxFUl9PTEVET0ZGU19ESVNQRklGTykpOworfQorCisvKiBDaGVjayBpZiB0aGUgQ1RNIGNvbnRh aW5zIHZhbGlkIGlucHV0LgorICoKKyAqIERSTSBleHBvc2VzIENUTSB3aXRoIFMzMS4zMiBzY2Fs YXJzLCBidXQgdGhlIEhXIG9ubHkgc3VwcG9ydHMgUzAuOS4KKyAqIFdlIGRvbid0IGFsbG93IGlu dGVnZXIgdmFsdWVzID4xLCBhbmQgMSBvbmx5IHdpdGhvdXQgZnJhY3Rpb25hbCBwYXJ0CisgKiB0 byBoYW5kbGUgdGhlIGNvbW1vbiAxLjAgdmFsdWUuCisgKi8KK3N0YXRpYyBpbnQgdmM0X2NydGNf YXRvbWljX2NoZWNrX2N0bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVj dCBkcm1fY29sb3JfY3RtICpjdG0gPSBzdGF0ZS0+Y3RtLT5kYXRhOworCXUzMiBpOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3RtLT5tYXRyaXgpOyBpKyspIHsKKwkJdTY0IHZhbCA9 IGN0bS0+bWF0cml4W2ldOworCisJCXZhbCAmPSB+QklUX1VMTCg2Myk7CisJCWlmICh2YWwgPiBC SVRfVUxMKDMyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCiBz dGF0aWMgdTMyIHZjNF9nZXRfZmlmb19mdWxsX2xldmVsKHUzMiBmb3JtYXQpCiB7CiAJc3RhdGlj IGNvbnN0IHUzMiBmaWZvX2xlbl9ieXRlcyA9IDY0OwpAQCAtNjIxLDYgKzY5NCwxNSBAQCBzdGF0 aWMgaW50IHZjNF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYg KGh3ZWlnaHQzMihzdGF0ZS0+Y29ubmVjdG9yX21hc2spID4gMSkKIAkJcmV0dXJuIC1FSU5WQUw7 CiAKKwlpZiAoc3RhdGUtPmN0bSkgeworCQkvKiBUaGUgQ1RNIGhhcmR3YXJlIGhhcyBubyBpbnRl Z2VyIGJpdHMsIHNvIHdlIGNoZWNrCisJCSAqIGFuZCByZWplY3Qgc2NhbGFycyA+MS4wIHRoYXQg d2UgaGF2ZSBubyBjaGFuY2Ugb2YKKwkJICogYXBwcm94aW1hdGluZy4KKwkJICovCisJCWlmICh2 YzRfY3J0Y19hdG9taWNfY2hlY2tfY3RtKHN0YXRlKSkKKwkJCXJldHVybiAtRUlOVkFMOworCX0K KwogCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFuZSwgcGxh bmVfc3RhdGUsIHN0YXRlKQogCQlkbGlzdF9jb3VudCArPSB2YzRfcGxhbmVfZGxpc3Rfc2l6ZShw bGFuZV9zdGF0ZSk7CiAKQEAgLTY5Nyw4ICs3NzksMTcgQEAgc3RhdGljIHZvaWQgdmM0X2NydGNf YXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoY3J0Yy0+c3RhdGUtPmFj dGl2ZSAmJiBvbGRfc3RhdGUtPmFjdGl2ZSkKIAkJdmM0X2NydGNfdXBkYXRlX2RsaXN0KGNydGMp OwogCi0JaWYgKGNydGMtPnN0YXRlLT5jb2xvcl9tZ210X2NoYW5nZWQgJiYgY3J0Yy0+c3RhdGUt PmdhbW1hX2x1dCkKLQkJdmM0X2NydGNfdXBkYXRlX2dhbW1hX2x1dChjcnRjKTsKKwlpZiAoY3J0 Yy0+c3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgeworCQlpZiAoY3J0Yy0+c3RhdGUtPmdhbW1h X2x1dCkKKwkJCXZjNF9jcnRjX3VwZGF0ZV9nYW1tYV9sdXQoY3J0Yyk7CisKKwkJaWYgKGNydGMt PnN0YXRlLT5jdG0pCisJCQl2YzRfY3J0Y191cGRhdGVfY3RtKGNydGMpOworCQkvKiBXZSBhcmUg dHJhbnNpdGlvbmluZyB0byBDVE0gZGlzYWJsZWQuICovCisJCWVsc2UgaWYgKG9sZF9zdGF0ZS0+ Y3RtKQorCQkJSFZTX1dSSVRFKFNDQUxFUl9PTEVET0ZGUywKKwkJCQkgIFZDNF9TRVRfRklFTEQo MCwgU0NBTEVSX09MRURPRkZTX0RJU1BGSUZPKSk7CisJfQogCiAJaWYgKGRlYnVnX2R1bXBfcmVn cykgewogCQlEUk1fSU5GTygiQ1JUQyAlZCBIVlMgYWZ0ZXI6XG4iLCBkcm1fY3J0Y19pbmRleChj cnRjKSk7CkBAIC0xMDM2LDcgKzExMjcsNyBAQCBzdGF0aWMgaW50IHZjNF9jcnRjX2JpbmQoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJcHJp bWFyeV9wbGFuZS0+Y3J0YyA9IGNydGM7CiAJdmM0X2NydGMtPmNoYW5uZWwgPSB2YzRfY3J0Yy0+ ZGF0YS0+aHZzX2NoYW5uZWw7CiAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShjcnRjLCBB UlJBWV9TSVpFKHZjNF9jcnRjLT5sdXRfcikpOwotCWRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210 KGNydGMsIDAsIGZhbHNlLCBjcnRjLT5nYW1tYV9zaXplKTsKKwlkcm1fY3J0Y19lbmFibGVfY29s b3JfbWdtdChjcnRjLCAwLCB0cnVlLCBjcnRjLT5nYW1tYV9zaXplKTsKIAogCS8qIFNldCB1cCBz b21lIGFyYml0cmFyeSBudW1iZXIgb2YgcGxhbmVzLiAgV2UncmUgbm90IGxpbWl0ZWQKIAkgKiBi eSBhIHNldCBudW1iZXIgb2YgcGh5c2ljYWwgcmVnaXN0ZXJzLCBqdXN0IHRoZSBzcGFjZSBpbgot LSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK