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--