X.org on Amiga, 16 color mode
Jukka Andberg <[email protected]> Thu, 29 Feb 2024 21:03:09 +0200
| Newsgroups | gmane.os.netbsd.devel.x11,gmane.os.netbsd.ports.amiga |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --Multipart=_Thu__29_Feb_2024_21_03_09_+0200_=7.c+vuMLC3AawII Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi all, I was looking into how to get the x.org server running with color on non-AGA Amigas. As you may remember, it is currently working with 256 colors on AGA-equipped Amigas and black/white on others. Looks like the server wants to use 8bpp memory layout for depth 4 (16 colors), defined in xf86Init.c formats array. This differs from old Xamiga which used 4bpp with depth 4. Working solution seems to be creating the shadowfb with 8bpp and depth 4, and then handling conversion from 8bpp pixels to 4 bitplanes in the shadow update function. For the conversion it needs a new shadow update function, which is pretty similar to existing shadowUpdateAfb4, just reading 8-bit input pixels instead of 4-bit pixels. Patch attached. Any thoughts? --jukka --Multipart=_Thu__29_Feb_2024_21_03_09_+0200_=7.c+vuMLC3AawII Content-Type: application/octet-stream; name="x4bpp.diff" Content-Disposition: attachment; filename="x4bpp.diff" Content-Transfer-Encoding: base64 ZGlmZiAtciBlNjFjZWJjNmE0YzkgZXh0ZXJuYWwvbWl0L3hmODYtdmlkZW8td3NmYi9kaXN0L3Ny Yy93c2ZiX2RyaXZlci5jCi0tLSBhL2V4dGVybmFsL21pdC94Zjg2LXZpZGVvLXdzZmIvZGlzdC9z cmMvd3NmYl9kcml2ZXIuYwlXZWQgRmViIDA3IDE4OjAxOjQ4IDIwMjQgKzAwMDAKKysrIGIvZXh0 ZXJuYWwvbWl0L3hmODYtdmlkZW8td3NmYi9kaXN0L3NyYy93c2ZiX2RyaXZlci5jCVdlZCBGZWIg MjggMTg6MDI6MTEgMjAyNCArMDIwMApAQCAtNTU0LDE0ICs1NTQsMjAgQEAKIAlpZiAod3N0eXBl ID09IFdTRElTUExBWV9UWVBFX0FNSUdBQ0MpIHsKIAkJLyoKIAkJICogVmlkZW8gbWVtb3J5IGlz IG9yZ2FuaXplZCBpbiBiaXRwbGFuZXMuCi0JCSAqIDhicHAgb3IgMWJwcCBzdXBwb3J0ZWQgaW4g dGhpcyBkcml2ZXIuCi0JCSAqIFdpdGggOGJwcCBjb252ZXJzaW9uIHRvIGJpdHBsYW5lIGZvcm1h dAotCQkgKiBpcyBkb25lIGluIHNoYWRvdyB1cGRhdGUgcHJvYy4KKwkJICogOGJwcCwgNGJwcCwg YW5kIDFicHAgc3VwcG9ydGVkIGluIHRoaXMgZHJpdmVyLgorCQkgKiBXaXRoIDhicHAvNGJwcCBj b252ZXJzaW9uIHRvIGJpdHBsYW5lIGZvcm1hdAorCQkgKiBpcyBkb25lIGluIHNoYWRvdyB1cGRh dGUgcHJvYy4gSW4gYm90aCBjYXNlcworCQkgKiBzaGFkb3cgZmIgdXNlcyA4YnBwIG1lbW9yeSBs YXlvdXQgYW5kIHNoYWRvdworCQkgKiB1cGRhdGUgcHJvYyBpZ25vcmVzIHRoZSBwb3NzaWJsZSBl eHRyYSBiaXRzLgogCQkgKiBXaXRoIDFicHAgbm8gY29udmVyc2lvbiBuZWVkZWQuCiAJCSAqLwog I2lmZGVmIEhBVkVfU0hBRE9XX0FGQgogCQlpZiAoYml0c3BlcnBpeGVsID09IDgpIHsKIAkJCWZQ dHItPnBsYW5hckFmYiA9IFRSVUU7CisJCX0gZWxzZSBpZiAoYml0c3BlcnBpeGVsID09IDQpIHsK KwkJCWZQdHItPnBsYW5hckFmYiA9IFRSVUU7CisJCQlkZWZhdWx0X2RlcHRoID0gNDsKKwkJCWJp dHNwZXJwaXhlbCA9IDg7CiAJCX0gZWxzZQogI2VuZGlmCiAJCXsKQEAgLTY0Myw2ICs2NDksMTYg QEAKIAkJZlB0ci0+ZmJpLmZiaV9waXhlbHR5cGUgPSBXU0ZCX1JHQjsKIAl9CiAjZW5kaWYKKyNp ZmRlZiBIQVZFX1NIQURPV19BRkIKKwlpZiAoZlB0ci0+cGxhbmFyQWZiKQorCXsKKwkJaWYgKCFm UHRyLT5zaGFkb3dGQikgeworCQkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX1dBUk5J TkcsCisJCQkJICAgIlNoYWRvdyBGQiBmb3JjZWQgb24gZm9yIHBsYW5hciBmcmFtZWJ1ZmZlclxu Iik7CisJCQlmUHRyLT5zaGFkb3dGQiA9IFRSVUU7CisJCX0KKwl9CisjZW5kaWYKIAkvKiBSb3Rh dGlvbiAqLwogCWZQdHItPnJvdGF0ZSA9IFdTRkJfUk9UQVRFX05PTkU7CiAJaWYgKChzID0geGY4 NkdldE9wdFZhbFN0cmluZyhmUHRyLT5PcHRpb25zLCBPUFRJT05fUk9UQVRFKSkpIHsKQEAgLTg5 MSw5ICs5MDcsMTIgQEAKIAkJc2hhZG93cHJvYyA9IHdzZmJVcGRhdGVSb3RhdGVQYWNrZWQ7CiAJ fSBlbHNlCiAjaWZkZWYgSEFWRV9TSEFET1dfQUZCCi0JaWYgKGZQdHItPnBsYW5hckFmYikgewor CWlmIChmUHRyLT5wbGFuYXJBZmIgJiYgZlB0ci0+ZmJpLmZiaV9iaXRzcGVycGl4ZWwgPT0gOCkg ewogCQlzaGFkb3dwcm9jID0gc2hhZG93VXBkYXRlQWZiODsKIAkJd2luZG93cHJvYyA9IFdzZmJX aW5kb3dBZmI7CisJfSBlbHNlIGlmIChmUHRyLT5wbGFuYXJBZmIgJiYgZlB0ci0+ZmJpLmZiaV9i aXRzcGVycGl4ZWwgPT0gNCkgeworCQlzaGFkb3dwcm9jID0gc2hhZG93VXBkYXRlQWZiNHg4Owor CQl3aW5kb3dwcm9jID0gV3NmYldpbmRvd0FmYjsKIAl9IGVsc2UKICNlbmRpZgogCXsKZGlmZiAt ciBlNjFjZWJjNmE0YzkgZXh0ZXJuYWwvbWl0L3hvcmctc2VydmVyL2Rpc3QvbWlleHQvc2hhZG93 L3NoYWRvdy5oCi0tLSBhL2V4dGVybmFsL21pdC94b3JnLXNlcnZlci9kaXN0L21pZXh0L3NoYWRv dy9zaGFkb3cuaAlXZWQgRmViIDA3IDE4OjAxOjQ4IDIwMjQgKzAwMDAKKysrIGIvZXh0ZXJuYWwv bWl0L3hvcmctc2VydmVyL2Rpc3QvbWlleHQvc2hhZG93L3NoYWRvdy5oCVdlZCBGZWIgMjggMTg6 MDI6MTEgMjAyNCArMDIwMApAQCAtODgsNiArODgsOSBAQAogIHNoYWRvd1VwZGF0ZUFmYjgoU2Ny ZWVuUHRyIHBTY3JlZW4sIHNoYWRvd0J1ZlB0ciBwQnVmKTsKIAogZXh0ZXJuIF9YX0VYUE9SVCB2 b2lkCisgc2hhZG93VXBkYXRlQWZiNHg4KFNjcmVlblB0ciBwU2NyZWVuLCBzaGFkb3dCdWZQdHIg cEJ1Zik7CisKK2V4dGVybiBfWF9FWFBPUlQgdm9pZAogIHNoYWRvd1VwZGF0ZUlwbGFuMnA0KFNj cmVlblB0ciBwU2NyZWVuLCBzaGFkb3dCdWZQdHIgcEJ1Zik7CiAKIGV4dGVybiBfWF9FWFBPUlQg dm9pZApkaWZmIC1yIGU2MWNlYmM2YTRjOSBleHRlcm5hbC9taXQveG9yZy1zZXJ2ZXIvZGlzdC9t aWV4dC9zaGFkb3cvc2hhZmI0LmMKLS0tIGEvZXh0ZXJuYWwvbWl0L3hvcmctc2VydmVyL2Rpc3Qv bWlleHQvc2hhZG93L3NoYWZiNC5jCVdlZCBGZWIgMDcgMTg6MDE6NDggMjAyNCArMDAwMAorKysg Yi9leHRlcm5hbC9taXQveG9yZy1zZXJ2ZXIvZGlzdC9taWV4dC9zaGFkb3cvc2hhZmI0LmMJV2Vk IEZlYiAyOCAxODowMjoxMSAyMDI0ICswMjAwCkBAIC0xMzcsMyArMTM3LDcwIEBACiAgICAgICAg IHBib3grKzsKICAgICB9CiB9CisKKyAgICAvKgorICAgICAqIExpa2UgYWJvdmUsIGV4Y2VwdCBp bnB1dCBpcyA4LWJpdCBjaHVua3kgcGl4ZWxzICh1cHBlciA0IGJpdHMgemVybykKKyAgICAgKi8K K3ZvaWQKK3NoYWRvd1VwZGF0ZUFmYjR4OChTY3JlZW5QdHIgcFNjcmVlbiwgc2hhZG93QnVmUHRy IHBCdWYpCit7CisgICAgUmVnaW9uUHRyIGRhbWFnZSA9IERhbWFnZVJlZ2lvbihwQnVmLT5wRGFt YWdlKTsKKyAgICBQaXhtYXBQdHIgcFNoYWRvdyA9IHBCdWYtPnBQaXhtYXA7CisgICAgaW50IG5i b3ggPSBSZWdpb25OdW1SZWN0cyhkYW1hZ2UpOworICAgIEJveFB0ciBwYm94ID0gUmVnaW9uUmVj dHMoZGFtYWdlKTsKKyAgICBGYkJpdHMgKnNoYUJhc2U7CisgICAgQ0FSRDMyICpzaGFMaW5lLCAq c2hhOworICAgIEZiU3RyaWRlIHNoYVN0cmlkZTsKKyAgICBpbnQgc2NyTGluZTsKKyAgICBfWF9V TlVTRUQgaW50IHNoYUJwcCwgc2hhWG9mZiwgc2hhWW9mZjsKKyAgICBpbnQgeCwgeSwgdywgaDsK KyAgICBpbnQgaSwgbjsKKyAgICBDQVJEMzIgKndpbjsKKyAgICBDQVJEMzIgb2ZmLCB3aW5TdHJp ZGU7CisgICAgQ0FSRDMyIGR3b3Jkc1s0XTsKKworICAgIGZiR2V0RHJhd2FibGUoJnBTaGFkb3ct PmRyYXdhYmxlLCBzaGFCYXNlLCBzaGFTdHJpZGUsIHNoYUJwcCwgc2hhWG9mZiwKKyAgICAgICAg ICAgICAgICAgIHNoYVlvZmYpOworICAgIGlmIChzaXplb2YoRmJCaXRzKSAhPSBzaXplb2YoQ0FS RDMyKSkKKyAgICAgICAgc2hhU3RyaWRlID0gc2hhU3RyaWRlICogc2l6ZW9mKEZiQml0cykgLyBz aXplb2YoQ0FSRDMyKTsKKworICAgIHdoaWxlIChuYm94LS0pIHsKKyAgICAgICAgeCA9IHBib3gt PngxOworICAgICAgICB5ID0gcGJveC0+eTE7CisgICAgICAgIHcgPSBwYm94LT54MiAtIHBib3gt PngxOworICAgICAgICBoID0gcGJveC0+eTIgLSBwYm94LT55MTsKKworICAgICAgICBzY3JMaW5l ID0geCAmIC0zMjsKKyAgICAgICAgc2hhTGluZSA9IChDQVJEMzIgKilzaGFCYXNlICsgeSAqIHNo YVN0cmlkZSArIHNjckxpbmUgLyBzaXplb2YoQ0FSRDMyKTsKKworICAgICAgICBvZmYgPSBzY3JM aW5lIC8gODsgICAgICAgICAgICAgIC8qIGJ5dGUgb2Zmc2V0IGluIGJpdHBsYW5lIHNjYW5saW5l ICovCisgICAgICAgIG4gPSAoKHggJiAzMSkgKyB3ICsgMzEpIC8gMzI7ICAgLyogbnVtYmVyIG9m IGMycCB1bml0cyBpbiBzY2FubGluZSAqLworCisgICAgICAgIHdoaWxlIChoLS0pIHsKKyAgICAg ICAgICAgIHNoYSA9IHNoYUxpbmU7CisgICAgICAgICAgICB3aW4gPSAoQ0FSRDMyICopICgqcEJ1 Zi0+d2luZG93KSAocFNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFE T1dfV0lORE9XX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJndpblN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBCdWYtPmNsb3N1cmUpOworICAgICAgICAgICAgaWYgKCF3aW4pCisgICAgICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAg ICAgICAgICAgICAgIGR3b3Jkc1swXSA9IChzaGFbMF0gPDwgNCkgfCBzaGFbMV07CisgICAgICAg ICAgICAgICAgZHdvcmRzWzJdID0gKHNoYVsyXSA8PCA0KSB8IHNoYVszXTsKKyAgICAgICAgICAg ICAgICBkd29yZHNbMV0gPSAoc2hhWzRdIDw8IDQpIHwgc2hhWzVdOworICAgICAgICAgICAgICAg IGR3b3Jkc1szXSA9IChzaGFbNl0gPDwgNCkgfCBzaGFbN107CisgICAgICAgICAgICAgICAgdHJh bnNwNChkd29yZHMsIDE2LCAxKTsKKyAgICAgICAgICAgICAgICB0cmFuc3A0KGR3b3JkcywgOCwg Mik7CisgICAgICAgICAgICAgICAgdHJhbnNwNChkd29yZHMsIDIsIDEpOworICAgICAgICAgICAg ICAgIHRyYW5zcDQoZHdvcmRzLCAxLCAyKTsKKyAgICAgICAgICAgICAgICBzdG9yZV9hZmI0KHdp bisrLCB3aW5TdHJpZGUsIGR3b3Jkcyk7CisgICAgICAgICAgICAgICAgc2hhICs9IDg7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBzaGFMaW5lICs9IHNoYVN0cmlkZTsKKyAgICAgICAgICAg IHkrKzsKKyAgICAgICAgfQorICAgICAgICBwYm94Kys7CisgICAgfQorfQo= --Multipart=_Thu__29_Feb_2024_21_03_09_+0200_=7.c+vuMLC3AawII--