Re: Color support for wsfb/Amiga

Jukka Andberg <[email protected]> Mon, 27 Jun 2022 21:51:57 +0300
Newsgroups gmane.os.netbsd.ports.amiga,gmane.os.netbsd.devel.x11,gmane.os.netbsd.ports.luna68k
Message-ID <[email protected]>
This is a multi-part message in MIME format.

--Multipart=_Mon__27_Jun_2022_21_51_57_+0300_j0skilo.AcUNwj3U
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Izumi Tsutsui wrote Sun, 26 Jun 2022 15:53:49 +0900:

> Just FYI, ancient XFree86 driver seems to have "iplan2p2", "iplan2p4",
> and "iplan2p8" drivers (but I have not investigated them yet):
> http://cvsweb.netbsd.org/bsdweb.cgi/xsrc/xfree/xc/programs/Xserver/iplan2p4/Attic/

I suppose those are the "native" planar mode drivers.
 
> Random comments:
> 
> - as rin@ said, it's safer to leave WSDISPLAYIO_GTYPE not mandatory,
>   (i.e. not treat errors as fatal) especially if WSDISPLAYIO_GET_FBINFO
>   is available for newer drivers
>  - we don't have well-defined ioctl specifications so we should not rely
>    on implicit expectations

Ok then, I've updated the patch to just log an warning if WSDISPLAYIO_GTYPE fails.

> - I wonder if we should consider about "len" for mmap in WsfbScreenInit()?
>   fPtr->fbi.fbi_fbsize is enough?  What about fPtr->fbmem_len?

In case of Amiga fbi_fbsize is correct, and fbmem_len is derived from it.
 
> - As commented in WsfbScreenInit(), shadowFB is not supported
>   on depth < 8, so I wonder we should bother to check bitsPerPixel
>   (I doubt there could be >8bpp planar)

For length calculation? Yes, seems safe to assume exactly 8bpp there.

> - wonder what "Afb" stands for, even in Xorg
>   (eventually we could have Afb4, for luna68k and atari etc.?)

I don't think it has any particular meaning beyond being the
identifier for Amiga planar mode routines in Xorg.

Atari seems to have separate routines:
https://lists.x.org/archives/xorg-devel/2013-March/035831.html

--jukka

--Multipart=_Mon__27_Jun_2022_21_51_57_+0300_j0skilo.AcUNwj3U
Content-Type: application/octet-stream;
 name="wsfb2.diff"
Content-Disposition: attachment;
 filename="wsfb2.diff"
Content-Transfer-Encoding: base64

