From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18EB16E4E3 for ; Wed, 23 May 2018 18:31:25 +0000 (UTC) From: Ville Syrjala Date: Wed, 23 May 2018 21:31:07 +0300 Message-Id: <20180523183110.1975-5-ville.syrjala@linux.intel.com> In-Reply-To: <20180523183110.1975-1-ville.syrjala@linux.intel.com> References: <20180523183110.1975-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 5/8] lib: Add support for rendering into packed YCbCr framebuffers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClJl dXNlIHRoZSBfX2NvbnZlcnQoKSBjYWlybyBzdHVmZiB0byBzdXBwb3J0IHBhY2tlZCBZQ2JDciBm cmFtZWJ1ZmZlcnMuCgp2MjogQWxsb3cgb2RkIGZiIHdpZHRoIHNpbmNlIHNvbWUgdGVzdHMgd2Fu dCBpdAp2MzogVXNlIGlndF9tZW1jcHlfZnJvbV93YygpCnY0OiBSZWJhc2UgZHVlIHRvIGNvbG9y X2VuY29kaW5nL3JhbmdlIGVudW1zCnY1OiBGb2xsb3cgdGhlIGZpeGVkIG52MTIgY29kZQp2Njog VXNlIGlndF9mb3JtYXRfaXNfeXV2KCkKClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2lndF9mYi5jIHwgMTkwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t CiAxIGZpbGUgY2hhbmdlZCwgMTgwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCBjZWFhZWE3MGY2NGIu LjcwYmI0MzVjNWViMCAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBiL2xpYi9pZ3RfZmIu YwpAQCAtODcsNiArODcsMjIgQEAgc3RhdGljIHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewog CSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0LAogCSAgLm51bV9wbGFuZXMgPSAyLCAu cGxhbmVfYnBwID0geyA4LCAxNiwgfSwKIAl9LAorCXsgLm5hbWUgPSAiWVVZViIsIC5kZXB0aCA9 IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZVVlWLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9S TUFUX1JHQjI0LAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAxNiwgfSwKKwl9 LAorCXsgLm5hbWUgPSAiWVZZVSIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9Z VllVLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0LAorCSAgLm51bV9wbGFuZXMg PSAxLCAucGxhbmVfYnBwID0geyAxNiwgfSwKKwl9LAorCXsgLm5hbWUgPSAiVVlWWSIsIC5kZXB0 aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9VWVZZLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9f Rk9STUFUX1JHQjI0LAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAxNiwgfSwK Kwl9LAorCXsgLm5hbWUgPSAiVllVWSIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1B VF9WWVVZLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0LAorCSAgLm51bV9wbGFu ZXMgPSAxLCAucGxhbmVfYnBwID0geyAxNiwgfSwKKwl9LAogfTsKICNkZWZpbmUgZm9yX2VhY2hf Zm9ybWF0KGYpCVwKIAlmb3IgKGYgPSBmb3JtYXRfZGVzYzsgZiAtIGZvcm1hdF9kZXNjIDwgQVJS QVlfU0laRShmb3JtYXRfZGVzYyk7IGYrKykKQEAgLTE1ODgsMTYgKzE2MDQsMTU5IEBAIHN0YXRp YyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZi X2NvbnZlcnRfYmxpdF91cGxvCiAJfQogfQogCisvKiB7IFkwLCBVLCBZMSwgViB9ICovCitzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzd2l6emxlX3l1eXZbXSA9IHsgMCwgMSwgMiwgMyB9Owor c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3dpenpsZV95dnl1W10gPSB7IDAsIDMsIDIsIDEg fTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN3aXp6bGVfdXl2eVtdID0geyAxLCAwLCAz LCAyIH07CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzd2l6emxlX3Z5dXlbXSA9IHsgMSwg MiwgMywgMCB9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqeXV5dl9zd2l6emxlKHVp bnQzMl90IGZvcm1hdCkKK3sKKwlzd2l0Y2ggKGZvcm1hdCkgeworCWRlZmF1bHQ6CisJY2FzZSBE Uk1fRk9STUFUX1lVWVY6CisJCXJldHVybiBzd2l6emxlX3l1eXY7CisJY2FzZSBEUk1fRk9STUFU X1lWWVU6CisJCXJldHVybiBzd2l6emxlX3l2eXU7CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJ CXJldHVybiBzd2l6emxlX3V5dnk7CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJCXJldHVybiBz d2l6emxlX3Z5dXk7CisJfQorfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0X3l1eXZfdG9fcmdiMjQo c3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0LAor CQkJCSAgY29uc3QgdW5zaWduZWQgY2hhciBzd3pbNF0pCit7CisJaW50IGksIGo7CisJY29uc3Qg dWludDhfdCAqeXV5djsKKwl1aW50OF90ICpyZ2IyNCA9IGJsaXQtPnJnYjI0Lm1hcDsKKwl1bnNp Z25lZCByZ2IyNF9zdHJpZGUgPSBibGl0LT5yZ2IyNC5zdHJpZGUsIHl1eXZfc3RyaWRlID0gYmxp dC0+bGluZWFyLnN0cmlkZTsKKwl1aW50OF90ICpidWYgPSBtYWxsb2MoYmxpdC0+bGluZWFyLnNp emUpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoSUdUX0NP TE9SX1lDQkNSX0JUNjAxLAorCQkJCQkJICAgIElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdF KTsKKworCS8qCisJICogUmVhZGluZyBmcm9tIHRoZSBCTyBpcyBhd2Z1bGx5IHNsb3cgYmVjYXVz ZSBvZiBsYWNrIG9mIHJlYWQgY2FjaGluZywKKwkgKiBpdCdzIGZhc3RlciB0byBjb3B5IHRoZSB3 aG9sZSBCTyB0byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGNvbnZlcnQKKwkgKiBmcm9tIHRoZXJl LgorCSAqLworCWlndF9tZW1jcHlfZnJvbV93YyhidWYsIGJsaXQtPmxpbmVhci5tYXAsIGJsaXQt PmxpbmVhci5zaXplKTsKKwl5dXl2ID0gYnVmOworCisJZm9yIChpID0gMDsgaSA8IGZiLT5oZWln aHQ7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgZmItPndpZHRoIC8gMjsgaisrKSB7CisJCQkv KiBDb252ZXJ0IDJ4MSBwaXhlbCBibG9ja3MgKi8KKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXZbMl07 CisJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzJdOworCisJCQl5dXZbMF0uZFswXSA9IHl1eXZbaiAq IDQgKyBzd3pbMF1dOworCQkJeXV2WzFdLmRbMF0gPSB5dXl2W2ogKiA0ICsgc3d6WzJdXTsKKwkJ CXl1dlswXS5kWzFdID0geXV2WzFdLmRbMV0gPSB5dXl2W2ogKiA0ICsgc3d6WzFdXTsKKwkJCXl1 dlswXS5kWzJdID0geXV2WzFdLmRbMl0gPSB5dXl2W2ogKiA0ICsgc3d6WzNdXTsKKwkJCXl1dlsw XS5kWzNdID0geXV2WzFdLmRbM10gPSAxLjBmOworCisJCQlyZ2JbMF0gPSBpZ3RfbWF0cml4X3Ry YW5zZm9ybSgmbSwgJnl1dlswXSk7CisJCQlyZ2JbMV0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgm bSwgJnl1dlsxXSk7CisKKwkJCXdyaXRlX3JnYigmcmdiMjRbaiAqIDggKyAwXSwgJnJnYlswXSk7 CisJCQl3cml0ZV9yZ2IoJnJnYjI0W2ogKiA4ICsgNF0sICZyZ2JbMV0pOworCQl9CisKKwkJaWYg KGZiLT53aWR0aCAmIDEpIHsKKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7CisJCQlzdHJ1Y3QgaWd0 X3ZlYzQgcmdiOworCisJCQl5dXYuZFswXSA9IHl1eXZbaiAqIDQgKyBzd3pbMF1dOworCQkJeXV2 LmRbMV0gPSB5dXl2W2ogKiA0ICsgc3d6WzFdXTsKKwkJCXl1di5kWzJdID0geXV5dltqICogNCAr IHN3elszXV07CisJCQl5dXYuZFszXSA9IDEuMGY7CisKKwkJCXJnYiA9IGlndF9tYXRyaXhfdHJh bnNmb3JtKCZtLCAmeXV2KTsKKworCQkJd3JpdGVfcmdiKCZyZ2IyNFtqICogOCArIDBdLCAmcmdi KTsKKwkJfQorCisJCXJnYjI0ICs9IHJnYjI0X3N0cmlkZTsKKwkJeXV5diArPSB5dXl2X3N0cmlk ZTsKKwl9CisKKwlmcmVlKGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9f eXV5dihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJs aXQsCisJCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyIHN3els0XSkKK3sKKwlpbnQgaSwgajsKKwl1 aW50OF90ICp5dXl2ID0gYmxpdC0+bGluZWFyLm1hcDsKKwljb25zdCB1aW50OF90ICpyZ2IyNCA9 IGJsaXQtPnJnYjI0Lm1hcDsKKwl1bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBibGl0LT5yZ2IyNC5z dHJpZGU7CisJdW5zaWduZWQgeXV5dl9zdHJpZGUgPSBibGl0LT5saW5lYXIuc3RyaWRlOworCXN0 cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoSUdUX0NPTE9SX1lDQkNS X0JUNjAxLAorCQkJCQkJICAgIElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsKKworCWln dF9hc3NlcnRfZihmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1lVWVYgfHwKKwkJICAgICBm Yi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1lWWVUgfHwKKwkJICAgICBmYi0+ZHJtX2Zvcm1h dCA9PSBEUk1fRk9STUFUX1VZVlkgfHwKKwkJICAgICBmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9S TUFUX1ZZVVksCisJCSAgICAgIkNvbnZlcnNpb24gbm90IGltcGxlbWVudGVkIGZvciAhWVVZViBw bGFuYXIgZm9ybWF0c1xuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgZmItPmhlaWdodDsgaSsrKSB7 CisJCWZvciAoaiA9IDA7IGogPCBmYi0+d2lkdGggLyAyOyBqKyspIHsKKwkJCS8qIENvbnZlcnQg MngxIHBpeGVsIGJsb2NrcyAqLworCQkJc3RydWN0IGlndF92ZWM0IHJnYlsyXTsKKwkJCXN0cnVj dCBpZ3RfdmVjNCB5dXZbMl07CisKKwkJCXJlYWRfcmdiKCZyZ2JbMF0sICZyZ2IyNFtqICogOCAr IDBdKTsKKwkJCXJlYWRfcmdiKCZyZ2JbMV0sICZyZ2IyNFtqICogOCArIDRdKTsKKworCQkJeXV2 WzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMF0pOworCQkJeXV2WzFdID0gaWd0 X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMV0pOworCisJCQl5dXl2W2ogKiA0ICsgc3d6WzBd XSA9IHl1dlswXS5kWzBdOworCQkJeXV5dltqICogNCArIHN3elsyXV0gPSB5dXZbMV0uZFswXTsK KwkJCXl1eXZbaiAqIDQgKyBzd3pbMV1dID0gKHl1dlswXS5kWzFdICsgeXV2WzFdLmRbMV0pIC8g Mi4wZjsKKwkJCXl1eXZbaiAqIDQgKyBzd3pbM11dID0gKHl1dlswXS5kWzJdICsgeXV2WzFdLmRb Ml0pIC8gMi4wZjsKKwkJfQorCisJCWlmIChmYi0+d2lkdGggJiAxKSB7CisJCQlzdHJ1Y3QgaWd0 X3ZlYzQgcmdiOworCQkJc3RydWN0IGlndF92ZWM0IHl1djsKKworCQkJcmVhZF9yZ2IoJnJnYiwg JnJnYjI0W2ogKiA4ICsgMF0pOworCisJCQl5dXYgPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwg JnJnYik7CisKKwkJCXl1eXZbaiAqIDQgKyBzd3pbMF1dID0geXV2LmRbMF07CisJCQl5dXl2W2og KiA0ICsgc3d6WzFdXSA9IHl1di5kWzFdOworCQkJeXV5dltqICogNCArIHN3elszXV0gPSB5dXYu ZFsyXTsKKwkJfQorCisJCXJnYjI0ICs9IHJnYjI0X3N0cmlkZTsKKwkJeXV5diArPSB5dXl2X3N0 cmlkZTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fY29udmVy dCh2b2lkICphcmcpCiB7CiAJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBh cmc7CiAJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5mYjsKIAotCS8qIENvbnZlcnQgYmFjayB0 byBwbGFuYXIhICovCi0JaWd0X2Fzc2VydF9mKGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRf TlYxMiwKLQkJICAgICAiQ29udmVyc2lvbiBub3QgaW1wbGVtZW50ZWQgZm9yICFOVjEyIHBsYW5h ciBmb3JtYXRzXG4iKTsKLQotCWNvbnZlcnRfcmdiMjRfdG9fbnYxMihmYiwgYmxpdCk7CisJLyog Q29udmVydCBsaW5lYXIgcmdiIGJhY2shICovCisJc3dpdGNoKGZiLT5kcm1fZm9ybWF0KSB7CisJ Y2FzZSBEUk1fRk9STUFUX05WMTI6CisJCWNvbnZlcnRfcmdiMjRfdG9fbnYxMihmYiwgYmxpdCk7 CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllV OgorCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQljb252 ZXJ0X3JnYjI0X3RvX3l1eXYoZmIsIGJsaXQsIHl1eXZfc3dpenpsZShmYi0+ZHJtX2Zvcm1hdCkp OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfYXNzZXJ0X2YoZmFsc2UsICJDb252ZXJzaW9u IG5vdCBpbXBsZW1lbnRlZCBmb3IgZm9ybWF0cyAweCV4XG4iLAorCQkJICAgICBmYi0+ZHJtX2Zv cm1hdCk7CisJfQogCiAJbXVubWFwKGJsaXQtPnJnYjI0Lm1hcCwgYmxpdC0+cmdiMjQuc2l6ZSk7 CiAKQEAgLTE2MzYsMTAgKzE3OTUsMjEgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZh Y2VfX2NvbnZlcnQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJbWVtY3B5KGJsaXQtPmxp bmVhci5vZmZzZXRzLCBmYi0+b2Zmc2V0cywgc2l6ZW9mKGZiLT5vZmZzZXRzKSk7CiAJfQogCi0J LyogQ29udmVydCB0byBsaW5lYXIhICovCi0JaWd0X2Fzc2VydF9mKGZiLT5kcm1fZm9ybWF0ID09 IERSTV9GT1JNQVRfTlYxMiwKLQkJICAgICAiQ29udmVyc2lvbiBub3QgaW1wbGVtZW50ZWQgZm9y ICFOVjEyIHBsYW5hciBmb3JtYXRzXG4iKTsKLQljb252ZXJ0X252MTJfdG9fcmdiMjQoZmIsIGJs aXQpOworCS8qIENvbnZlcnQgdG8gbGluZWFyIHJnYiEgKi8KKwlzd2l0Y2goZmItPmRybV9mb3Jt YXQpIHsKKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwkJY29udmVydF9udjEyX3RvX3JnYjI0KGZi LCBibGl0KTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1lVWVY6CisJY2FzZSBEUk1fRk9S TUFUX1lWWVU6CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6 CisJCWNvbnZlcnRfeXV5dl90b19yZ2IyNChmYiwgYmxpdCwgeXV5dl9zd2l6emxlKGZiLT5kcm1f Zm9ybWF0KSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnRfZihmYWxzZSwgIkNv bnZlcnNpb24gbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXRzIDB4JXhcbiIsCisJCQkgICAgIGZi LT5kcm1fZm9ybWF0KTsKKwl9CiAKIAlmYi0+Y2Fpcm9fc3VyZmFjZSA9CiAJCWNhaXJvX2ltYWdl X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJsaXQtPnJnYjI0Lm1hcCwKQEAgLTE2NjYsNyArMTgz Niw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwg c3RydWN0IGlndF9mYiAqZmIpCiBjYWlyb19zdXJmYWNlX3QgKmlndF9nZXRfY2Fpcm9fc3VyZmFj ZShpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogewogCWlmIChmYi0+Y2Fpcm9fc3VyZmFjZSA9 PSBOVUxMKSB7Ci0JCWlmIChmYi0+bnVtX3BsYW5lcyA+IDEpCisJCWlmIChpZ3RfZm9ybWF0X2lz X3l1dihmYi0+ZHJtX2Zvcm1hdCkpCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChm ZCwgZmIpOwogCQllbHNlIGlmIChmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9Z X1RJTEVEIHx8CiAJCSAgICBmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9U SUxFRCkKLS0gCjIuMTYuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2 Cg==