# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+from __future__ import division, print_function
+
import format_parser as parser
import sys
elif fmat.layout == 'astc':
bits = 16 if 'RGBA' in fmat.name else 8
return bits if fmat.has_channel(chan_name) else 0
+ elif fmat.layout == 'atc':
+ return 8 if fmat.has_channel(chan_name) else 0
else:
assert False
else:
formats = parser.parse(sys.argv[1])
-print '''
+print('''
/*
* Mesa 3-D graphics library
*
* manually or commit it into version control.
*/
-static const struct gl_format_info format_info[MESA_FORMAT_COUNT] =
+static const struct mesa_format_info format_info[MESA_FORMAT_COUNT] =
{
-'''
+''')
def format_channel_bits(fmat, tuple_list):
return ['.%s = %s' % (field, str(get_channel_bits(fmat, name))) for (field, name) in tuple_list]
+bf_map = {
+ "GL_DEPTH_COMPONENT" : "MESA_ARRAY_FORMAT_BASE_FORMAT_DEPTH",
+ "GL_STENCIL_INDEX" : "MESA_ARRAY_FORMAT_BASE_FORMAT_STENCIL",
+}
for fmat in formats:
- print ' {'
- print ' .Name = {0},'.format(fmat.name)
- print ' .StrName = "{0}",'.format(fmat.name)
- print ' .Layout = {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper())
- print ' .BaseFormat = {0},'.format(get_gl_base_format(fmat))
- print ' .DataType = {0},'.format(get_gl_data_type(fmat))
+ print(' [{0}] = {{'.format(fmat.name))
+ print(' .Name = {0},'.format(fmat.name))
+ print(' .StrName = "{0}",'.format(fmat.name))
+ print(' .Layout = {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper()))
+ print(' .BaseFormat = {0},'.format(get_gl_base_format(fmat)))
+ print(' .DataType = {0},'.format(get_gl_data_type(fmat)))
bits = [('RedBits', 'r'), ('GreenBits', 'g'), ('BlueBits', 'b'), ('AlphaBits', 'a')]
- print ' {0},'.format(', '.join(format_channel_bits(fmat, bits)))
+ print(' {0},'.format(', '.join(format_channel_bits(fmat, bits))))
bits = [('LuminanceBits', 'l'), ('IntensityBits', 'i'), ('DepthBits', 'z'), ('StencilBits', 's')]
- print ' {0},'.format(', '.join(format_channel_bits(fmat, bits)))
+ print(' {0},'.format(', '.join(format_channel_bits(fmat, bits))))
- print ' .IsSRGBFormat = {0:d},'.format(fmat.colorspace == 'srgb')
+ print(' .IsSRGBFormat = {0:d},'.format(fmat.colorspace == 'srgb'))
- print ' .BlockWidth = {0}, .BlockHeight = {1}, .BlockDepth = {2},'.format(fmat.block_width, fmat.block_height, fmat.block_depth)
- print ' .BytesPerBlock = {0},'.format(int(fmat.block_size() / 8))
+ print(' .BlockWidth = {0}, .BlockHeight = {1}, .BlockDepth = {2},'.format(fmat.block_width, fmat.block_height, fmat.block_depth))
+ print(' .BytesPerBlock = {0},'.format(int(fmat.block_size() / 8)))
- print ' .Swizzle = {{ {0} }},'.format(', '.join(map(str, fmat.swizzle)))
+ print(' .Swizzle = {{ {0} }},'.format(', '.join(map(str, fmat.swizzle))))
if fmat.is_array():
chan = fmat.array_element()
norm = chan.norm or chan.type == parser.FLOAT
- print ' .ArrayFormat = MESA_ARRAY_FORMAT({0}),'.format(', '.join([
- str(chan.size / 8),
+ print(' .ArrayFormat = MESA_ARRAY_FORMAT({0}),'.format(', '.join([
+ bf_map.get(get_gl_base_format(fmat), "MESA_ARRAY_FORMAT_BASE_FORMAT_RGBA_VARIANTS"),
+ str(chan.size // 8),
str(int(chan.sign)),
str(int(chan.type == parser.FLOAT)),
str(int(norm)),
str(fmat.swizzle[1]),
str(fmat.swizzle[2]),
str(fmat.swizzle[3]),
- ]))
+ ])))
else:
- print ' .ArrayFormat = 0,'
- print ' },'
+ print(' .ArrayFormat = 0,')
+ print(' },')
-print '};'
+print('};')