mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 19:30:11 +01:00
util: Add a new flag, for formats that can be described as a bitmask.
This commit is contained in:
parent
6718f03258
commit
cfde6c50ae
3 changed files with 12 additions and 7 deletions
|
|
@ -145,6 +145,15 @@ struct util_format_description
|
|||
*/
|
||||
unsigned is_array:1;
|
||||
|
||||
/**
|
||||
* Whether the pixel format can be described as a bitfield structure.
|
||||
*
|
||||
* In particular:
|
||||
* - pixel depth must be 8, 16, or 32 bits;
|
||||
* - all channels must be unsigned, signed, or void
|
||||
*/
|
||||
unsigned is_bitmask:1;
|
||||
|
||||
/**
|
||||
* Whether channels have mixed types (ignoring UTIL_FORMAT_TYPE_VOID).
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -166,17 +166,11 @@ class Format:
|
|||
return True
|
||||
|
||||
def is_bitmask(self):
|
||||
if self.block_size() > 32:
|
||||
return False
|
||||
if not self.is_pot():
|
||||
if self.block_size() not in (8, 16, 32):
|
||||
return False
|
||||
for channel in self.channels:
|
||||
if not is_pot(channel.size):
|
||||
return True
|
||||
if channel.type not in (VOID, UNSIGNED, SIGNED):
|
||||
return False
|
||||
if channel.size >= 32:
|
||||
return False
|
||||
return True
|
||||
|
||||
def inv_swizzles(self):
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ def write_format_table(formats):
|
|||
print " 0,"
|
||||
print " 0,"
|
||||
print " 0,"
|
||||
print " 0,"
|
||||
print " {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},"
|
||||
print " {0, 0, 0, 0},"
|
||||
print " 0"
|
||||
|
|
@ -111,6 +112,7 @@ def write_format_table(formats):
|
|||
print " %s," % (layout_map(format.layout),)
|
||||
print " %u,\t/* nr_channels */" % (format.nr_channels(),)
|
||||
print " %s,\t/* is_array */" % (bool_map(format.is_array()),)
|
||||
print " %s,\t/* is_bitmask */" % (bool_map(format.is_bitmask()),)
|
||||
print " %s,\t/* is_mixed */" % (bool_map(format.is_mixed()),)
|
||||
print " {"
|
||||
for i in range(4):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue