mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
Revert "gallium: Fix big-endian addressing of non-bitmask array formats."
This reverts the functional part of commitd17ff2f7f1, leaving the unit test for mesa/pipe agreement on what's an array. The issue is that the util_channel_desc.shift values on array formats are not used for bit addressing in memory, they're bit addressing within a word treating a pixel of the format as a native type, as seen by llvmpipe's use of the values to do shifts (see lp_build_unpack_arith_rgba_aos() for example). This means the values are nonsensical for 3-byte RGB, but then llvmpipe doesn't expose those formats so it works out. I still want to clean up our big-endian format handling at some point, but let's fix the s390x regression first, sort out our format unit tests in CI, then be able to refactor with confidence. Fixes:d17ff2f7f1("gallium: Fix big-endian addressing of non-bitmask array formats.") Closes: #2472 Acked-by: Marek Olšák <marek.olsak@amd.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3721> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3721> (cherry picked from commit1886dbfe73)
This commit is contained in:
parent
f93c8d8598
commit
e5f13bca20
2 changed files with 7 additions and 18 deletions
|
|
@ -85,7 +85,7 @@
|
|||
"description": "Revert \"gallium: Fix big-endian addressing of non-bitmask array formats.\"",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "d17ff2f7f1864c81c1e00d04baf20f953c6d276a"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -379,27 +379,16 @@ def parse(filename):
|
|||
channel.shift = le_shift
|
||||
le_shift += channel.size
|
||||
|
||||
be_shift = 0
|
||||
for channel in be_channels[3::-1]:
|
||||
channel.shift = be_shift
|
||||
be_shift += channel.size
|
||||
|
||||
assert le_shift == be_shift
|
||||
for i in range(4):
|
||||
assert (le_swizzles[i] != SWIZZLE_NONE) == (be_swizzles[i] != SWIZZLE_NONE)
|
||||
|
||||
format = Format(name, layout, block_width, block_height, block_depth, le_channels, le_swizzles, be_channels, be_swizzles, colorspace)
|
||||
|
||||
if format.is_array() and not format.is_bitmask():
|
||||
# Formats accessed as arrays by the pack functions (R32G32_FLOAT or
|
||||
# R8G8B8_UNORM, for example) should not be channel-ordering-reversed
|
||||
# for BE.
|
||||
# Note that __eq__ on channels ignores .shift!
|
||||
assert(format.be_channels == format.le_channels)
|
||||
assert(format.be_swizzles == format.le_swizzles)
|
||||
format.be_channels = format.le_channels
|
||||
else:
|
||||
be_shift = 0
|
||||
for channel in format.be_channels[3::-1]:
|
||||
channel.shift = be_shift
|
||||
be_shift += channel.size
|
||||
|
||||
assert le_shift == be_shift
|
||||
|
||||
formats.append(format)
|
||||
return formats
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue