xsetbackground - endian mismatch fix

Adrian Chadd <[email protected]> Tue, 13 Jan 2026 19:54:34 -0800
Newsgroups gmane.os.netbsd.ports.mips.devel
Message-ID <CAJ-VmokSNfdG9WbnfZ69PqgcfeeFOVwbuAVget_yuagzKo6sFA@mail.gmail.com>
--000000000000a08c200648511114
Content-Type: text/plain; charset="UTF-8"

hi!

this isn't QUITE mips specific but whilst figuring out the pixel
format disconnect between xsetbackground and the sgi indy newport
driver, I came across a fun endian conversion issue.

The short version - the image in memory is host endian, the
image->byte_order field needs to reflect the endianness of the image,
not of the xserver.

An alternate solution is to not switch the endianness of the image
from the image conversion and just set image->byte_order to LSBFirst
(ie little endian); that works too.

This allows my amd64 freebsd box run xsetbackground to the indy
newport and have the endianness conversion work right. It also works
correctly on the sgi indy client -> server.

I'm happy to submit a different diff that just leaves the endian
swizzling out of xsetbackground and lets xlib/xserver do the right
thing. Up to y'all. :-)


-adrian

--000000000000a08c200648511114
Content-Type: application/octet-stream; 
	name="20250113-netbsd-xsetwallpaper-endian-1.diff"
Content-Disposition: attachment; 
	filename="20250113-netbsd-xsetwallpaper-endian-1.diff"
Content-Transfer-Encoding: base64
Content-ID: <f_mkdhgspn0>
X-Attachment-Id: f_mkdhgspn0

ZGlmZiAtLWdpdCBhL3NyYy94c2V0d2FsbHBhcGVyLmMgYi9zcmMveHNldHdhbGxwYXBlci5jCmlu
ZGV4IDhiMjAwNTAuLjMzNWFjZWEgMTAwNjQ0Ci0tLSBhL3NyYy94c2V0d2FsbHBhcGVyLmMKKysr
IGIvc3JjL3hzZXR3YWxscGFwZXIuYwpAQCAtMTA0LDYgKzEwNCw4IEBAIG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKIAkJZGF0YVtpICsgMl0gPSBwOwogCX0KIAorCS8qIEF0IHRoaXMgcG9p
bnQgaXQncyBsaXR0bGUgZW5kaWFuIHJlZ2FyZGxlc3Mgb2YgaG9zdCB0eXBlLiAqLworCiAjaWYg
X0JZVEVfT1JERVIgPT0gX0JJR19FTkRJQU4KIAlmb3IgKGkgPSAwOyBpIDwgaW1hZ2V3ICogaW1h
Z2VoICogNDsgaSArPSA0KSB7CiAJCXVpbnQzMl90ICpwID0gKHVpbnQzMl90ICopJmRhdGFbaV07
CkBAIC0xMTEsNiArMTEzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KICNl
bmRpZgogCisJLyogSXQgaXMgbm93IGluIGhvc3QgZW5kaWFuICovCisKICNpZmRlZiBERUJVRwog
CXByaW50ZigiJXM6ICVkeCVkICVkYnBwXG4iLCBhcmd2WzBdLCBpbWFnZXcsIGltYWdlaCwgaW1h
Z2VicHAgKiA4KTsKICNlbmRpZgpAQCAtMTY4LDcgKzE3MiwxNyBAQCBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCiAJCWVycngoRVhJVF9GQUlMVVJFLCAiWENyZWF0ZUltYWdlIGZhaWxlZCIp
OwogCX0KIAlYSW5pdEltYWdlKGltYWdlKTsKLQlpbWFnZS0+Ynl0ZV9vcmRlciA9IGJ5dGVfb3Jk
ZXI7CisKKwkvKgorCSAqIFNldCB0aGUgaW1hZ2UgYnl0ZSBvcmRlci4gIFNpbmNlIHRoZSBhYm92
ZSBjb2RlIGhhcyBjb252ZXJ0ZWQgaXQKKwkgKiBpbnRvIGhvc3QgZW5kaWFuIHRoaXMgd2lsbCBu
ZWVkIHRvIGJlIGNvbW11bmljYXRlZCB0byB0aGUgZGlzcGxheQorCSAqIHNlcnZlciBzbyBpdCBj
YW4gcmUtc3dpenpsZSBpZiBuZWVkZWQuCisJICovCisjaWYgX0JZVEVfT1JERVIgPT0gX0JJR19F
TkRJQU4KKwlpbWFnZS0+Ynl0ZV9vcmRlciA9IE1TQkZpcnN0OworI2Vsc2UKKwlpbWFnZS0+Ynl0
ZV9vcmRlciA9IExTQkZpcnN0OworI2VuZGlmCiAKIAkvKiBDcmVhdGUgYSBncmFwaGljcyBjb250
ZXh0IGZvciBvdXIgbmV3IHBpeG1hcCAqLwogCWdjID0gWENyZWF0ZUdDKGRpc3BsYXksIHdpbmRv
dywgMCwgTlVMTCk7Cg==
--000000000000a08c200648511114--