From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org Subject: [Bug 109371] Textures seem to be byteswapped on big endian architectures Date: Sat, 19 Jan 2019 20:31:58 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1758521130==" Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org --===============1758521130== Content-Type: multipart/alternative; boundary="15479299180.9dd12EbD.15121" Content-Transfer-Encoding: 7bit --15479299180.9dd12EbD.15121 Date: Sat, 19 Jan 2019 20:31:58 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated https://bugs.freedesktop.org/show_bug.cgi?id=3D109371 --- Comment #3 from Ilia Mirkin --- Unfortunately it appears that my G5 is dead. It half-booted once (died right around nfsroot load time). Then for a bit it would turn on, with fans going= but no light and no chime. Now the fans don't even turn on. So I think that's t= he end. The things I would have done: 1. Check whether the textures look OK in qapitrace's inspector 2. Look at the transfer methods being used (in nv30_transfer.c). Try commen= ting some out, although that can also lead to failures. 3. Try to create a simple program based on the apitrace which reproduces the issue, and debug it step by step, to figure out where the byteswap might be happening. A few bits of info: The GPUs are LE deep down inside. However they have BE modes which byteswap "some stuff". So like MMIO accesses, FIFO commands, etc. So they can still = be packed like integers as usual, without an extra byteswap, and the GPU will "take care of it". I don't have a clean idea of whether and how byteswapping happens between GART and VRAM, as well as in various "blit"/copy methods, w= here the byteswap would be different depending on whether it's u8, u16, or u32 datatype. This is most relevant to index buffers though, not textures. [Like let's say you're feeding the data via FIFO commands, there's an implicit byteswap there, etc.] Have a look at nv30_format.c for the supported texture formats/etc. As always, feel free to ask stuff in #nouveau. It should be noted that with a patch to apitrace (https://github.com/apitrace/apitrace/issues/601#issuecomment-455019551), t= he attached trace replays fine on both nv42 and nv34 on x86. --=20 You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.= --15479299180.9dd12EbD.15121 Date: Sat, 19 Jan 2019 20:31:58 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated

Commen= t # 3 on bug 10937= 1 from Ilia Mirkin
Unfortunately it appears that my G5 is dead. It half-booted on=
ce (died right
around nfsroot load time). Then for a bit it would turn on, with fans going=
 but
no light and no chime. Now the fans don't even turn on. So I think that's t=
he
end.

The things I would have done:

1. Check whether the textures look OK in qapitrace's inspector
2. Look at the transfer methods being used (in nv30_transfer.c). Try commen=
ting
some out, although that can also lead to failures.
3. Try to create a simple program based on the apitrace which reproduces the
issue, and debug it step by step, to figure out where the byteswap might be
happening.

A few bits of info:

The GPUs are LE deep down inside. However they have BE modes which byteswap
"some stuff". So like MMIO accesses, FIFO commands, etc. So they =
can still be
packed like integers as usual, without an extra byteswap, and the GPU will
"take care of it". I don't have a clean idea of whether and how b=
yteswapping
happens between GART and VRAM, as well as in various "blit"/copy =
methods, where
the byteswap would be different depending on whether it's u8, u16, or u32
datatype. This is most relevant to index buffers though, not textures. [Like
let's say you're feeding the data via FIFO commands, there's an implicit
byteswap there, etc.]

Have a look at nv30_format.c for the supported texture formats/etc.

As always, feel free to ask stuff in #nouveau.

It should be noted that with a patch to apitrace
(https://github.com/apitrace/apitrace/issues/601#issuecomment-45501=
9551), the
attached trace replays fine on both nv42 and nv34 on x86.


You are receiving this mail because:
  • You are the QA Contact for the bug.
  • You are the assignee for the bug.
= --15479299180.9dd12EbD.15121-- --===============1758521130== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBt YWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg== --===============1758521130==--