From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 601696E051 for ; Wed, 6 Mar 2019 02:18:39 +0000 (UTC) From: Kevin Strasser Date: Tue, 5 Mar 2019 18:18:36 -0800 Message-Id: <1551838717-5283-5-git-send-email-kevin.strasser@intel.com> In-Reply-To: <1551838717-5283-1-git-send-email-kevin.strasser@intel.com> References: <1551838717-5283-1-git-send-email-kevin.strasser@intel.com> Subject: [igt-dev] [RFC v2 4/5] lib/igt_fb: Add support for fp16 formats through conversion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 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: Rm9sbG93IGRlc2lnbiBvZiBQMDF4IGNvbnZlcnNpb24gdG8gc3VwcG9ydCB0ZXN0cyBuZWVkaW5n IHBpeGVsIGRhdGEgaW4gZnAxNgooaGFsZiBmbG9hdCA2NCBicHApLgoKcmZjMjoKLSBDb252ZXJ0 IHdob2xlIHJvd3Mgb2YgcGl4ZWxzIGlmIHBvc3NpYmxlIChNYWFydGVuKQotIFRyZWF0IHJnYngg bGlrZSByZ2JhLCBsZXQgaGFyZHdhcmUgaWdub3JlIGFscGhhIChNYWFydGVuKQoKU2lnbmVkLW9m Zi1ieTogS2V2aW4gU3RyYXNzZXIgPGtldmluLnN0cmFzc2VyQGludGVsLmNvbT4KLS0tCiBsaWIv aWd0X2ZiLmMgfCAxNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIGxpYi9pZ3RfZmIuaCB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQs IDE0OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9m Yi5jIGIvbGliL2lndF9mYi5jCmluZGV4IDlkY2EyYTQuLjQ1MWIyYzIgMTAwNjQ0Ci0tLSBhL2xp Yi9pZ3RfZmIuYworKysgYi9saWIvaWd0X2ZiLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl ICJpZ3RfYXV4LmgiCiAjaW5jbHVkZSAiaWd0X2NvbG9yX2VuY29kaW5nLmgiCiAjaW5jbHVkZSAi aWd0X2ZiLmgiCisjaW5jbHVkZSAiaWd0X2hhbGZmbG9hdC5oIgogI2luY2x1ZGUgImlndF9rbXMu aCIKICNpbmNsdWRlICJpZ3RfbWF0cml4LmgiCiAjaW5jbHVkZSAiaWd0X3ZjNC5oIgpAQCAtMTYx LDYgKzE2MiwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAJ ICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDMyLCB9LAogCSAgLmhzdWIgPSAxLCAu dnN1YiA9IDEsCiAJfSwKKwl7IC5uYW1lID0gIlhSR0IxNjE2MTYxNkYiLCAuZGVwdGggPSAtMSwg LmRybV9pZCA9IERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2RiwKKwkgIC5jYWlyb19pZCA9IENBSVJP X0ZPUk1BVF9SR0JBMTI4RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQs IH0sCisJfSwKKwl7IC5uYW1lID0gIkFSR0IxNjE2MTYxNkYiLCAuZGVwdGggPSAtMSwgLmRybV9p ZCA9IERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2RiwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1B VF9SR0JBMTI4RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQsIH0sCisJ fSwKKwl7IC5uYW1lID0gIlhCR1IxNjE2MTYxNkYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERS TV9GT1JNQVRfWEJHUjE2MTYxNjE2RiwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0JB MTI4RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQsIH0sCisJfSwKKwl7 IC5uYW1lID0gIkFCR1IxNjE2MTYxNkYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JN QVRfQUJHUjE2MTYxNjE2RiwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0JBMTI4RiwK KwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQsIH0sCisJfSwKIAl7IC5uYW1l ID0gIk5WMTIiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfTlYxMiwKIAkgIC5j YWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0IyNCwKIAkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5l X2JwcCA9IHsgOCwgMTYsIH0sCkBAIC02NjEsNyArNjc4LDggQEAgc3RhdGljIGludCBjcmVhdGVf Ym9fZm9yX2ZiKHN0cnVjdCBpZ3RfZmIgKmZiKQogCSAqIHRoZW0sIHNvIHdlIG5lZWQgdG8gbWFr ZSBzdXJlIHRvIHVzZSBhIGRldmljZSBCTyB0aGVuLgogCSAqLwogCWlmIChmYi0+dGlsaW5nIHx8 IGZiLT5zaXplIHx8IGZiLT5zdHJpZGVzWzBdIHx8Ci0JICAgIChpc19pOTE1X2RldmljZShmZCkg JiYgaWd0X2Zvcm1hdF9pc195dXYoZmItPmRybV9mb3JtYXQpKSkKKwkgICAgKGlzX2k5MTVfZGV2 aWNlKGZkKSAmJiBpZ3RfZm9ybWF0X2lzX3l1dihmYi0+ZHJtX2Zvcm1hdCkpIHx8CisJICAgIChp c19pOTE1X2RldmljZShmZCkgJiYgaWd0X2Zvcm1hdF9pc19mcDE2KGZiLT5kcm1fZm9ybWF0KSkp CiAJCWRldmljZV9ibyA9IHRydWU7CiAKIAkvKiBTZXRzIG9mZmV0cyBhbmQgc3RyaWRlIGlmIG5l Y2Vzc2FyeS4gKi8KQEAgLTIyMDIsNiArMjIyMCwxMDIgQEAgc3RhdGljIHZvaWQgY29udmVydF9m bG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCX0KIH0KIAorLyogeyBSLCBH LCBCLCBYIH0gKi8KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN3aXp6bGVfcmdieFtdID0g eyAwLCAxLCAyLCAzIH07CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzd2l6emxlX2Jncnhb XSA9IHsgMiwgMSwgMCwgMyB9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqcmdieF9z d2l6emxlKHVpbnQzMl90IGZvcm1hdCkKK3sKKwlzd2l0Y2ggKGZvcm1hdCkgeworCWRlZmF1bHQ6 CisJY2FzZSBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkY6CisJY2FzZSBEUk1fRk9STUFUX0FSR0Ix NjE2MTYxNkY6CisJCXJldHVybiBzd2l6emxlX2Jncng7CisJY2FzZSBEUk1fRk9STUFUX1hCR1Ix NjE2MTYxNkY6CisJY2FzZSBEUk1fRk9STUFUX0FCR1IxNjE2MTYxNkY6CisJCXJldHVybiBzd2l6 emxlX3JnYng7CisJfQorfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0X2ZwMTZfdG9fZmxvYXQoc3Ry dWN0IGZiX2NvbnZlcnQgKmN2dCkKK3sKKwlpbnQgaSwgajsKKwl1aW50MTZfdCAqZnAxNjsKKwlm bG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyOworCXVuc2lnbmVkIGludCBmbG9hdF9zdHJpZGUgPSBj dnQtPmRzdC5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKKwl1bnNpZ25lZCBpbnQgZnAx Nl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqZnAxNik7CisJY29u c3QgdW5zaWduZWQgY2hhciAqc3d6ID0gcmdieF9zd2l6emxlKGN2dC0+c3JjLmZiLT5kcm1fZm9y bWF0KTsKKwlib29sIG5lZWRzX3Jlc3dpenpsZSA9IHN3eiAhPSBzd2l6emxlX3JnYng7CisKKwl1 aW50MTZfdCAqYnVmID0gY29udmVydF9zcmNfZ2V0KGN2dCk7CisJZnAxNiA9IGJ1ZiArIGN2dC0+ c3JjLmZiLT5vZmZzZXRzWzBdIC8gc2l6ZW9mKCpidWYpOworCisJZm9yIChpID0gMDsgaSA8IGN2 dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQlpZiAobmVlZHNfcmVzd2l6emxlKSB7CisJCQlj b25zdCB1aW50MTZfdCAqZnAxNl90bXAgPSBmcDE2OworCQkJZmxvYXQgKnJnYl90bXAgPSBwdHI7 CisKKwkJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgeworCQkJCXN0 cnVjdCBpZ3RfdmVjNCByZ2I7CisKKwkJCQlpZ3RfaGFsZl90b19mbG9hdChmcDE2X3RtcCwgcmdi LmQsIDQpOworCisJCQkJcmdiX3RtcFswXSA9IHJnYi5kW3N3elswXV07CisJCQkJcmdiX3RtcFsx XSA9IHJnYi5kW3N3elsxXV07CisJCQkJcmdiX3RtcFsyXSA9IHJnYi5kW3N3elsyXV07CisJCQkJ cmdiX3RtcFszXSA9IHJnYi5kW3N3elszXV07CisKKwkJCQlyZ2JfdG1wICs9IDQ7CisJCQkJZnAx Nl90bXAgKz0gNDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlndF9oYWxmX3RvX2Zsb2F0KGZwMTYs IHB0ciwgY3Z0LT5kc3QuZmItPndpZHRoICogNCk7CisJCX0KKworCQlwdHIgKz0gZmxvYXRfc3Ry aWRlOworCQlmcDE2ICs9IGZwMTZfc3RyaWRlOworCX0KKworCWNvbnZlcnRfc3JjX3B1dChjdnQs IGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9fZnAxNihzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQoreworCWludCBpLCBqOworCXVpbnQxNl90ICpmcDE2ID0gY3Z0LT5kc3Qu cHRyICsgY3Z0LT5kc3QuZmItPm9mZnNldHNbMF07CisJY29uc3QgZmxvYXQgKnB0ciA9IGN2dC0+ c3JjLnB0cjsKKwl1bnNpZ25lZCBmbG9hdF9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1sw XSAvIHNpemVvZigqcHRyKTsKKwl1bnNpZ25lZCBmcDE2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5z dHJpZGVzWzBdIC8gc2l6ZW9mKCpmcDE2KTsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpzd3ogPSBy Z2J4X3N3aXp6bGUoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQpOworCWJvb2wgbmVlZHNfcmVzd2l6 emxlID0gc3d6ICE9IHN3aXp6bGVfcmdieDsKKworCWZvciAoaSA9IDA7IGkgPCBjdnQtPmRzdC5m Yi0+aGVpZ2h0OyBpKyspIHsKKwkJaWYgKG5lZWRzX3Jlc3dpenpsZSkgeworCQkJY29uc3QgZmxv YXQgKnJnYl90bXAgPSBwdHI7CisJCQl1aW50MTZfdCAqZnAxNl90bXAgPSBmcDE2OworCisJCQlm b3IgKGogPSAwOyBqIDwgY3Z0LT5kc3QuZmItPndpZHRoOyBqKyspIHsKKwkJCQlzdHJ1Y3QgaWd0 X3ZlYzQgcmdiOworCisJCQkJcmdiLmRbMF0gPSByZ2JfdG1wW3N3elswXV07CisJCQkJcmdiLmRb MV0gPSByZ2JfdG1wW3N3elsxXV07CisJCQkJcmdiLmRbMl0gPSByZ2JfdG1wW3N3elsyXV07CisJ CQkJcmdiLmRbM10gPSByZ2JfdG1wW3N3elszXV07CisKKwkJCQlpZ3RfZmxvYXRfdG9faGFsZihy Z2IuZCwgZnAxNl90bXAsIDQpOworCisJCQkJcmdiX3RtcCArPSA0OworCQkJCWZwMTZfdG1wICs9 IDQ7CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZ3RfZmxvYXRfdG9faGFsZihwdHIsIGZwMTYsIGN2 dC0+ZHN0LmZiLT53aWR0aCAqIDQpOworCQl9CisKKwkJcHRyICs9IGZsb2F0X3N0cmlkZTsKKwkJ ZnAxNiArPSBmcDE2X3N0cmlkZTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGNvbnZlcnRfcGl4bWFu KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiB7CiAJcGl4bWFuX2Zvcm1hdF9jb2RlX3Qgc3JjX3Bp eG1hbiA9IGRybV9mb3JtYXRfdG9fcGl4bWFuKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0KTsKQEAg LTIyOTAsNiArMjQwNCwxMiBAQCBzdGF0aWMgdm9pZCBmYl9jb252ZXJ0KHN0cnVjdCBmYl9jb252 ZXJ0ICpjdnQpCiAJCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgogCQkJY29udmVydF95dXYxNl90b19m bG9hdChjdnQpOwogCQkJcmV0dXJuOworCQljYXNlIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2RjoK KwkJY2FzZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkY6CisJCWNhc2UgRFJNX0ZPUk1BVF9BUkdC MTYxNjE2MTZGOgorCQljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2RjoKKwkJCWNvbnZlcnRf ZnAxNl90b19mbG9hdChjdnQpOworCQkJcmV0dXJuOwogCQl9CiAJfSBlbHNlIGlmIChjdnQtPnNy Yy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7CiAJCXN3aXRjaCAoY3Z0LT5k c3QuZmItPmRybV9mb3JtYXQpIHsKQEAgLTIyOTgsNiArMjQxOCwxMiBAQCBzdGF0aWMgdm9pZCBm Yl9jb252ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCWNhc2UgRFJNX0ZPUk1BVF9QMDE2 OgogCQkJY29udmVydF9mbG9hdF90b195dXYxNihjdnQpOwogCQkJcmV0dXJuOworCQljYXNlIERS TV9GT1JNQVRfWFJHQjE2MTYxNjE2RjoKKwkJY2FzZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkY6 CisJCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTYxNjE2MTZGOgorCQljYXNlIERSTV9GT1JNQVRfQUJH UjE2MTYxNjE2RjoKKwkJCWNvbnZlcnRfZmxvYXRfdG9fZnAxNihjdnQpOworCQkJcmV0dXJuOwog CQl9CiAJfQogCkBAIC0yNDUzLDYgKzI1NzksNyBAQCBjYWlyb19zdXJmYWNlX3QgKmlndF9nZXRf Y2Fpcm9fc3VyZmFjZShpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCiAJaWYgKGZiLT5jYWly b19zdXJmYWNlID09IE5VTEwpIHsKIAkJaWYgKGlndF9mb3JtYXRfaXNfeXV2KGZiLT5kcm1fZm9y bWF0KSB8fAorCQkgICAgaWd0X2Zvcm1hdF9pc19mcDE2KGZiLT5kcm1fZm9ybWF0KSB8fAogCQkg ICAgKChmLT5jYWlyb19pZCA9PSBDQUlST19GT1JNQVRfSU5WQUxJRCkgJiYKIAkJICAgICAoZi0+ cGl4bWFuX2lkICE9IFBJWE1BTl9pbnZhbGlkKSkpCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9f Y29udmVydChmZCwgZmIpOwpAQCAtMjc2Miw2ICsyODg5LDI1IEBAIGJvb2wgaWd0X2Zvcm1hdF9p c195dXYodWludDMyX3QgZHJtX2Zvcm1hdCkKIH0KIAogLyoqCisgKiBpZ3RfZm9ybWF0X2lzX2Zw MTYKKyAqIEBkcm1fZm9ybWF0OiBkcm0gZm91cmNjCisgKgorICogQ2hlY2sgaWYgdGhlIGZvcm1h dCBpcyBmcDE2LgorICovCitib29sIGlndF9mb3JtYXRfaXNfZnAxNih1aW50MzJfdCBkcm1fZm9y bWF0KQoreworCXN3aXRjaCAoZHJtX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTYx NjE2MTZGOgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTYxNjE2MTZGOgorCWNhc2UgRFJNX0ZPUk1B VF9YQkdSMTYxNjE2MTZGOgorCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMTYxNjE2MTZGOgorCQlyZXR1 cm4gdHJ1ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCisvKioKICAqIGln dF9mb3JtYXRfcGxhbmVfYnBwOgogICogQGRybV9mb3JtYXQ6IGRybSBmb3VyY2MKICAqIEBwbGFu ZTogZm9ybWF0IHBsYW5lIGluZGV4CmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0 X2ZiLmgKaW5kZXggZTFkODg1ZS4uMDdiNjgxNCAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5oCisr KyBiL2xpYi9pZ3RfZmIuaApAQCAtMTgyLDYgKzE4Miw3IEBAIHVpbnQzMl90IGlndF9kcm1fZm9y bWF0X3RvX2JwcCh1aW50MzJfdCBkcm1fZm9ybWF0KTsKIGNvbnN0IGNoYXIgKmlndF9mb3JtYXRf c3RyKHVpbnQzMl90IGRybV9mb3JtYXQpOwogYm9vbCBpZ3RfZmJfc3VwcG9ydGVkX2Zvcm1hdCh1 aW50MzJfdCBkcm1fZm9ybWF0KTsKIGJvb2wgaWd0X2Zvcm1hdF9pc195dXYodWludDMyX3QgZHJt X2Zvcm1hdCk7Citib29sIGlndF9mb3JtYXRfaXNfZnAxNih1aW50MzJfdCBkcm1fZm9ybWF0KTsK IGludCBpZ3RfZm9ybWF0X3BsYW5lX2JwcCh1aW50MzJfdCBkcm1fZm9ybWF0LCBpbnQgcGxhbmUp Owogdm9pZCBpZ3RfZm9ybWF0X2FycmF5X2ZpbGwodWludDMyX3QgKipmb3JtYXRzX2FycmF5LCB1 bnNpZ25lZCBpbnQgKmNvdW50LAogCQkJICAgYm9vbCBhbGxvd195dXYpOwotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFp bGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==