SW5kZXg6IHNyYy9zeXMvYXJjaC9hbWlnYS9kZXYvYW1pZGlzcGxheWNjLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3JjL3N5cy9hcmNoL2FtaWdhL2Rldi9hbWlkaXNwbGF5Y2MuYwkocmV2aXNpb24gOTI4KQor
Kysgc3JjL3N5cy9hcmNoL2FtaWdhL2Rldi9hbWlkaXNwbGF5Y2MuYwkod29ya2luZyBjb3B5KQpA
QCAtMTExMiwxNCArMTExMiwxMyBAQAogCWJtID0gYWRwLT5nZnh2aWV3LT5iaXRtYXA7CiAJS0FT
U0VSVChibSk7CiAKLQkvKiBEZXB0aCAxIHNpbmNlIGN1cnJlbnQgWCB3c2ZiIGRyaXZlciBkb2Vz
bid0IHN1cHBvcnQgbXVsdGlwbGUgYml0cGxhbmVzICovCiAJbWVtc2V0KGZiaW5mbywgMCwgc2l6
ZW9mKCpmYmluZm8pKTsKLQlmYmluZm8tPmZiaV9mYnNpemUgPSBibS0+Ynl0ZXNfcGVyX3JvdyAq
IGJtLT5yb3dzOworCWZiaW5mby0+ZmJpX2Zic2l6ZSA9IGJtLT5ieXRlc19wZXJfcm93ICogYm0t
PnJvd3MgKiBhZHAtPmdmeGRlcHRoOwogCWZiaW5mby0+ZmJpX2Zib2Zmc2V0ID0gMDsKIAlmYmlu
Zm8tPmZiaV93aWR0aCA9IGJtLT5ieXRlc19wZXJfcm93ICogODsKIAlmYmluZm8tPmZiaV9oZWln
aHQgPSBibS0+cm93czsKIAlmYmluZm8tPmZiaV9zdHJpZGUgPSBibS0+Ynl0ZXNfcGVyX3JvdzsK
LQlmYmluZm8tPmZiaV9iaXRzcGVycGl4ZWwgPSAxOworCWZiaW5mby0+ZmJpX2JpdHNwZXJwaXhl
bCA9IGFkcC0+Z2Z4ZGVwdGg7CiAJZmJpbmZvLT5mYmlfcGl4ZWx0eXBlID0gV1NGQl9DSTsKIAlm
YmluZm8tPmZiaV9mbGFncyA9IDA7CiAJZmJpbmZvLT5mYmlfc3VidHlwZS5mYmlfY21hcGluZm8u
Y21hcF9lbnRyaWVzID0gMSA8PCBhZHAtPmdmeGRlcHRoOwpJbmRleDogeHNyYy9leHRlcm5hbC9t
aXQveGY4Ni12aWRlby13c2ZiL2Rpc3Qvc3JjL3dzZmIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4c3JjL2V4
dGVybmFsL21pdC94Zjg2LXZpZGVvLXdzZmIvZGlzdC9zcmMvd3NmYi5oCShyZXZpc2lvbiA5Mjgp
CisrKyB4c3JjL2V4dGVybmFsL21pdC94Zjg2LXZpZGVvLXdzZmIvZGlzdC9zcmMvd3NmYi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAJQm9vbAkJCXNoYWRvd0ZCOwogCUJvb2wJ
CQlIV0N1cnNvcjsKIAlCb29sCQkJdXNlU3dhcDMyOworCUJvb2wJCQlwbGFuYXJBZmI7CiAJQ2xv
c2VTY3JlZW5Qcm9jUHRyCUNsb3NlU2NyZWVuOwogCUNyZWF0ZVNjcmVlblJlc291cmNlc1Byb2NQ
dHIgQ3JlYXRlU2NyZWVuUmVzb3VyY2VzOwogCXZvaWQgICAgICAgICAgICAgICAgICAgICgqUG9p
bnRlck1vdmVkKShTQ1JOX0FSR19UWVBFLCBpbnQsIGludCk7CkluZGV4OiB4c3JjL2V4dGVybmFs
L21pdC94Zjg2LXZpZGVvLXdzZmIvZGlzdC9zcmMvd3NmYl9kcml2ZXIuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB4c3JjL2V4dGVybmFsL21pdC94Zjg2LXZpZGVvLXdzZmIvZGlzdC9zcmMvd3NmYl9kcml2ZXIu
YwkocmV2aXNpb24gOTI4KQorKysgeHNyYy9leHRlcm5hbC9taXQveGY4Ni12aWRlby13c2ZiL2Rp
c3Qvc3JjL3dzZmJfZHJpdmVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsOCBAQAog
c3RhdGljIEJvb2wgV3NmYkNsb3NlU2NyZWVuKENMT1NFX1NDUkVFTl9BUkdTX0RFQ0wpOwogc3Rh
dGljIHZvaWQgKldzZmJXaW5kb3dMaW5lYXIoU2NyZWVuUHRyLCBDQVJEMzIsIENBUkQzMiwgaW50
LCBDQVJEMzIgKiwKIAkJCSAgICAgIHZvaWQgKik7CitzdGF0aWMgdm9pZCAqV3NmYldpbmRvd0Fm
YihTY3JlZW5QdHIsIENBUkQzMiwgQ0FSRDMyLCBpbnQsIENBUkQzMiAqLAorCQkJICAgICAgdm9p
ZCAqKTsKIHN0YXRpYyB2b2lkIFdzZmJQb2ludGVyTW92ZWQoU0NSTl9BUkdfVFlQRSwgaW50LCBp
bnQpOwogc3RhdGljIEJvb2wgV3NmYkVudGVyVlQoVlRfRlVOQ19BUkdTX0RFQ0wpOwogc3RhdGlj
IHZvaWQgV3NmYkxlYXZlVlQoVlRfRlVOQ19BUkdTX0RFQ0wpOwpAQCAtMjExLDYgKzIxMyw3IEBA
CiAJInNoYWRvd1VwZGF0ZVBhY2tlZFdlYWsiLAogCSJzaGFkb3dVcGRhdGVSb3RhdGVQYWNrZWQi
LAogCSJzaGFkb3dVcGRhdGVSb3RhdGVQYWNrZWRXZWFrIiwKKwkic2hhZG93VXBkYXRlQWZiOCIs
CiAJTlVMTAogfTsKIApAQCAtNDQ0LDYgKzQ0NywxMyBAQAogCQlyZXR1cm4gRkFMU0U7CiAJfQog
CisJaWYgKGlvY3RsKGZQdHItPmZkLCBXU0RJU1BMQVlJT19HVFlQRSwgJndzdHlwZSkgPT0gLTEp
IHsKKwkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX1dBUk5JTkcsCisJCQkgICAiaW9j
dGwgV1NESVNQTEFZX0dUWVBFOiAlc1xuIiwKKwkJCSAgIHN0cmVycm9yKGVycm5vKSk7CisJCXdz
dHlwZSA9IFdTRElTUExBWV9UWVBFX1VOS05PV047CisJfQorCiAJaWYgKGlvY3RsKGZQdHItPmZk
LCBXU0RJU1BMQVlJT19HRVRfRkJJTkZPLCAmZlB0ci0+ZmJpKSAhPSAwKSB7CiAJCXN0cnVjdCB3
c2Rpc3BsYXlfZmJpbmZvIGluZm87CiAJCXN0cnVjdCB3c2Rpc3BsYXlpb19mYmluZm8gKmZiaSA9
ICZmUHRyLT5mYmk7CkBAIC00NTcsMTIgKzQ2Nyw2IEBACiAJCQkJICAgc3RyZXJyb3IoZXJybm8p
KTsKIAkJCXJldHVybiBGQUxTRTsKIAkJfQotCQlpZiAoaW9jdGwoZlB0ci0+ZmQsIFdTRElTUExB
WUlPX0dUWVBFLCAmd3N0eXBlKSA9PSAtMSkgewotCQkJeGY4NkRydk1zZyhwU2Nybi0+c2Nybklu
ZGV4LCBYX0VSUk9SLAotCQkJCSAgICJpb2N0bCBXU0RJU1BMQVlfR1RZUEU6ICVzXG4iLAotCQkJ
CSAgIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlyZXR1cm4gRkFMU0U7Ci0JCX0KIAkJaWYgKGlvY3Rs
KGZQdHItPmZkLCBXU0RJU1BMQVlJT19MSU5FQllURVMsICZsYikgPT0gLTEpIHsKIAkJCXhmODZE
cnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwKIAkJCQkgICAiaW9jdGwgV1NESVNQTEFZ
SU9fTElORUJZVEVTOiAlc1xuIiwKQEAgLTU3Myw2ICs1NzcsMjUgQEAKIAkJYml0c3BlcnBpeGVs
ID0gMTsKIAl9CiAjZW5kaWYKKyNpZiBkZWZpbmVkKF9fTmV0QlNEX18pICYmIGRlZmluZWQoV1NE
SVNQTEFZX1RZUEVfQU1JR0FDQykKKwlpZiAod3N0eXBlID09IFdTRElTUExBWV9UWVBFX0FNSUdB
Q0MpCisJeworCQkvKgorCQkgKiBWaWRlbyBtZW1vcnkgaXMgb3JnYW5pemVkIGluIGJpdHBsYW5l
cy4KKwkJICogOGJwcCBvciAxYnBwIHN1cHBvcnRlZCBpbiB0aGlzIGRyaXZlci4KKwkJICogV2l0
aCA4YnBwIGNvbnZlcnNpb24gdG8gYml0cGxhbmUgZm9ybWF0CisJCSAqIGlzIGRvbmUgaW4gc2hh
ZG93IHVwZGF0ZSBwcm9jLgorCQkgKiBXaXRoIDFicHAgbm8gY29udmVyc2lvbiBuZWVkZWQuCisJ
CSAqLworCQlpZiAoYml0c3BlcnBpeGVsID09IDgpIHsKKwkJCWZQdHItPnBsYW5hckFmYiA9IFRS
VUU7CisJCX0gZWxzZSB7CisJCQlkZWZhdWx0X2RlcHRoID0gMTsKKwkJCWJpdHNwZXJwaXhlbCA9
IDE7CisJCX0KKwl9CisjZW5kaWYKKwogCWlmICgheGY4NlNldERlcHRoQnBwKHBTY3JuLCBkZWZh
dWx0X2RlcHRoLCBkZWZhdWx0X2RlcHRoLAogCQliaXRzcGVycGl4ZWwsCiAJCWJpdHNwZXJwaXhl
bCA+PSAyNCA/IFN1cHBvcnQyNGJwcEZifFN1cHBvcnQzMmJwcEZiIDogMCkpCkBAIC04MjYsNiAr
ODQ5LDcgQEAKIAlQaXhtYXBQdHIgcFBpeG1hcDsKIAlCb29sIHJldDsKIAl2b2lkICgqc2hhZG93
cHJvYykoU2NyZWVuUHRyLCBzaGFkb3dCdWZQdHIpOworCVNoYWRvd1dpbmRvd1Byb2Mgd2luZG93
cHJvYyA9IFdzZmJXaW5kb3dMaW5lYXI7CiAKIAlwU2NyZWVuLT5DcmVhdGVTY3JlZW5SZXNvdXJj
ZXMgPSBmUHRyLT5DcmVhdGVTY3JlZW5SZXNvdXJjZXM7CiAJcmV0ID0gcFNjcmVlbi0+Q3JlYXRl
U2NyZWVuUmVzb3VyY2VzKHBTY3JlZW4pOwpAQCAtODQxLDExICs4NjUsMTQgQEAKIAkJc2hhZG93
cHJvYyA9IFdzZmJTaGFkb3dVcGRhdGVTd2FwMzI7CiAJfSBlbHNlIGlmIChmUHRyLT5yb3RhdGUp
IHsKIAkJc2hhZG93cHJvYyA9IHNoYWRvd1VwZGF0ZVJvdGF0ZVBhY2tlZDsKKwl9IGVsc2UgaWYg
KGZQdHItPnBsYW5hckFmYikgeworCQlzaGFkb3dwcm9jID0gc2hhZG93VXBkYXRlQWZiODsKKwkJ
d2luZG93cHJvYyA9IFdzZmJXaW5kb3dBZmI7CiAJfSBlbHNlCiAJCXNoYWRvd3Byb2MgPSBzaGFk
b3dVcGRhdGVQYWNrZWQ7CiAJCiAJaWYgKCFzaGFkb3dBZGQocFNjcmVlbiwgcFBpeG1hcCwgc2hh
ZG93cHJvYywKLQkJV3NmYldpbmRvd0xpbmVhciwgZlB0ci0+cm90YXRlLCBOVUxMKSkgeworCQl3
aW5kb3dwcm9jLCBmUHRyLT5yb3RhdGUsIE5VTEwpKSB7CiAJCXJldHVybiBGQUxTRTsKIAl9CiAJ
cmV0dXJuIFRSVUU7CkBAIC05ODcsNiArMTAxNCw5IEBACiAJCQkgKi8KIAkJCWxlbiA9IHBTY3Ju
LT52aXJ0dWFsWCAqIHBTY3JuLT52aXJ0dWFsWSAqCiAJCQkgICAgKHBTY3JuLT5iaXRzUGVyUGl4
ZWwgPj4gMyk7CisJCX0gZWxzZSBpZiAoZlB0ci0+cGxhbmFyQWZiKSB7CisJCQkvKiBhbHdheXMg
OGJwcCAqLworCQkJbGVuID0gcFNjcm4tPnZpcnR1YWxYICogcFNjcm4tPnZpcnR1YWxZOwogCQl9
IGVsc2UgewogCQkJbGVuID0gZlB0ci0+ZmJpLmZiaV9zdHJpZGUgKiBwU2Nybi0+dmlydHVhbFk7
CiAJCX0KQEAgLTEwMDYsNiArMTAzNiw4IEBACiAJICovCiAJaWYgKGZQdHItPnJvdGF0ZSkgewog
CQl3aWR0aCA9IHBTY3JuLT5kaXNwbGF5V2lkdGg7CisJfSBlbHNlIGlmIChmUHRyLT5wbGFuYXJB
ZmIpIHsKKwkJd2lkdGggPSBwU2Nybi0+ZGlzcGxheVdpZHRoOwogCX0gZWxzZSB7CiAJCWlmIChw
U2Nybi0+Yml0c1BlclBpeGVsID4gOCkgewogCQkJd2lkdGggPQpAQCAtMTIzMiw2ICsxMjY0LDIz
IEBACiAJcmV0dXJuICgoQ0FSRDggKilmUHRyLT5mYnN0YXJ0ICsgcm93ICogZlB0ci0+ZmJpLmZi
aV9zdHJpZGUgKyBvZmZzZXQpOwogfQogCisvKioKKyAqIEZvciB1c2Ugd2l0aCBzaGFkb3dVcGRh
dGVBZmI4CisgKgorICogRm9yIHZpZGVvIG1lbW9yeSBsYXlvdXQgd2l0aCBub24taW50ZXJsZWF2
ZWQgYml0cGxhbmVzLgorICovCitzdGF0aWMgdm9pZCAqCitXc2ZiV2luZG93QWZiKFNjcmVlblB0
ciBwU2NyZWVuLCBDQVJEMzIgcm93LCBDQVJEMzIgb2Zmc2V0LCBpbnQgbW9kZSwKKwkJQ0FSRDMy
ICpzaXplLCB2b2lkICpjbG9zdXJlKQoreworCVNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVl
bnNbcFNjcmVlbi0+bXlOdW1dOworCVdzZmJQdHIgZlB0ciA9IFdTRkJQVFIocFNjcm4pOworCisJ
Lyogc2l6ZSBpcyBvZmZzZXQgZnJvbSBzdGFydCBvZiBiaXRwbGFuZSB0byBuZXh0IGJpdHBsYW5l
ICovCisJKnNpemUgPSBmUHRyLT5mYmkuZmJpX3N0cmlkZSAqIGZQdHItPmZiaS5mYmlfaGVpZ2h0
OworCXJldHVybiAoKENBUkQ4ICopZlB0ci0+ZmJzdGFydCArIHJvdyAqIGZQdHItPmZiaS5mYmlf
c3RyaWRlICsgb2Zmc2V0KTsKK30KKwogc3RhdGljIHZvaWQKIFdzZmJQb2ludGVyTW92ZWQoU0NS
Tl9BUkdfVFlQRSBhcmcsIGludCB4LCBpbnQgeSkKIHsK

--Multipart=_Mon__27_Jun_2022_21_51_57_+0300_j0skilo.AcUNwj3U--