+from __future__ import print_function
CopyRight = '''
/*
strings_offsets = IntTable("int")
fields = FieldTable()
- print '/* This file is autogenerated by sid_tables.py from sid.h. Do not edit directly. */'
- print
- print CopyRight.strip()
- print '''
+ print('/* This file is autogenerated by sid_tables.py from sid.h. Do not edit directly. */')
+ print()
+ print(CopyRight.strip())
+ print('''
#ifndef SID_TABLES_H
#define SID_TABLES_H
unsigned name_offset;
unsigned op;
};
-'''
+''')
- print 'static const struct si_packet3 packet3_table[] = {'
+ print('static const struct si_packet3 packet3_table[] = {')
for pkt in packets:
- print '\t{%s, %s},' % (strings.add(pkt[5:]), pkt)
- print '};'
- print
+ print('\t{%s, %s},' % (strings.add(pkt[5:]), pkt))
+ print('};')
+ print()
regs = {}
for asic in asics:
- print 'static const struct si_reg %s_reg_table[] = {' % (asic.name)
+ print('static const struct si_reg %s_reg_table[] = {' % (asic.name))
for reg in asic.registers:
# Only output a register that was changed or added relative to
# the previous generation
continue
if len(reg.fields):
- print '\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
- len(reg.fields), fields.add(reg.fields))
+ print('\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
+ len(reg.fields), fields.add(reg.fields)))
else:
- print '\t{%s, %s},' % (strings.add(reg.name), reg.r_name)
+ print('\t{%s, %s},' % (strings.add(reg.name), reg.r_name))
regs[reg.r_name] = reg
- print '};'
- print
+ print('};')
+ print()
fields.emit(sys.stdout, strings, strings_offsets)
- print
+ print()
strings.emit(sys.stdout, "sid_strings")
- print
+ print()
strings_offsets.emit(sys.stdout, "sid_strings_offsets")
- print
- print '#endif'
+ print()
+ print('#endif')
def main():
+from __future__ import print_function
CopyRight = '''
/**************************************************************************
if format.nr_channels() <= 1:
func(format.le_channels, format.le_swizzles)
else:
- print '#ifdef PIPE_ARCH_BIG_ENDIAN'
+ print('#ifdef PIPE_ARCH_BIG_ENDIAN')
func(format.be_channels, format.be_swizzles)
- print '#else'
+ print('#else')
func(format.le_channels, format.le_swizzles)
- print '#endif'
+ print('#endif')
def write_format_table(formats):
- print '/* This file is autogenerated by vk_format_table.py from vk_format_layout.csv. Do not edit directly. */'
- print
+ print('/* This file is autogenerated by vk_format_table.py from vk_format_layout.csv. Do not edit directly. */')
+ print()
# This will print the copyright message on the top of this file
- print CopyRight.strip()
- print
- print '#include "stdbool.h"'
- print '#include "vk_format.h"'
- print
+ print(CopyRight.strip())
+ print()
+ print('#include "stdbool.h"')
+ print('#include "vk_format.h"')
+ print()
def do_channel_array(channels, swizzles):
- print " {"
+ print(" {")
for i in range(4):
channel = channels[i]
if i < 3:
else:
sep = ""
if channel.size:
- print " {%s, %s, %s, %s, %u, %u}%s\t/* %s = %s */" % (type_map[channel.type], bool_map(channel.norm), bool_map(channel.pure), bool_map(channel.scaled), channel.size, channel.shift, sep, "xyzw"[i], channel.name)
+ print(" {%s, %s, %s, %s, %u, %u}%s\t/* %s = %s */" % (type_map[channel.type], bool_map(channel.norm), bool_map(channel.pure), bool_map(channel.scaled), channel.size, channel.shift, sep, "xyzw"[i], channel.name))
else:
- print " {0, 0, 0, 0, 0}%s" % (sep,)
- print " },"
+ print(" {0, 0, 0, 0, 0}%s" % (sep,))
+ print(" },")
def do_swizzle_array(channels, swizzles):
- print " {"
+ print(" {")
for i in range(4):
swizzle = swizzles[i]
if i < 3:
comment = colorspace_channels_map[format.colorspace][i]
except (KeyError, IndexError):
comment = 'ignored'
- print " %s%s\t/* %s */" % (swizzle_map[swizzle], sep, comment)
- print " },"
+ print(" %s%s\t/* %s */" % (swizzle_map[swizzle], sep, comment))
+ print(" },")
for format in formats:
- print 'static const struct vk_format_description'
- print 'vk_format_%s_description = {' % (format.short_name(),)
- print " %s," % (format.name,)
- print " \"%s\"," % (format.name,)
- print " \"%s\"," % (format.short_name(),)
- print " {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size())
- 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('static const struct vk_format_description')
+ print('vk_format_%s_description = {' % (format.short_name(),))
+ print(" %s," % (format.name,))
+ print(" \"%s\"," % (format.name,))
+ print(" \"%s\"," % (format.short_name(),))
+ print(" {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size()))
+ 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_channels(format, do_channel_array)
print_channels(format, do_swizzle_array)
- print " %s," % (colorspace_map(format.colorspace),)
- print "};"
- print
+ print(" %s," % (colorspace_map(format.colorspace),))
+ print("};")
+ print()
- print "const struct vk_format_description *"
- print "vk_format_description(VkFormat format)"
- print "{"
- print " if (format > VK_FORMAT_END_RANGE) {"
- print " return NULL;"
- print " }"
- print
- print " switch (format) {"
+ print("const struct vk_format_description *")
+ print("vk_format_description(VkFormat format)")
+ print("{")
+ print(" if (format > VK_FORMAT_END_RANGE) {")
+ print(" return NULL;")
+ print(" }")
+ print()
+ print(" switch (format) {")
for format in formats:
- print " case %s:" % format.name
- print " return &vk_format_%s_description;" % (format.short_name(),)
- print " default:"
- print " return NULL;"
- print " }"
- print "}"
- print
+ print(" case %s:" % format.name)
+ print(" return &vk_format_%s_description;" % (format.short_name(),))
+ print(" default:")
+ print(" return NULL;")
+ print(" }")
+ print("}")
+ print()
def main():
+from __future__ import print_function
template = """\
/* Copyright (C) 2015 Broadcom
from nir_intrinsics import INTR_OPCODES
from mako.template import Template
-print Template(template).render(opcodes=opcodes, INTR_OPCODES=INTR_OPCODES)
+print(Template(template).render(opcodes=opcodes, INTR_OPCODES=INTR_OPCODES))
+from __future__ import print_function
import re
from nir_opcodes import opcodes
from mako.template import Template
-print Template(template).render(opcodes=opcodes, type_sizes=type_sizes,
+print(Template(template).render(opcodes=opcodes, type_sizes=type_sizes,
type_has_size=type_has_size,
type_add_size=type_add_size,
op_bit_sizes=op_bit_sizes,
- get_const_field=get_const_field)
+ get_const_field=get_const_field))
# Authors:
# Connor Abbott (cwabbott0@gmail.com)
+from __future__ import print_function
+
from nir_opcodes import opcodes
from mako.template import Template
};
""")
-print template.render(opcodes=opcodes)
+print(template.render(opcodes=opcodes))
+from __future__ import print_function
template = """\
/* Copyright (C) 2014 Connor Abbott
from nir_opcodes import opcodes
from mako.template import Template
-print Template(template).render(opcodes=opcodes)
+print(Template(template).render(opcodes=opcodes))
# Authors:
# Jason Ekstrand (jason@jlekstrand.net)
+from __future__ import print_function
+
from collections import OrderedDict
import nir_algebraic
import itertools
(('b2f@32', a), ('iand', a, 1.0), 'options->lower_b2f'),
]
-print nir_algebraic.AlgebraicPass("nir_opt_algebraic", optimizations).render()
-print nir_algebraic.AlgebraicPass("nir_opt_algebraic_before_ffma",
- before_ffma_optimizations).render()
-print nir_algebraic.AlgebraicPass("nir_opt_algebraic_late",
- late_optimizations).render()
+print(nir_algebraic.AlgebraicPass("nir_opt_algebraic", optimizations).render())
+print(nir_algebraic.AlgebraicPass("nir_opt_algebraic_before_ffma",
+ before_ffma_optimizations).render())
+print(nir_algebraic.AlgebraicPass("nir_opt_algebraic_late",
+ late_optimizations).render())
+from __future__ import print_function
+
copyright = '''
/*
* Copyright 2009 VMware, Inc.
pr_idx = dict(prdisable='PR_DISABLE', prenable='PR_ENABLE')
def prolog():
- print '''/* File automatically generated by u_indices_gen.py */'''
- print copyright
- print r'''
+ print('''/* File automatically generated by u_indices_gen.py */''')
+ print(copyright)
+ print(r'''
/**
* @file
static u_generate_func generate[OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
-'''
+''')
def vert( intype, outtype, v0 ):
if intype == GENERATE:
return '(' + outtype + ')in[' + v0 + ']'
def point( intype, outtype, ptr, v0 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
def line( intype, outtype, ptr, v0, v1 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
- print ' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
+ print(' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';')
def tri( intype, outtype, ptr, v0, v1, v2 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
- print ' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';'
- print ' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
+ print(' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';')
+ print(' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';')
def lineadj( intype, outtype, ptr, v0, v1, v2, v3 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
- print ' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';'
- print ' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';'
- print ' (' + ptr + ')[3] = ' + vert( intype, outtype, v3 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
+ print(' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';')
+ print(' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';')
+ print(' (' + ptr + ')[3] = ' + vert( intype, outtype, v3 ) + ';')
def triadj( intype, outtype, ptr, v0, v1, v2, v3, v4, v5 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
- print ' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';'
- print ' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';'
- print ' (' + ptr + ')[3] = ' + vert( intype, outtype, v3 ) + ';'
- print ' (' + ptr + ')[4] = ' + vert( intype, outtype, v4 ) + ';'
- print ' (' + ptr + ')[5] = ' + vert( intype, outtype, v5 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
+ print(' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';')
+ print(' (' + ptr + ')[2] = ' + vert( intype, outtype, v2 ) + ';')
+ print(' (' + ptr + ')[3] = ' + vert( intype, outtype, v3 ) + ';')
+ print(' (' + ptr + ')[4] = ' + vert( intype, outtype, v4 ) + ';')
+ print(' (' + ptr + ')[5] = ' + vert( intype, outtype, v5 ) + ';')
def do_point( intype, outtype, ptr, v0 ):
point( intype, outtype, ptr, v0 )
return 'translate_' + prim + '_' + intype + '2' + outtype + '_' + inpv + '2' + outpv + '_' + pr
def preamble(intype, outtype, inpv, outpv, pr, prim):
- print 'static void ' + name( intype, outtype, inpv, outpv, pr, prim ) + '('
+ print('static void ' + name( intype, outtype, inpv, outpv, pr, prim ) + '(')
if intype != GENERATE:
- print ' const void * _in,'
- print ' unsigned start,'
+ print(' const void * _in,')
+ print(' unsigned start,')
if intype != GENERATE:
- print ' unsigned in_nr,'
- print ' unsigned out_nr,'
+ print(' unsigned in_nr,')
+ print(' unsigned out_nr,')
if intype != GENERATE:
- print ' unsigned restart_index,'
- print ' void *_out )'
- print '{'
+ print(' unsigned restart_index,')
+ print(' void *_out )')
+ print('{')
if intype != GENERATE:
- print ' const ' + intype + '*in = (const ' + intype + '*)_in;'
- print ' ' + outtype + ' *out = (' + outtype + '*)_out;'
- print ' unsigned i, j;'
- print ' (void)j;'
+ print(' const ' + intype + '*in = (const ' + intype + '*)_in;')
+ print(' ' + outtype + ' *out = (' + outtype + '*)_out;')
+ print(' unsigned i, j;')
+ print(' (void)j;')
def postamble():
- print '}'
+ print('}')
def points(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='points')
- print ' for (i = start; i < (out_nr+start); i++) { '
+ print(' for (i = start; i < (out_nr+start); i++) { ')
do_point( intype, outtype, 'out+i', 'i' );
- print ' }'
+ print(' }')
postamble()
def lines(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='lines')
- print ' for (i = start; i < (out_nr+start); i+=2) { '
+ print(' for (i = start; i < (out_nr+start); i+=2) { ')
do_line( intype, outtype, 'out+i', 'i', 'i+1', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def linestrip(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='linestrip')
- print ' for (i = start, j = 0; j < out_nr; j+=2, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=2, i++) { ')
do_line( intype, outtype, 'out+j', 'i', 'i+1', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def lineloop(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='lineloop')
- print ' for (i = start, j = 0; j < out_nr - 2; j+=2, i++) { '
+ print(' for (i = start, j = 0; j < out_nr - 2; j+=2, i++) { ')
do_line( intype, outtype, 'out+j', 'i', 'i+1', inpv, outpv );
- print ' }'
+ print(' }')
do_line( intype, outtype, 'out+j', 'i', 'start', inpv, outpv );
postamble()
def tris(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='tris')
- print ' for (i = start; i < (out_nr+start); i+=3) { '
+ print(' for (i = start; i < (out_nr+start); i+=3) { ')
do_tri( intype, outtype, 'out+i', 'i', 'i+1', 'i+2', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def tristrip(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='tristrip')
- print ' for (i = start, j = 0; j < out_nr; j+=3, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=3, i++) { ')
if inpv == FIRST:
do_tri( intype, outtype, 'out+j', 'i', 'i+1+(i&1)', 'i+2-(i&1)', inpv, outpv );
else:
do_tri( intype, outtype, 'out+j', 'i+(i&1)', 'i+1-(i&1)', 'i+2', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def trifan(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='trifan')
- print ' for (i = start, j = 0; j < out_nr; j+=3, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=3, i++) { ')
do_tri( intype, outtype, 'out+j', 'start', 'i+1', 'i+2', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def polygon(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='polygon')
- print ' for (i = start, j = 0; j < out_nr; j+=3, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=3, i++) { ')
if pr == PRENABLE:
- print 'restart:'
- print ' if (i + 3 > in_nr) {'
- print ' (out+j+0)[0] = restart_index;'
- print ' (out+j+0)[1] = restart_index;'
- print ' (out+j+0)[2] = restart_index;'
- print ' continue;'
- print ' }'
- print ' if (in[i + 0] == restart_index) {'
- print ' i += 1;'
- print ' start = i;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 1] == restart_index) {'
- print ' i += 2;'
- print ' start = i;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 2] == restart_index) {'
- print ' i += 3;'
- print ' start = i;'
- print ' goto restart;'
- print ' }'
+ print('restart:')
+ print(' if (i + 3 > in_nr) {')
+ print(' (out+j+0)[0] = restart_index;')
+ print(' (out+j+0)[1] = restart_index;')
+ print(' (out+j+0)[2] = restart_index;')
+ print(' continue;')
+ print(' }')
+ print(' if (in[i + 0] == restart_index) {')
+ print(' i += 1;')
+ print(' start = i;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 1] == restart_index) {')
+ print(' i += 2;')
+ print(' start = i;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 2] == restart_index) {')
+ print(' i += 3;')
+ print(' start = i;')
+ print(' goto restart;')
+ print(' }')
if inpv == FIRST:
do_tri( intype, outtype, 'out+j', 'start', 'i+1', 'i+2', inpv, outpv );
else:
do_tri( intype, outtype, 'out+j', 'i+1', 'i+2', 'start', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def quads(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='quads')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i+=4) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i+=4) { ')
if pr == PRENABLE:
- print 'restart:'
- print ' if (i + 4 > in_nr) {'
- print ' (out+j+0)[0] = restart_index;'
- print ' (out+j+0)[1] = restart_index;'
- print ' (out+j+0)[2] = restart_index;'
- print ' (out+j+3)[0] = restart_index;'
- print ' (out+j+3)[1] = restart_index;'
- print ' (out+j+3)[2] = restart_index;'
- print ' continue;'
- print ' }'
- print ' if (in[i + 0] == restart_index) {'
- print ' i += 1;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 1] == restart_index) {'
- print ' i += 2;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 2] == restart_index) {'
- print ' i += 3;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 3] == restart_index) {'
- print ' i += 4;'
- print ' goto restart;'
- print ' }'
+ print('restart:')
+ print(' if (i + 4 > in_nr) {')
+ print(' (out+j+0)[0] = restart_index;')
+ print(' (out+j+0)[1] = restart_index;')
+ print(' (out+j+0)[2] = restart_index;')
+ print(' (out+j+3)[0] = restart_index;')
+ print(' (out+j+3)[1] = restart_index;')
+ print(' (out+j+3)[2] = restart_index;')
+ print(' continue;')
+ print(' }')
+ print(' if (in[i + 0] == restart_index) {')
+ print(' i += 1;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 1] == restart_index) {')
+ print(' i += 2;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 2] == restart_index) {')
+ print(' i += 3;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 3] == restart_index) {')
+ print(' i += 4;')
+ print(' goto restart;')
+ print(' }')
do_quad( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+2', 'i+3', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def quadstrip(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='quadstrip')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i+=2) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i+=2) { ')
if pr == PRENABLE:
- print 'restart:'
- print ' if (i + 4 > in_nr) {'
- print ' (out+j+0)[0] = restart_index;'
- print ' (out+j+0)[1] = restart_index;'
- print ' (out+j+0)[2] = restart_index;'
- print ' (out+j+3)[0] = restart_index;'
- print ' (out+j+3)[1] = restart_index;'
- print ' (out+j+3)[2] = restart_index;'
- print ' continue;'
- print ' }'
- print ' if (in[i + 0] == restart_index) {'
- print ' i += 1;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 1] == restart_index) {'
- print ' i += 2;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 2] == restart_index) {'
- print ' i += 3;'
- print ' goto restart;'
- print ' }'
- print ' if (in[i + 3] == restart_index) {'
- print ' i += 4;'
- print ' goto restart;'
- print ' }'
+ print('restart:')
+ print(' if (i + 4 > in_nr) {')
+ print(' (out+j+0)[0] = restart_index;')
+ print(' (out+j+0)[1] = restart_index;')
+ print(' (out+j+0)[2] = restart_index;')
+ print(' (out+j+3)[0] = restart_index;')
+ print(' (out+j+3)[1] = restart_index;')
+ print(' (out+j+3)[2] = restart_index;')
+ print(' continue;')
+ print(' }')
+ print(' if (in[i + 0] == restart_index) {')
+ print(' i += 1;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 1] == restart_index) {')
+ print(' i += 2;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 2] == restart_index) {')
+ print(' i += 3;')
+ print(' goto restart;')
+ print(' }')
+ print(' if (in[i + 3] == restart_index) {')
+ print(' i += 4;')
+ print(' goto restart;')
+ print(' }')
if inpv == LAST:
do_quad( intype, outtype, 'out+j', 'i+2', 'i+0', 'i+1', 'i+3', inpv, outpv );
else:
do_quad( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+3', 'i+2', inpv, outpv );
- print ' }'
+ print(' }')
postamble()
def linesadj(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='linesadj')
- print ' for (i = start; i < (out_nr+start); i+=4) { '
+ print(' for (i = start; i < (out_nr+start); i+=4) { ')
do_lineadj( intype, outtype, 'out+i', 'i+0', 'i+1', 'i+2', 'i+3', inpv, outpv )
- print ' }'
+ print(' }')
postamble()
def linestripadj(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='linestripadj')
- print ' for (i = start, j = 0; j < out_nr; j+=4, i++) {'
+ print(' for (i = start, j = 0; j < out_nr; j+=4, i++) {')
do_lineadj( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+2', 'i+3', inpv, outpv )
- print ' }'
+ print(' }')
postamble()
def trisadj(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='trisadj')
- print ' for (i = start; i < (out_nr+start); i+=6) { '
+ print(' for (i = start; i < (out_nr+start); i+=6) { ')
do_triadj( intype, outtype, 'out+i', 'i+0', 'i+1', 'i+2', 'i+3',
'i+4', 'i+5', inpv, outpv )
- print ' }'
+ print(' }')
postamble()
def tristripadj(intype, outtype, inpv, outpv, pr):
preamble(intype, outtype, inpv, outpv, pr, prim='tristripadj')
- print ' for (i = start, j = 0; j < out_nr; i+=2, j+=6) { '
- print ' if (i % 4 == 0) {'
- print ' /* even triangle */'
+ print(' for (i = start, j = 0; j < out_nr; i+=2, j+=6) { ')
+ print(' if (i % 4 == 0) {')
+ print(' /* even triangle */')
do_triadj( intype, outtype, 'out+j',
'i+0', 'i+1', 'i+2', 'i+3', 'i+4', 'i+5', inpv, outpv )
- print ' } else {'
- print ' /* odd triangle */'
+ print(' } else {')
+ print(' /* odd triangle */')
do_triadj( intype, outtype, 'out+j',
'i+2', 'i-2', 'i+0', 'i+3', 'i+4', 'i+6', inpv, outpv )
- print ' }'
- print ' }'
+ print(' }')
+ print(' }')
postamble()
init(intype, outtype, inpv, outpv, pr, prim)
def emit_init():
- print 'void u_index_init( void )'
- print '{'
- print ' static int firsttime = 1;'
- print ' if (!firsttime) return;'
- print ' firsttime = 0;'
+ print('void u_index_init( void )')
+ print('{')
+ print(' static int firsttime = 1;')
+ print(' if (!firsttime) return;')
+ print(' firsttime = 0;')
emit_all_inits()
- print '}'
+ print('}')
def epilog():
- print '#include "indices/u_indices.c"'
+ print('#include "indices/u_indices.c"')
def main():
+from __future__ import print_function
+
copyright = '''
/*
* Copyright 2009 VMware, Inc.
def prolog():
- print '''/* File automatically generated by u_unfilled_gen.py */'''
- print copyright
- print r'''
+ print('''/* File automatically generated by u_unfilled_gen.py */''')
+ print(copyright)
+ print(r'''
/**
* @file
static u_generate_func generate_line[OUT_COUNT][PRIM_COUNT];
static u_translate_func translate_line[IN_COUNT][OUT_COUNT][PRIM_COUNT];
-'''
+''')
def vert( intype, outtype, v0 ):
if intype == GENERATE:
return '(' + outtype + ')in[' + v0 + ']'
def line( intype, outtype, ptr, v0, v1 ):
- print ' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';'
- print ' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';'
+ print(' (' + ptr + ')[0] = ' + vert( intype, outtype, v0 ) + ';')
+ print(' (' + ptr + ')[1] = ' + vert( intype, outtype, v1 ) + ';')
# XXX: have the opportunity here to avoid over-drawing shared lines in
# tristrips, fans, etc, by integrating this into the calling functions
return 'translate_' + prim + '_' + intype + '2' + outtype
def preamble(intype, outtype, prim):
- print 'static void ' + name( intype, outtype, prim ) + '('
+ print('static void ' + name( intype, outtype, prim ) + '(')
if intype != GENERATE:
- print ' const void * _in,'
- print ' unsigned start,'
+ print(' const void * _in,')
+ print(' unsigned start,')
if intype != GENERATE:
- print ' unsigned in_nr,'
- print ' unsigned out_nr,'
+ print(' unsigned in_nr,')
+ print(' unsigned out_nr,')
if intype != GENERATE:
- print ' unsigned restart_index,'
- print ' void *_out )'
- print '{'
+ print(' unsigned restart_index,')
+ print(' void *_out )')
+ print('{')
if intype != GENERATE:
- print ' const ' + intype + '*in = (const ' + intype + '*)_in;'
- print ' ' + outtype + ' *out = (' + outtype + '*)_out;'
- print ' unsigned i, j;'
- print ' (void)j;'
+ print(' const ' + intype + '*in = (const ' + intype + '*)_in;')
+ print(' ' + outtype + ' *out = (' + outtype + '*)_out;')
+ print(' unsigned i, j;')
+ print(' (void)j;')
def postamble():
- print '}'
+ print('}')
def tris(intype, outtype):
preamble(intype, outtype, prim='tris')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i+=3) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i+=3) { ')
do_tri( intype, outtype, 'out+j', 'i', 'i+1', 'i+2' );
- print ' }'
+ print(' }')
postamble()
def tristrip(intype, outtype):
preamble(intype, outtype, prim='tristrip')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i++) { ')
do_tri( intype, outtype, 'out+j', 'i', 'i+1/*+(i&1)*/', 'i+2/*-(i&1)*/' );
- print ' }'
+ print(' }')
postamble()
def trifan(intype, outtype):
preamble(intype, outtype, prim='trifan')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i++) { ')
do_tri( intype, outtype, 'out+j', '0', 'i+1', 'i+2' );
- print ' }'
+ print(' }')
postamble()
def polygon(intype, outtype):
preamble(intype, outtype, prim='polygon')
- print ' for (i = start, j = 0; j < out_nr; j+=2, i++) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=2, i++) { ')
line( intype, outtype, 'out+j', 'i', '(i+1)%(out_nr/2)' )
- print ' }'
+ print(' }')
postamble()
def quads(intype, outtype):
preamble(intype, outtype, prim='quads')
- print ' for (i = start, j = 0; j < out_nr; j+=8, i+=4) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=8, i+=4) { ')
do_quad( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+2', 'i+3' );
- print ' }'
+ print(' }')
postamble()
def quadstrip(intype, outtype):
preamble(intype, outtype, prim='quadstrip')
- print ' for (i = start, j = 0; j < out_nr; j+=8, i+=2) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=8, i+=2) { ')
do_quad( intype, outtype, 'out+j', 'i+2', 'i+0', 'i+1', 'i+3' );
- print ' }'
+ print(' }')
postamble()
def trisadj(intype, outtype):
preamble(intype, outtype, prim='trisadj')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i+=6) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i+=6) { ')
do_tri( intype, outtype, 'out+j', 'i', 'i+2', 'i+4' );
- print ' }'
+ print(' }')
postamble()
def tristripadj(intype, outtype):
preamble(intype, outtype, prim='tristripadj')
- print ' for (i = start, j = 0; j < out_nr; j+=6, i+=2) { '
+ print(' for (i = start, j = 0; j < out_nr; j+=6, i+=2) { ')
do_tri( intype, outtype, 'out+j', 'i', 'i+2', 'i+4' );
- print ' }'
+ print(' }')
postamble()
def init(intype, outtype, prim):
if intype == GENERATE:
- print ('generate_line[' +
+ print(('generate_line[' +
outtype_idx[outtype] +
'][' + longprim[prim] +
- '] = ' + name( intype, outtype, prim ) + ';')
+ '] = ' + name( intype, outtype, prim ) + ';'))
else:
- print ('translate_line[' +
+ print(('translate_line[' +
intype_idx[intype] +
'][' + outtype_idx[outtype] +
'][' + longprim[prim] +
- '] = ' + name( intype, outtype, prim ) + ';')
+ '] = ' + name( intype, outtype, prim ) + ';'))
def emit_all_inits():
init(intype, outtype, prim)
def emit_init():
- print 'void u_unfilled_init( void )'
- print '{'
- print ' static int firsttime = 1;'
- print ' if (!firsttime) return;'
- print ' firsttime = 0;'
+ print('void u_unfilled_init( void )')
+ print('{')
+ print(' static int firsttime = 1;')
+ print(' if (!firsttime) return;')
+ print(' firsttime = 0;')
emit_all_inits()
- print '}'
+ print('}')
def epilog():
- print '#include "indices/u_unfilled_indices.c"'
+ print('#include "indices/u_unfilled_indices.c"')
def main():
'''
+from __future__ import print_function
+
from u_format_parse import *
if format.nr_channels() <= 1:
func(format.le_channels, format.le_swizzles)
else:
- print '#ifdef PIPE_ARCH_BIG_ENDIAN'
+ print('#ifdef PIPE_ARCH_BIG_ENDIAN')
func(format.be_channels, format.be_swizzles)
- print '#else'
+ print('#else')
func(format.le_channels, format.le_swizzles)
- print '#endif'
+ print('#endif')
def generate_format_type(format):
'''Generate a structure that describes the format.'''
for channel in channels:
if channel.type == VOID:
if channel.size:
- print ' unsigned %s:%u;' % (channel.name, channel.size)
+ print(' unsigned %s:%u;' % (channel.name, channel.size))
elif channel.type == UNSIGNED:
- print ' unsigned %s:%u;' % (channel.name, channel.size)
+ print(' unsigned %s:%u;' % (channel.name, channel.size))
elif channel.type in (SIGNED, FIXED):
- print ' int %s:%u;' % (channel.name, channel.size)
+ print(' int %s:%u;' % (channel.name, channel.size))
elif channel.type == FLOAT:
if channel.size == 64:
- print ' double %s;' % (channel.name)
+ print(' double %s;' % (channel.name))
elif channel.size == 32:
- print ' float %s;' % (channel.name)
+ print(' float %s;' % (channel.name))
else:
- print ' unsigned %s:%u;' % (channel.name, channel.size)
+ print(' unsigned %s:%u;' % (channel.name, channel.size))
else:
assert 0
assert channel.size % 8 == 0 and is_pot(channel.size)
if channel.type == VOID:
if channel.size:
- print ' uint%u_t %s;' % (channel.size, channel.name)
+ print(' uint%u_t %s;' % (channel.size, channel.name))
elif channel.type == UNSIGNED:
- print ' uint%u_t %s;' % (channel.size, channel.name)
+ print(' uint%u_t %s;' % (channel.size, channel.name))
elif channel.type in (SIGNED, FIXED):
- print ' int%u_t %s;' % (channel.size, channel.name)
+ print(' int%u_t %s;' % (channel.size, channel.name))
elif channel.type == FLOAT:
if channel.size == 64:
- print ' double %s;' % (channel.name)
+ print(' double %s;' % (channel.name))
elif channel.size == 32:
- print ' float %s;' % (channel.name)
+ print(' float %s;' % (channel.name))
elif channel.size == 16:
- print ' uint16_t %s;' % (channel.name)
+ print(' uint16_t %s;' % (channel.name))
else:
assert 0
else:
assert 0
- print 'union util_format_%s {' % format.short_name()
+ print('union util_format_%s {' % format.short_name())
if format.block_size() in (8, 16, 32, 64):
- print ' uint%u_t value;' % (format.block_size(),)
+ print(' uint%u_t value;' % (format.block_size(),))
use_bitfields = False
for channel in format.le_channels:
if channel.size % 8 or not is_pot(channel.size):
use_bitfields = True
- print ' struct {'
+ print(' struct {')
if use_bitfields:
print_channels(format, generate_bitfields)
else:
print_channels(format, generate_full_fields)
- print ' } chan;'
- print '};'
- print
+ print(' } chan;')
+ print('};')
+ print()
def is_format_supported(format):
def unpack_from_bitmask(channels, swizzles):
depth = format.block_size()
- print ' uint%u_t value = *(const uint%u_t *)src;' % (depth, depth)
+ print(' uint%u_t value = *(const uint%u_t *)src;' % (depth, depth))
# Declare the intermediate variables
for i in range(format.nr_channels()):
src_channel = channels[i]
if src_channel.type == UNSIGNED:
- print ' uint%u_t %s;' % (depth, src_channel.name)
+ print(' uint%u_t %s;' % (depth, src_channel.name))
elif src_channel.type == SIGNED:
- print ' int%u_t %s;' % (depth, src_channel.name)
+ print(' int%u_t %s;' % (depth, src_channel.name))
# Compute the intermediate unshifted values
for i in range(format.nr_channels()):
value = None
if value is not None:
- print ' %s = %s;' % (src_channel.name, value)
+ print(' %s = %s;' % (src_channel.name, value))
# Convert, swizzle, and store final values
for i in range(4):
value = '0'
else:
assert False
- print ' dst[%u] = %s; /* %s */' % (i, value, 'rgba'[i])
+ print(' dst[%u] = %s; /* %s */' % (i, value, 'rgba'[i]))
def unpack_from_union(channels, swizzles):
- print ' union util_format_%s pixel;' % format.short_name()
- print ' memcpy(&pixel, src, sizeof pixel);'
+ print(' union util_format_%s pixel;' % format.short_name())
+ print(' memcpy(&pixel, src, sizeof pixel);')
for i in range(4):
swizzle = swizzles[i]
value = '0'
else:
assert False
- print ' dst[%u] = %s; /* %s */' % (i, value, 'rgba'[i])
+ print(' dst[%u] = %s; /* %s */' % (i, value, 'rgba'[i]))
if format.is_bitmask():
print_channels(format, unpack_from_bitmask)
inv_swizzle = inv_swizzles(swizzles)
depth = format.block_size()
- print ' uint%u_t value = 0;' % depth
+ print(' uint%u_t value = 0;' % depth)
for i in range(4):
dst_channel = channels[i]
else:
value = None
if value is not None:
- print ' value |= %s;' % (value)
+ print(' value |= %s;' % (value))
- print ' *(uint%u_t *)dst = value;' % depth
+ print(' *(uint%u_t *)dst = value;' % depth)
def pack_into_union(channels, swizzles):
inv_swizzle = inv_swizzles(swizzles)
- print ' union util_format_%s pixel;' % format.short_name()
+ print(' union util_format_%s pixel;' % format.short_name())
for i in range(4):
dst_channel = channels[i]
dst_channel, dst_native_type,
value,
dst_colorspace = dst_colorspace)
- print ' pixel.chan.%s = %s;' % (dst_channel.name, value)
+ print(' pixel.chan.%s = %s;' % (dst_channel.name, value))
- print ' memcpy(dst, &pixel, sizeof pixel);'
+ print(' memcpy(dst, &pixel, sizeof pixel);')
if format.is_bitmask():
print_channels(format, pack_into_bitmask)
name = format.short_name()
- print 'static inline void'
- print 'util_format_%s_unpack_%s(%s *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)' % (name, dst_suffix, dst_native_type)
- print '{'
+ print('static inline void')
+ print('util_format_%s_unpack_%s(%s *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)' % (name, dst_suffix, dst_native_type))
+ print('{')
if is_format_supported(format):
- print ' unsigned x, y;'
- print ' for(y = 0; y < height; y += %u) {' % (format.block_height,)
- print ' %s *dst = dst_row;' % (dst_native_type)
- print ' const uint8_t *src = src_row;'
- print ' for(x = 0; x < width; x += %u) {' % (format.block_width,)
+ print(' unsigned x, y;')
+ print(' for(y = 0; y < height; y += %u) {' % (format.block_height,))
+ print(' %s *dst = dst_row;' % (dst_native_type))
+ print(' const uint8_t *src = src_row;')
+ print(' for(x = 0; x < width; x += %u) {' % (format.block_width,))
generate_unpack_kernel(format, dst_channel, dst_native_type)
- print ' src += %u;' % (format.block_size() / 8,)
- print ' dst += 4;'
- print ' }'
- print ' src_row += src_stride;'
- print ' dst_row += dst_stride/sizeof(*dst_row);'
- print ' }'
-
- print '}'
- print
+ print(' src += %u;' % (format.block_size() / 8,))
+ print(' dst += 4;')
+ print(' }')
+ print(' src_row += src_stride;')
+ print(' dst_row += dst_stride/sizeof(*dst_row);')
+ print(' }')
+
+ print('}')
+ print()
def generate_format_pack(format, src_channel, src_native_type, src_suffix):
name = format.short_name()
- print 'static inline void'
- print 'util_format_%s_pack_%s(uint8_t *dst_row, unsigned dst_stride, const %s *src_row, unsigned src_stride, unsigned width, unsigned height)' % (name, src_suffix, src_native_type)
- print '{'
+ print('static inline void')
+ print('util_format_%s_pack_%s(uint8_t *dst_row, unsigned dst_stride, const %s *src_row, unsigned src_stride, unsigned width, unsigned height)' % (name, src_suffix, src_native_type))
+ print('{')
if is_format_supported(format):
- print ' unsigned x, y;'
- print ' for(y = 0; y < height; y += %u) {' % (format.block_height,)
- print ' const %s *src = src_row;' % (src_native_type)
- print ' uint8_t *dst = dst_row;'
- print ' for(x = 0; x < width; x += %u) {' % (format.block_width,)
+ print(' unsigned x, y;')
+ print(' for(y = 0; y < height; y += %u) {' % (format.block_height,))
+ print(' const %s *src = src_row;' % (src_native_type))
+ print(' uint8_t *dst = dst_row;')
+ print(' for(x = 0; x < width; x += %u) {' % (format.block_width,))
generate_pack_kernel(format, src_channel, src_native_type)
- print ' src += 4;'
- print ' dst += %u;' % (format.block_size() / 8,)
- print ' }'
- print ' dst_row += dst_stride;'
- print ' src_row += src_stride/sizeof(*src_row);'
- print ' }'
+ print(' src += 4;')
+ print(' dst += %u;' % (format.block_size() / 8,))
+ print(' }')
+ print(' dst_row += dst_stride;')
+ print(' src_row += src_stride/sizeof(*src_row);')
+ print(' }')
- print '}'
- print
+ print('}')
+ print()
def generate_format_fetch(format, dst_channel, dst_native_type, dst_suffix):
name = format.short_name()
- print 'static inline void'
- print 'util_format_%s_fetch_%s(%s *dst, const uint8_t *src, UNUSED unsigned i, UNUSED unsigned j)' % (name, dst_suffix, dst_native_type)
- print '{'
+ print('static inline void')
+ print('util_format_%s_fetch_%s(%s *dst, const uint8_t *src, UNUSED unsigned i, UNUSED unsigned j)' % (name, dst_suffix, dst_native_type))
+ print('{')
if is_format_supported(format):
generate_unpack_kernel(format, dst_channel, dst_native_type)
- print '}'
- print
+ print('}')
+ print()
def is_format_hand_written(format):
def generate(formats):
- print
- print '#include "pipe/p_compiler.h"'
- print '#include "u_math.h"'
- print '#include "u_half.h"'
- print '#include "u_format.h"'
- print '#include "u_format_other.h"'
- print '#include "util/format_srgb.h"'
- print '#include "u_format_yuv.h"'
- print '#include "u_format_zs.h"'
- print
+ print()
+ print('#include "pipe/p_compiler.h"')
+ print('#include "u_math.h"')
+ print('#include "u_half.h"')
+ print('#include "u_format.h"')
+ print('#include "u_format_other.h"')
+ print('#include "util/format_srgb.h"')
+ print('#include "u_format_yuv.h"')
+ print('#include "u_format_zs.h"')
+ print()
for format in formats:
if not is_format_hand_written(format):
+from __future__ import print_function
CopyRight = '''
/**************************************************************************
def write_format_table(formats):
- print '/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */'
- print
+ print('/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */')
+ print()
# This will print the copyright message on the top of this file
- print CopyRight.strip()
- print
- print '#include "u_format.h"'
- print '#include "u_format_bptc.h"'
- print '#include "u_format_s3tc.h"'
- print '#include "u_format_rgtc.h"'
- print '#include "u_format_latc.h"'
- print '#include "u_format_etc.h"'
- print
+ print(CopyRight.strip())
+ print()
+ print('#include "u_format.h"')
+ print('#include "u_format_bptc.h"')
+ print('#include "u_format_s3tc.h"')
+ print('#include "u_format_rgtc.h"')
+ print('#include "u_format_latc.h"')
+ print('#include "u_format_etc.h"')
+ print()
u_format_pack.generate(formats)
def do_channel_array(channels, swizzles):
- print " {"
+ print(" {")
for i in range(4):
channel = channels[i]
if i < 3:
else:
sep = ""
if channel.size:
- print " {%s, %s, %s, %u, %u}%s\t/* %s = %s */" % (type_map[channel.type], bool_map(channel.norm), bool_map(channel.pure), channel.size, channel.shift, sep, "xyzw"[i], channel.name)
+ print(" {%s, %s, %s, %u, %u}%s\t/* %s = %s */" % (type_map[channel.type], bool_map(channel.norm), bool_map(channel.pure), channel.size, channel.shift, sep, "xyzw"[i], channel.name))
else:
- print " {0, 0, 0, 0, 0}%s" % (sep,)
- print " },"
+ print(" {0, 0, 0, 0, 0}%s" % (sep,))
+ print(" },")
def do_swizzle_array(channels, swizzles):
- print " {"
+ print(" {")
for i in range(4):
swizzle = swizzles[i]
if i < 3:
comment = colorspace_channels_map[format.colorspace][i]
except (KeyError, IndexError):
comment = 'ignored'
- print " %s%s\t/* %s */" % (swizzle_map[swizzle], sep, comment)
- print " },"
+ print(" %s%s\t/* %s */" % (swizzle_map[swizzle], sep, comment))
+ print(" },")
for format in formats:
- print 'const struct util_format_description'
- print 'util_format_%s_description = {' % (format.short_name(),)
- print " %s," % (format.name,)
- print " \"%s\"," % (format.name,)
- print " \"%s\"," % (format.short_name(),)
- print " {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size())
- 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('const struct util_format_description')
+ print('util_format_%s_description = {' % (format.short_name(),))
+ print(" %s," % (format.name,))
+ print(" \"%s\"," % (format.name,))
+ print(" \"%s\"," % (format.short_name(),))
+ print(" {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size()))
+ 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()),))
u_format_pack.print_channels(format, do_channel_array)
u_format_pack.print_channels(format, do_swizzle_array)
- print " %s," % (colorspace_map(format.colorspace),)
+ print(" %s," % (colorspace_map(format.colorspace),))
access = True
if format.layout == 'astc':
access = False
if format.layout == 'etc' and format.short_name() != 'etc1_rgb8':
access = False
if format.colorspace != ZS and not format.is_pure_color() and access:
- print " &util_format_%s_unpack_rgba_8unorm," % format.short_name()
- print " &util_format_%s_pack_rgba_8unorm," % format.short_name()
+ print(" &util_format_%s_unpack_rgba_8unorm," % format.short_name())
+ print(" &util_format_%s_pack_rgba_8unorm," % format.short_name())
if format.layout == 's3tc' or format.layout == 'rgtc':
- print " &util_format_%s_fetch_rgba_8unorm," % format.short_name()
+ print(" &util_format_%s_fetch_rgba_8unorm," % format.short_name())
else:
- print " NULL, /* fetch_rgba_8unorm */"
- print " &util_format_%s_unpack_rgba_float," % format.short_name()
- print " &util_format_%s_pack_rgba_float," % format.short_name()
- print " &util_format_%s_fetch_rgba_float," % format.short_name()
+ print(" NULL, /* fetch_rgba_8unorm */")
+ print(" &util_format_%s_unpack_rgba_float," % format.short_name())
+ print(" &util_format_%s_pack_rgba_float," % format.short_name())
+ print(" &util_format_%s_fetch_rgba_float," % format.short_name())
else:
- print " NULL, /* unpack_rgba_8unorm */"
- print " NULL, /* pack_rgba_8unorm */"
- print " NULL, /* fetch_rgba_8unorm */"
- print " NULL, /* unpack_rgba_float */"
- print " NULL, /* pack_rgba_float */"
- print " NULL, /* fetch_rgba_float */"
+ print(" NULL, /* unpack_rgba_8unorm */")
+ print(" NULL, /* pack_rgba_8unorm */")
+ print(" NULL, /* fetch_rgba_8unorm */")
+ print(" NULL, /* unpack_rgba_float */")
+ print(" NULL, /* pack_rgba_float */")
+ print(" NULL, /* fetch_rgba_float */")
if format.has_depth():
- print " &util_format_%s_unpack_z_32unorm," % format.short_name()
- print " &util_format_%s_pack_z_32unorm," % format.short_name()
- print " &util_format_%s_unpack_z_float," % format.short_name()
- print " &util_format_%s_pack_z_float," % format.short_name()
+ print(" &util_format_%s_unpack_z_32unorm," % format.short_name())
+ print(" &util_format_%s_pack_z_32unorm," % format.short_name())
+ print(" &util_format_%s_unpack_z_float," % format.short_name())
+ print(" &util_format_%s_pack_z_float," % format.short_name())
else:
- print " NULL, /* unpack_z_32unorm */"
- print " NULL, /* pack_z_32unorm */"
- print " NULL, /* unpack_z_float */"
- print " NULL, /* pack_z_float */"
+ print(" NULL, /* unpack_z_32unorm */")
+ print(" NULL, /* pack_z_32unorm */")
+ print(" NULL, /* unpack_z_float */")
+ print(" NULL, /* pack_z_float */")
if format.has_stencil():
- print " &util_format_%s_unpack_s_8uint," % format.short_name()
- print " &util_format_%s_pack_s_8uint," % format.short_name()
+ print(" &util_format_%s_unpack_s_8uint," % format.short_name())
+ print(" &util_format_%s_pack_s_8uint," % format.short_name())
else:
- print " NULL, /* unpack_s_8uint */"
- print " NULL, /* pack_s_8uint */"
+ print(" NULL, /* unpack_s_8uint */")
+ print(" NULL, /* pack_s_8uint */")
if format.is_pure_unsigned():
- print " &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name()
- print " &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name()
- print " &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name()
- print " &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name()
- print " &util_format_%s_fetch_unsigned, /* fetch_rgba_uint */" % format.short_name()
- print " NULL /* fetch_rgba_sint */"
+ print(" &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name())
+ print(" &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name())
+ print(" &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name())
+ print(" &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name())
+ print(" &util_format_%s_fetch_unsigned, /* fetch_rgba_uint */" % format.short_name())
+ print(" NULL /* fetch_rgba_sint */")
elif format.is_pure_signed():
- print " &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name()
- print " &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name()
- print " &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name()
- print " &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name()
- print " NULL, /* fetch_rgba_uint */"
- print " &util_format_%s_fetch_signed /* fetch_rgba_sint */" % format.short_name()
+ print(" &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name())
+ print(" &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name())
+ print(" &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name())
+ print(" &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name())
+ print(" NULL, /* fetch_rgba_uint */")
+ print(" &util_format_%s_fetch_signed /* fetch_rgba_sint */" % format.short_name())
else:
- print " NULL, /* unpack_rgba_uint */"
- print " NULL, /* pack_rgba_uint */"
- print " NULL, /* unpack_rgba_sint */"
- print " NULL, /* pack_rgba_sint */"
- print " NULL, /* fetch_rgba_uint */"
- print " NULL /* fetch_rgba_sint */"
- print "};"
- print
+ print(" NULL, /* unpack_rgba_uint */")
+ print(" NULL, /* pack_rgba_uint */")
+ print(" NULL, /* unpack_rgba_sint */")
+ print(" NULL, /* pack_rgba_sint */")
+ print(" NULL, /* fetch_rgba_uint */")
+ print(" NULL /* fetch_rgba_sint */")
+ print("};")
+ print()
- print "const struct util_format_description *"
- print "util_format_description(enum pipe_format format)"
- print "{"
- print " if (format >= PIPE_FORMAT_COUNT) {"
- print " return NULL;"
- print " }"
- print
- print " switch (format) {"
+ print("const struct util_format_description *")
+ print("util_format_description(enum pipe_format format)")
+ print("{")
+ print(" if (format >= PIPE_FORMAT_COUNT) {")
+ print(" return NULL;")
+ print(" }")
+ print()
+ print(" switch (format) {")
for format in formats:
- print " case %s:" % format.name
- print " return &util_format_%s_description;" % (format.short_name(),)
- print " default:"
- print " return NULL;"
- print " }"
- print "}"
- print
+ print(" case %s:" % format.name)
+ print(" return &util_format_%s_description;" % (format.short_name(),))
+ print(" default:")
+ print(" return NULL;")
+ print(" }")
+ print("}")
+ print()
def main():
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+from __future__ import print_function
+
import argparse
import sys
def run():
import nir_algebraic # pylint: disable=import-error
- print '#include "ir3_nir.h"'
- print nir_algebraic.AlgebraicPass("ir3_nir_apply_trig_workarounds",
- trig_workarounds).render()
+ print('#include "ir3_nir.h"')
+ print(nir_algebraic.AlgebraicPass("ir3_nir_apply_trig_workarounds",
+ trig_workarounds).render())
if __name__ == '__main__':
+from __future__ import print_function
CopyRight = '''
/*
strings = StringTable()
strings_offsets = IntTable("int")
- print '/* This file is autogenerated by egd_tables.py from evergreend.h. Do not edit directly. */'
- print
- print CopyRight.strip()
- print '''
+ print('/* This file is autogenerated by egd_tables.py from evergreend.h. Do not edit directly. */')
+ print()
+ print(CopyRight.strip())
+ print('''
#ifndef EG_TABLES_H
#define EG_TABLES_H
unsigned name_offset;
unsigned op;
};
-'''
+''')
- print 'static const struct eg_packet3 packet3_table[] = {'
+ print('static const struct eg_packet3 packet3_table[] = {')
for pkt in packets:
- print '\t{%s, %s},' % (strings.add(pkt[5:]), pkt)
- print '};'
- print
+ print('\t{%s, %s},' % (strings.add(pkt[5:]), pkt))
+ print('};')
+ print()
- print 'static const struct eg_field egd_fields_table[] = {'
+ print('static const struct eg_field egd_fields_table[] = {')
fields_idx = 0
for reg in regs:
if len(reg.fields) and reg.own_fields:
- print '\t/* %s */' % (fields_idx)
+ print('\t/* %s */' % (fields_idx))
reg.fields_idx = fields_idx
while value[1] >= len(values_offsets):
values_offsets.append(-1)
values_offsets[value[1]] = strings.add(strip_prefix(value[0]))
- print '\t{%s, %s(~0u), %s, %s},' % (
+ print('\t{%s, %s(~0u), %s, %s},' % (
strings.add(field.name), field.s_name,
- len(values_offsets), strings_offsets.add(values_offsets))
+ len(values_offsets), strings_offsets.add(values_offsets)))
else:
- print '\t{%s, %s(~0u)},' % (strings.add(field.name), field.s_name)
+ print('\t{%s, %s(~0u)},' % (strings.add(field.name), field.s_name))
fields_idx += 1
- print '};'
- print
+ print('};')
+ print()
- print 'static const struct eg_reg egd_reg_table[] = {'
+ print('static const struct eg_reg egd_reg_table[] = {')
for reg in regs:
if len(reg.fields):
- print '\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
- len(reg.fields), reg.fields_idx if reg.own_fields else reg.fields_owner.fields_idx)
+ print('\t{%s, %s, %s, %s},' % (strings.add(reg.name), reg.r_name,
+ len(reg.fields), reg.fields_idx if reg.own_fields else reg.fields_owner.fields_idx))
else:
- print '\t{%s, %s},' % (strings.add(reg.name), reg.r_name)
- print '};'
- print
+ print('\t{%s, %s},' % (strings.add(reg.name), reg.r_name))
+ print('};')
+ print()
strings.emit(sys.stdout, "egd_strings")
- print
+ print()
strings_offsets.emit(sys.stdout, "egd_strings_offsets")
- print
- print '#endif'
+ print()
+ print('#endif')
def main():
# amplitude slightly. Apparently this also minimizes the error function,
# reducing the maximum error from 0.00006 to about 0.00003.
+from __future__ import print_function
+
import argparse
import sys
def run():
import nir_algebraic # pylint: disable=import-error
- print '#include "brw_nir.h"'
- print nir_algebraic.AlgebraicPass("brw_nir_apply_trig_workarounds",
- TRIG_WORKAROUNDS).render()
+ print('#include "brw_nir.h"')
+ print(nir_algebraic.AlgebraicPass("brw_nir_apply_trig_workarounds",
+ TRIG_WORKAROUNDS).render())
if __name__ == '__main__':
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import gl_XML, glX_XML
import string
compsize = self.size_call(f)
if compsize:
- print ' const GLuint compsize = %s;' % (compsize)
+ print(' const GLuint compsize = %s;' % (compsize))
if bias:
- print ' const GLuint cmdlen = %s - %u;' % (f.command_length(), bias)
+ print(' const GLuint cmdlen = %s - %u;' % (f.command_length(), bias))
else:
- print ' const GLuint cmdlen = %s;' % (f.command_length())
+ print(' const GLuint cmdlen = %s;' % (f.command_length()))
#print ''
return compsize
# Ian Romanick <idr@us.ibm.com>
# Jeremy Kolb <jkolb@brandeis.edu>
+from __future__ import print_function
+
import argparse
import gl_XML, glX_XML, glX_proto_common, license
return
def printRealHeader(self):
- print ''
- print '#include <GL/gl.h>'
- print '#include "indirect.h"'
- print '#include "glxclient.h"'
- print '#include "indirect_size.h"'
- print '#include "glapi.h"'
- print '#include <GL/glxproto.h>'
- print '#include <X11/Xlib-xcb.h>'
- print '#include <xcb/xcb.h>'
- print '#include <xcb/glx.h>'
- print '#include <limits.h>'
-
- print ''
+ print('')
+ print('#include <GL/gl.h>')
+ print('#include "indirect.h"')
+ print('#include "glxclient.h"')
+ print('#include "indirect_size.h"')
+ print('#include "glapi.h"')
+ print('#include <GL/glxproto.h>')
+ print('#include <X11/Xlib-xcb.h>')
+ print('#include <xcb/xcb.h>')
+ print('#include <xcb/glx.h>')
+ print('#include <limits.h>')
+
+ print('')
self.printFastcall()
self.printNoinline()
- print ''
-
- print 'static _X_INLINE int safe_add(int a, int b)'
- print '{'
- print ' if (a < 0 || b < 0) return -1;'
- print ' if (INT_MAX - a < b) return -1;'
- print ' return a + b;'
- print '}'
- print 'static _X_INLINE int safe_mul(int a, int b)'
- print '{'
- print ' if (a < 0 || b < 0) return -1;'
- print ' if (a == 0 || b == 0) return 0;'
- print ' if (a > INT_MAX / b) return -1;'
- print ' return a * b;'
- print '}'
- print 'static _X_INLINE int safe_pad(int a)'
- print '{'
- print ' int ret;'
- print ' if (a < 0) return -1;'
- print ' if ((ret = safe_add(a, 3)) < 0) return -1;'
- print ' return ret & (GLuint)~3;'
- print '}'
- print ''
-
- print '#ifndef __GNUC__'
- print '# define __builtin_expect(x, y) x'
- print '#endif'
- print ''
- print '/* If the size and opcode values are known at compile-time, this will, on'
- print ' * x86 at least, emit them with a single instruction.'
- print ' */'
- print '#define emit_header(dest, op, size) \\'
- print ' do { union { short s[2]; int i; } temp; \\'
- print ' temp.s[0] = (size); temp.s[1] = (op); \\'
- print ' *((int *)(dest)) = temp.i; } while(0)'
- print ''
- print """NOINLINE CARD32
+ print('')
+
+ print('static _X_INLINE int safe_add(int a, int b)')
+ print('{')
+ print(' if (a < 0 || b < 0) return -1;')
+ print(' if (INT_MAX - a < b) return -1;')
+ print(' return a + b;')
+ print('}')
+ print('static _X_INLINE int safe_mul(int a, int b)')
+ print('{')
+ print(' if (a < 0 || b < 0) return -1;')
+ print(' if (a == 0 || b == 0) return 0;')
+ print(' if (a > INT_MAX / b) return -1;')
+ print(' return a * b;')
+ print('}')
+ print('static _X_INLINE int safe_pad(int a)')
+ print('{')
+ print(' int ret;')
+ print(' if (a < 0) return -1;')
+ print(' if ((ret = safe_add(a, 3)) < 0) return -1;')
+ print(' return ret & (GLuint)~3;')
+ print('}')
+ print('')
+
+ print('#ifndef __GNUC__')
+ print('# define __builtin_expect(x, y) x')
+ print('#endif')
+ print('')
+ print('/* If the size and opcode values are known at compile-time, this will, on')
+ print(' * x86 at least, emit them with a single instruction.')
+ print(' */')
+ print('#define emit_header(dest, op, size) \\')
+ print(' do { union { short s[2]; int i; } temp; \\')
+ print(' temp.s[0] = (size); temp.s[1] = (op); \\')
+ print(' *((int *)(dest)) = temp.i; } while(0)')
+ print('')
+ print("""NOINLINE CARD32
__glXReadReply( Display *dpy, size_t size, void * dest, GLboolean reply_is_always_array )
{
xGLXSingleReply reply;
#define default_pixel_store_3D_size 36
#define default_pixel_store_4D (__glXDefaultPixelStore+0)
#define default_pixel_store_4D_size 36
-"""
+""")
for size in self.generic_sizes:
self.print_generic_function(size)
if func.has_different_protocol(n):
procs[n] = func.static_glx_name(n)
- print """
+ print("""
#ifdef GLX_INDIRECT_RENDERING
static const struct proc_pair
{
const char *name;
_glapi_proc proc;
-} proc_pairs[%d] = {""" % len(procs)
+} proc_pairs[%d] = {""" % len(procs))
names = procs.keys()
names.sort()
for i in xrange(len(names)):
comma = ',' if i < len(names) - 1 else ''
- print ' { "%s", (_glapi_proc) gl%s }%s' % (names[i], procs[names[i]], comma)
- print """};
+ print(' { "%s", (_glapi_proc) gl%s }%s' % (names[i], procs[names[i]], comma))
+ print("""};
static int
__indirect_get_proc_compare(const void *key, const void *memb)
}
#endif /* GLX_INDIRECT_RENDERING */
-"""
+""")
return
def printFunction(self, func, name):
footer = '}\n'
if func.glx_rop == ~0:
- print 'static %s' % (func.return_type)
- print '%s( unsigned opcode, unsigned dim, %s )' % (func.name, func.get_parameter_string())
- print '{'
+ print('static %s' % (func.return_type))
+ print('%s( unsigned opcode, unsigned dim, %s )' % (func.name, func.get_parameter_string()))
+ print('{')
else:
if func.has_different_protocol(name):
if func.return_type == "void":
ret_string = "return "
func_name = func.static_glx_name(name)
- print '#define %s %d' % (func.opcode_vendor_name(name), func.glx_vendorpriv)
- print '%s gl%s(%s)' % (func.return_type, func_name, func.get_parameter_string())
- print '{'
- print ' struct glx_context * const gc = __glXGetCurrentContext();'
- print ''
- print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)'
- print ' if (gc->isDirect) {'
- print ' const _glapi_proc *const disp_table = (_glapi_proc *)GET_DISPATCH();'
- print ' PFNGL%sPROC p =' % (name.upper())
- print ' (PFNGL%sPROC) disp_table[%d];' % (name.upper(), func.offset)
- print ' %sp(%s);' % (ret_string, func.get_called_parameter_string())
- print ' } else'
- print '#endif'
- print ' {'
+ print('#define %s %d' % (func.opcode_vendor_name(name), func.glx_vendorpriv))
+ print('%s gl%s(%s)' % (func.return_type, func_name, func.get_parameter_string()))
+ print('{')
+ print(' struct glx_context * const gc = __glXGetCurrentContext();')
+ print('')
+ print('#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)')
+ print(' if (gc->isDirect) {')
+ print(' const _glapi_proc *const disp_table = (_glapi_proc *)GET_DISPATCH();')
+ print(' PFNGL%sPROC p =' % (name.upper()))
+ print(' (PFNGL%sPROC) disp_table[%d];' % (name.upper(), func.offset))
+ print(' %sp(%s);' % (ret_string, func.get_called_parameter_string()))
+ print(' } else')
+ print('#endif')
+ print(' {')
footer = '}\n}\n'
else:
- print '#define %s %d' % (func.opcode_name(), func.opcode_value())
+ print('#define %s %d' % (func.opcode_name(), func.opcode_value()))
- print '%s __indirect_gl%s(%s)' % (func.return_type, name, func.get_parameter_string())
- print '{'
+ print('%s __indirect_gl%s(%s)' % (func.return_type, name, func.get_parameter_string()))
+ print('{')
if func.glx_rop != 0 or func.vectorequiv != None:
self.printSingleFunction(func, name)
pass
else:
- print "/* Missing GLX protocol for %s. */" % (name)
+ print("/* Missing GLX protocol for %s. */" % (name))
- print footer
+ print(footer)
return
def print_generic_function(self, n):
size = (n + 3) & ~3
- print """static FASTCALL NOINLINE void
+ print("""static FASTCALL NOINLINE void
generic_%u_byte( GLint rop, const void * ptr )
{
struct glx_context * const gc = __glXGetCurrentContext();
gc->pc += cmdlen;
if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
}
-""" % (n, size + 4, size)
+""" % (n, size + 4, size))
return
src_ptr = "&" + p.name
if p.is_padding:
- print '(void) memset((void *)(%s + %u), 0, %s);' \
- % (pc, p.offset + adjust, p.size_string() )
+ print('(void) memset((void *)(%s + %u), 0, %s);' \
+ % (pc, p.offset + adjust, p.size_string() ))
elif not extra_offset:
- print '(void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
- % (pc, p.offset + adjust, src_ptr, p.size_string() )
+ print('(void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
+ % (pc, p.offset + adjust, src_ptr, p.size_string() ))
else:
- print '(void) memcpy((void *)(%s + %u + %s), (void *)(%s), %s);' \
- % (pc, p.offset + adjust, extra_offset, src_ptr, p.size_string() )
+ print('(void) memcpy((void *)(%s + %u + %s), (void *)(%s), %s);' \
+ % (pc, p.offset + adjust, extra_offset, src_ptr, p.size_string() ))
def common_emit_args(self, f, pc, adjust, skip_vla):
extra_offset = None
self.common_emit_one_arg(param, pc, adjust, None)
if f.pad_after(param):
- print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset + param.size()) + adjust)
+ print('(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset + param.size()) + adjust))
else:
[dim, width, height, depth, extent] = param.get_dimensions()
dim_str = str(dim)
if param.is_padding:
- print '(void) memset((void *)(%s + %u), 0, %s);' \
- % (pc, (param.offset - 4) + adjust, param.size_string() )
+ print('(void) memset((void *)(%s + %u), 0, %s);' \
+ % (pc, (param.offset - 4) + adjust, param.size_string() ))
if param.img_null_flag:
if large:
- print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset - 4) + adjust)
+ print('(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset - 4) + adjust))
else:
- print '(void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (pc, (param.offset - 4) + adjust, param.name)
+ print('(void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (pc, (param.offset - 4) + adjust, param.name))
pixHeaderPtr = "%s + %u" % (pc, adjust)
else:
condition = 'compsize > 0'
- print 'if (%s) {' % (condition)
- print ' gc->fillImage(gc, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
- print '} else {'
- print ' (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (pixHeaderPtr, dim, dim)
- print '}'
+ print('if (%s) {' % (condition))
+ print(' gc->fillImage(gc, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr))
+ print('} else {')
+ print(' (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (pixHeaderPtr, dim, dim))
+ print('}')
else:
- print '__glXSendLargeImage(gc, compsize, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
+ print('__glXSendLargeImage(gc, compsize, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr))
return
if not op_name:
op_name = f.opcode_real_name()
- print 'const GLint op = %s;' % (op_name)
- print 'const GLuint cmdlenLarge = cmdlen + 4;'
- print 'GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);'
- print '(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);'
- print '(void) memcpy((void *)(pc + 4), (void *)(&op), 4);'
+ print('const GLint op = %s;' % (op_name))
+ print('const GLuint cmdlenLarge = cmdlen + 4;')
+ print('GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);')
+ print('(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);')
+ print('(void) memcpy((void *)(pc + 4), (void *)(&op), 4);')
return
def common_func_print_just_start(self, f, name):
- print ' struct glx_context * const gc = __glXGetCurrentContext();'
+ print(' struct glx_context * const gc = __glXGetCurrentContext();')
# The only reason that single and vendor private commands need
# a variable called 'dpy' is because they use the SyncHandle
if not f.glx_rop:
for p in f.parameterIterateOutputs():
if p.is_image() and (p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP"):
- print ' const __GLXattribute * const state = gc->client_state_private;'
+ print(' const __GLXattribute * const state = gc->client_state_private;')
break
- print ' Display * const dpy = gc->currentDpy;'
+ print(' Display * const dpy = gc->currentDpy;')
skip_condition = "dpy != NULL"
elif f.can_be_large:
skip_condition = "gc->currentDpy != NULL"
if f.return_type != 'void':
- print ' %s retval = (%s) 0;' % (f.return_type, f.return_type)
+ print(' %s retval = (%s) 0;' % (f.return_type, f.return_type))
if name != None and name not in f.glx_vendorpriv_names:
- print '#ifndef USE_XCB'
+ print('#ifndef USE_XCB')
self.emit_packet_size_calculation(f, 0)
if name != None and name not in f.glx_vendorpriv_names:
- print '#endif'
+ print('#endif')
if f.command_variable_length() != "":
- print " if (0%s < 0) {" % f.command_variable_length()
- print " __glXSetError(gc, GL_INVALID_VALUE);"
+ print(" if (0%s < 0) {" % f.command_variable_length())
+ print(" __glXSetError(gc, GL_INVALID_VALUE);")
if f.return_type != 'void':
- print " return 0;"
+ print(" return 0;")
else:
- print " return;"
- print " }"
+ print(" return;")
+ print(" }")
condition_list = []
for p in f.parameterIterateCounters():
condition_list.append( "%s >= 0" % (p.name) )
# 'counter' parameters cannot be negative
- print " if (%s < 0) {" % p.name
- print " __glXSetError(gc, GL_INVALID_VALUE);"
+ print(" if (%s < 0) {" % p.name)
+ print(" __glXSetError(gc, GL_INVALID_VALUE);")
if f.return_type != 'void':
- print " return 0;"
+ print(" return 0;")
else:
- print " return;"
- print " }"
+ print(" return;")
+ print(" }")
if skip_condition:
condition_list.append( skip_condition )
else:
skip_condition = "%s" % (condition_list.pop(0))
- print ' if (__builtin_expect(%s, 1)) {' % (skip_condition)
+ print(' if (__builtin_expect(%s, 1)) {' % (skip_condition))
return 1
else:
return 0
self.common_func_print_just_start(f, name)
if self.debug:
- print ' printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
+ print(' printf( "Enter %%s...\\n", "gl%s" );' % (f.name))
if name not in f.glx_vendorpriv_names:
# XCB specific:
- print '#ifdef USE_XCB'
+ print('#ifdef USE_XCB')
if self.debug:
- print ' printf("\\tUsing XCB.\\n");'
- print ' xcb_connection_t *c = XGetXCBConnection(dpy);'
- print ' (void) __glXFlushRenderBuffer(gc, gc->pc);'
+ print(' printf("\\tUsing XCB.\\n");')
+ print(' xcb_connection_t *c = XGetXCBConnection(dpy);')
+ print(' (void) __glXFlushRenderBuffer(gc, gc->pc);')
xcb_name = 'xcb_glx%s' % convertStringForXCB(name)
iparams=[]
xcb_request = '%s(%s)' % (xcb_name, ", ".join(["c", "gc->currentContextTag"] + iparams + extra_iparams))
if f.needs_reply():
- print ' %s_reply_t *reply = %s_reply(c, %s, NULL);' % (xcb_name, xcb_name, xcb_request)
+ print(' %s_reply_t *reply = %s_reply(c, %s, NULL);' % (xcb_name, xcb_name, xcb_request))
if output:
if output.is_image():
[dim, w, h, d, junk] = output.get_dimensions()
if dim < 2:
h = "1"
else:
- print ' if (%s == 0) { %s = 1; }' % (h, h)
+ print(' if (%s == 0) { %s = 1; }' % (h, h))
if dim < 3:
d = "1"
else:
- print ' if (%s == 0) { %s = 1; }' % (d, d)
+ print(' if (%s == 0) { %s = 1; }' % (d, d))
- print ' __glEmptyImage(gc, 3, %s, %s, %s, %s, %s, %s_data(reply), %s);' % (w, h, d, output.img_format, output.img_type, xcb_name, output.name)
+ print(' __glEmptyImage(gc, 3, %s, %s, %s, %s, %s, %s_data(reply), %s);' % (w, h, d, output.img_format, output.img_type, xcb_name, output.name))
else:
if f.reply_always_array:
- print ' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
+ print(' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string()))
else:
- print ' /* the XXX_data_length() xcb function name is misleading, it returns the number */'
- print ' /* of elements, not the length of the data part. A single element is embedded. */'
- print ' if (%s_data_length(reply) == 1)' % (xcb_name)
- print ' (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name)
- print ' else'
- print ' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
+ print(' /* the XXX_data_length() xcb function name is misleading, it returns the number */')
+ print(' /* of elements, not the length of the data part. A single element is embedded. */')
+ print(' if (%s_data_length(reply) == 1)' % (xcb_name))
+ print(' (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name))
+ print(' else')
+ print(' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string()))
if f.return_type != 'void':
- print ' retval = reply->ret_val;'
- print ' free(reply);'
+ print(' retval = reply->ret_val;')
+ print(' free(reply);')
else:
- print ' ' + xcb_request + ';'
- print '#else'
+ print(' ' + xcb_request + ';')
+ print('#else')
# End of XCB specific.
pc_decl = "(void)"
if name in f.glx_vendorpriv_names:
- print ' %s __glXSetupVendorRequest(gc, %s, %s, cmdlen);' % (pc_decl, f.opcode_real_name(), f.opcode_vendor_name(name))
+ print(' %s __glXSetupVendorRequest(gc, %s, %s, cmdlen);' % (pc_decl, f.opcode_real_name(), f.opcode_vendor_name(name)))
else:
- print ' %s __glXSetupSingleRequest(gc, %s, cmdlen);' % (pc_decl, f.opcode_name())
+ print(' %s __glXSetupSingleRequest(gc, %s, cmdlen);' % (pc_decl, f.opcode_name()))
self.common_emit_args(f, "pc", 0, 0)
for img in images:
if img.is_output:
o = f.command_fixed_length() - 4
- print ' *(int32_t *)(pc + %u) = 0;' % (o)
+ print(' *(int32_t *)(pc + %u) = 0;' % (o))
if img.img_format != "GL_COLOR_INDEX" or img.img_type != "GL_BITMAP":
- print ' * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o)
+ print(' * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o))
if f.img_reset:
- print ' * (int8_t *)(pc + %u) = %s;' % (o + 1, f.img_reset)
+ print(' * (int8_t *)(pc + %u) = %s;' % (o + 1, f.img_reset))
return_name = ''
if p.is_image():
[dim, w, h, d, junk] = p.get_dimensions()
if f.dimensions_in_reply:
- print " __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, p.img_format, p.img_type, p.name)
+ print(" __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, p.img_format, p.img_type, p.name))
else:
- print " __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, p.img_format, p.img_type, p.name)
+ print(" __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, p.img_format, p.img_type, p.name))
got_reply = 1
else:
# non-arrays) gives us this.
s = p.size() / p.get_element_count()
- print " %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, s, p.name, aa)
+ print(" %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, s, p.name, aa))
got_reply = 1
# read a NULL reply to get the return value.
if not got_reply:
- print " %s __glXReadReply(dpy, 0, NULL, GL_FALSE);" % (return_str)
+ print(" %s __glXReadReply(dpy, 0, NULL, GL_FALSE);" % (return_str))
elif self.debug:
# Only emit the extra glFinish call for functions
# that don't already require a reply from the server.
- print ' __indirect_glFinish();'
+ print(' __indirect_glFinish();')
if self.debug:
- print ' printf( "Exit %%s.\\n", "gl%s" );' % (name)
+ print(' printf( "Exit %%s.\\n", "gl%s" );' % (name))
- print ' UnlockDisplay(dpy); SyncHandle();'
+ print(' UnlockDisplay(dpy); SyncHandle();')
if name not in f.glx_vendorpriv_names:
- print '#endif /* USE_XCB */'
+ print('#endif /* USE_XCB */')
- print ' }'
- print ' return%s;' % (return_name)
+ print(' }')
+ print(' return%s;' % (return_name))
return
if f.pad_after(param):
p_string += ", 1"
- print ' %s(%s, %u%s );' % (self.pixel_stubs[f.name] , f.opcode_name(), dim, p_string)
+ print(' %s(%s, %u%s );' % (self.pixel_stubs[f.name] , f.opcode_name(), dim, p_string))
return
if f.can_be_large:
- print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
- print ' if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
- print ' (void) __glXFlushRenderBuffer(gc, gc->pc);'
- print ' }'
+ print('if (cmdlen <= gc->maxSmallRenderCommandSize) {')
+ print(' if ( (gc->pc + cmdlen) > gc->bufEnd ) {')
+ print(' (void) __glXFlushRenderBuffer(gc, gc->pc);')
+ print(' }')
if f.glx_rop == ~0:
opcode = "opcode"
else:
opcode = f.opcode_real_name()
- print 'emit_header(gc->pc, %s, cmdlen);' % (opcode)
+ print('emit_header(gc->pc, %s, cmdlen);' % (opcode))
self.pixel_emit_args( f, "gc->pc", 0 )
- print 'gc->pc += cmdlen;'
- print 'if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
+ print('gc->pc += cmdlen;')
+ print('if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }')
if f.can_be_large:
- print '}'
- print 'else {'
+ print('}')
+ print('else {')
self.large_emit_begin(f, opcode)
self.pixel_emit_args(f, "pc", 1)
- print '}'
+ print('}')
- if trailer: print trailer
+ if trailer: print(trailer)
return
if p.is_pointer():
cmdlen = f.command_fixed_length()
if cmdlen in self.generic_sizes:
- print ' generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name)
+ print(' generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name))
return
if self.common_func_print_just_start(f, None):
trailer = None
if self.debug:
- print 'printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
+ print('printf( "Enter %%s...\\n", "gl%s" );' % (f.name))
if f.can_be_large:
- print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
- print ' if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
- print ' (void) __glXFlushRenderBuffer(gc, gc->pc);'
- print ' }'
+ print('if (cmdlen <= gc->maxSmallRenderCommandSize) {')
+ print(' if ( (gc->pc + cmdlen) > gc->bufEnd ) {')
+ print(' (void) __glXFlushRenderBuffer(gc, gc->pc);')
+ print(' }')
- print 'emit_header(gc->pc, %s, cmdlen);' % (f.opcode_real_name())
+ print('emit_header(gc->pc, %s, cmdlen);' % (f.opcode_real_name()))
self.common_emit_args(f, "gc->pc", 4, 0)
- print 'gc->pc += cmdlen;'
- print 'if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
+ print('gc->pc += cmdlen;')
+ print('if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }')
if f.can_be_large:
- print '}'
- print 'else {'
+ print('}')
+ print('else {')
self.large_emit_begin(f)
self.common_emit_args(f, "pc", 8, 1)
p = f.variable_length_parameter()
- print ' __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (p.offset + 8, p.name, p.size_string())
- print '}'
+ print(' __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (p.offset + 8, p.name, p.size_string()))
+ print('}')
if self.debug:
- print '__indirect_glFinish();'
- print 'printf( "Exit %%s.\\n", "gl%s" );' % (f.name)
+ print('__indirect_glFinish();')
+ print('printf( "Exit %%s.\\n", "gl%s" );' % (f.name))
- if trailer: print trailer
+ if trailer: print(trailer)
return
def printRealHeader(self):
- print """/**
+ print("""/**
* \\file indirect_init.c
* Initialize indirect rendering dispatch table.
*
table[i] = (_glapi_proc) NoOp;
}
- /* now, initialize the entries we understand */"""
+ /* now, initialize the entries we understand */""")
def printRealFooter(self):
- print """
+ print("""
return (struct _glapi_table *) table;
}
#endif
-"""
+""")
return
for func in api.functionIterateByCategory(name):
if func.client_supported_for_indirect():
if preamble:
- print preamble
+ print(preamble)
preamble = None
if func.is_abi():
- print ' table[{offset}] = (_glapi_proc) __indirect_gl{name};'.format(name = func.name, offset = func.offset)
+ print(' table[{offset}] = (_glapi_proc) __indirect_gl{name};'.format(name = func.name, offset = func.offset))
else:
- print ' o = _glapi_get_proc_offset("gl{0}");'.format(func.name)
- print ' assert(o > 0);'
- print ' table[o] = (_glapi_proc) __indirect_gl{0};'.format(func.name)
+ print(' o = _glapi_get_proc_offset("gl{0}");'.format(func.name))
+ print(' assert(o > 0);')
+ print(' table[o] = (_glapi_proc) __indirect_gl{0};'.format(func.name))
return
def printRealHeader(self):
- print """/**
+ print("""/**
* \\file
* Prototypes for indirect rendering functions.
*
* \\author Kevin E. Martin <kevin@precisioninsight.com>
* \\author Ian Romanick <idr@us.ibm.com>
*/
-"""
+""")
self.printFastcall()
self.printNoinline()
- print """
+ print("""
#include <X11/Xfuncproto.h>
#include "glxclient.h"
extern _X_HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
struct glx_context * gc, GLint code, GLint vop, GLint cmdlen );
-"""
+""")
def printBody(self, api):
for func in api.functionIterateGlx():
params = func.get_parameter_string()
- print 'extern _X_HIDDEN %s __indirect_gl%s(%s);' % (func.return_type, func.name, params)
+ print('extern _X_HIDDEN %s __indirect_gl%s(%s);' % (func.return_type, func.name, params))
for n in func.entry_points:
if func.has_different_protocol(n):
asdf = func.static_glx_name(n)
if asdf not in func.static_entry_points:
- print 'extern _X_HIDDEN %s gl%s(%s);' % (func.return_type, asdf, params)
+ print('extern _X_HIDDEN %s gl%s(%s);' % (func.return_type, asdf, params))
# give it a easy-to-remember name
if func.client_handcode:
- print '#define gl_dispatch_stub_%s gl%s' % (n, asdf)
+ print('#define gl_dispatch_stub_%s gl%s' % (n, asdf))
else:
- print 'GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params)
+ print('GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params))
break
- print ''
- print '#ifdef GLX_INDIRECT_RENDERING'
- print 'extern _X_HIDDEN void (*__indirect_get_proc_address(const char *name))(void);'
- print '#endif'
+ print('')
+ print('#ifdef GLX_INDIRECT_RENDERING')
+ print('extern _X_HIDDEN void (*__indirect_get_proc_address(const char *name))(void);')
+ print('#endif')
def _parser():
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import sys, string
masked_count[i] = c
- print ' static const GLushort a[%u] = {' % (mask + 1)
+ print(' static const GLushort a[%u] = {' % (mask + 1))
for e in masked_enums:
- print ' %s, ' % (masked_enums[e])
- print ' };'
+ print(' %s, ' % (masked_enums[e]))
+ print(' };')
- print ' static const GLubyte b[%u] = {' % (mask + 1)
+ print(' static const GLubyte b[%u] = {' % (mask + 1))
for c in masked_count:
- print ' %u, ' % (masked_count[c])
- print ' };'
+ print(' %u, ' % (masked_count[c]))
+ print(' };')
- print ' const unsigned idx = (e & 0x%02xU);' % (mask)
- print ''
- print ' return (e == a[idx]) ? (GLint) b[idx] : 0;'
+ print(' const unsigned idx = (e & 0x%02xU);' % (mask))
+ print('')
+ print(' return (e == a[idx]) ? (GLint) b[idx] : 0;')
return 1;
else:
return 0;
"""Emit the body of the __gl*_size function using a
switch-statement."""
- print ' switch( e ) {'
+ print(' switch( e ) {')
for c in sorted(self.count):
for e in self.count[c]:
for k in keys:
j = list[k]
if first:
- print ' case GL_%s:' % (j)
+ print(' case GL_%s:' % (j))
first = 0
else:
- print '/* case GL_%s:*/' % (j)
+ print('/* case GL_%s:*/' % (j))
if c == -1:
- print ' return __gl%s_variable_size( e );' % (name)
+ print(' return __gl%s_variable_size( e );' % (name))
else:
- print ' return %u;' % (c)
+ print(' return %u;' % (c))
- print ' default: return 0;'
- print ' }'
+ print(' default: return 0;')
+ print(' }')
def Print(self, name):
- print '_X_INTERNAL PURE FASTCALL GLint'
- print '__gl%s_size( GLenum e )' % (name)
- print '{'
+ print('_X_INTERNAL PURE FASTCALL GLint')
+ print('__gl%s_size( GLenum e )' % (name))
+ print('{')
if not self.PrintUsingTable():
self.PrintUsingSwitch(name)
- print '}'
- print ''
+ print('}')
+ print('')
class glx_server_enum_function(glx_enum_function):
fixup.append( p.name )
- print ' GLsizei compsize;'
- print ''
+ print(' GLsizei compsize;')
+ print('')
printer.common_emit_fixups(fixup)
- print ''
- print ' compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ","))
+ print('')
+ print(' compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ",")))
p = f.variable_length_parameter()
- print ' return safe_pad(%s);' % (p.size_string())
+ print(' return safe_pad(%s);' % (p.size_string()))
- print '}'
- print ''
+ print('}')
+ print('')
class PrintGlxSizeStubs_common(gl_XML.gl_print_base):
class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common):
def printRealHeader(self):
- print ''
- print '#include <X11/Xfuncproto.h>'
- print '#include <GL/gl.h>'
+ print('')
+ print('#include <X11/Xfuncproto.h>')
+ print('#include <GL/gl.h>')
if self.emit_get:
- print '#include "indirect_size_get.h"'
- print '#include "glxserver.h"'
- print '#include "indirect_util.h"'
+ print('#include "indirect_size_get.h"')
+ print('#include "glxserver.h"')
+ print('#include "indirect_util.h"')
- print '#include "indirect_size.h"'
+ print('#include "indirect_size.h"')
- print ''
+ print('')
self.printPure()
- print ''
+ print('')
self.printFastcall()
- print ''
- print ''
- print '#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS'
- print '# define ALIAS2(from,to) \\'
- print ' _X_INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
- print ' __attribute__ ((alias( # to )));'
- print '# define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )'
- print '#else'
- print '# define ALIAS(from,to) \\'
- print ' _X_INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
- print ' { return __gl ## to ## _size( e ); }'
- print '#endif'
- print ''
- print ''
+ print('')
+ print('')
+ print('#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS')
+ print('# define ALIAS2(from,to) \\')
+ print(' _X_INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\')
+ print(' __attribute__ ((alias( # to )));')
+ print('# define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )')
+ print('#else')
+ print('# define ALIAS(from,to) \\')
+ print(' _X_INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\')
+ print(' { return __gl ## to ## _size( e ); }')
+ print('#endif')
+ print('')
+ print('')
def printBody(self, api):
for [alias_name, real_name] in aliases:
- print 'ALIAS( %s, %s )' % (alias_name, real_name)
+ print('ALIAS( %s, %s )' % (alias_name, real_name))
class PrintGlxSizeStubs_h(PrintGlxSizeStubs_common):
def printRealHeader(self):
- print """/**
+ print("""/**
* \\file
* Prototypes for functions used to determine the number of data elements in
* various GLX protocol messages.
*
* \\author Ian Romanick <idr@us.ibm.com>
*/
-"""
- print '#include <X11/Xfuncproto.h>'
- print ''
+""")
+ print('#include <X11/Xfuncproto.h>')
+ print('')
self.printPure();
- print ''
+ print('')
self.printFastcall();
- print ''
+ print('')
def printBody(self, api):
continue
if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
- print 'extern _X_INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (func.name)
+ print('extern _X_INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (func.name))
class PrintGlxReqSize_common(gl_XML.gl_print_base):
def printRealHeader(self):
- print '#include <X11/Xfuncproto.h>'
- print ''
+ print('#include <X11/Xfuncproto.h>')
+ print('')
self.printPure()
- print ''
+ print('')
def printBody(self, api):
for func in api.functionIterateGlx():
if not func.ignore and func.has_variable_size_request():
- print 'extern PURE _X_HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap, int reqlen);' % (func.name)
+ print('extern PURE _X_HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap, int reqlen);' % (func.name))
class PrintGlxReqSize_c(PrintGlxReqSize_common):
def printRealHeader(self):
- print ''
- print '#include <GL/gl.h>'
- print '#include "glxserver.h"'
- print '#include "glxbyteorder.h"'
- print '#include "indirect_size.h"'
- print '#include "indirect_reqsize.h"'
- print ''
- print '#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS'
- print '# define ALIAS2(from,to) \\'
- print ' GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \\'
- print ' __attribute__ ((alias( # to )));'
- print '# define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )'
- print '#else'
- print '# define ALIAS(from,to) \\'
- print ' GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \\'
- print ' { return __glX ## to ## ReqSize( pc, swap, reqlen ); }'
- print '#endif'
- print ''
- print ''
+ print('')
+ print('#include <GL/gl.h>')
+ print('#include "glxserver.h"')
+ print('#include "glxbyteorder.h"')
+ print('#include "indirect_size.h"')
+ print('#include "indirect_reqsize.h"')
+ print('')
+ print('#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS')
+ print('# define ALIAS2(from,to) \\')
+ print(' GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \\')
+ print(' __attribute__ ((alias( # to )));')
+ print('# define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )')
+ print('#else')
+ print('# define ALIAS(from,to) \\')
+ print(' GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \\')
+ print(' { return __glX ## to ## ReqSize( pc, swap, reqlen ); }')
+ print('#endif')
+ print('')
+ print('')
def printBody(self, api):
for [alias_name, real_name] in aliases:
- print 'ALIAS( %s, %s )' % (alias_name, real_name)
+ print('ALIAS( %s, %s )' % (alias_name, real_name))
return
"""Utility function to emit conditional byte-swaps."""
if fixup:
- print ' if (swap) {'
+ print(' if (swap) {')
for name in fixup:
- print ' %s = bswap_32(%s);' % (name, name)
- print ' }'
+ print(' %s = bswap_32(%s);' % (name, name))
+ print(' }')
return
offset = p.offset
dst = p.string()
src = '(%s *)' % (p.type_string())
- print '%-18s = *%11s(%s + %u);' % (dst, src, pc, offset + adjust);
+ print('%-18s = *%11s(%s + %u);' % (dst, src, pc, offset + adjust));
return
def common_func_print_just_header(self, f):
- print 'int'
- print '__glX%sReqSize( const GLbyte * pc, Bool swap, int reqlen )' % (f.name)
- print '{'
+ print('int')
+ print('__glX%sReqSize( const GLbyte * pc, Bool swap, int reqlen )' % (f.name))
+ print('{')
def printPixelFunction(self, f):
f.offset_of( f.parameters[0].name )
[dim, w, h, d, junk] = f.get_images()[0].get_dimensions()
- print ' GLint row_length = * (GLint *)(pc + 4);'
+ print(' GLint row_length = * (GLint *)(pc + 4);')
if dim < 3:
fixup = ['row_length', 'skip_rows', 'alignment']
- print ' GLint image_height = 0;'
- print ' GLint skip_images = 0;'
- print ' GLint skip_rows = * (GLint *)(pc + 8);'
- print ' GLint alignment = * (GLint *)(pc + 16);'
+ print(' GLint image_height = 0;')
+ print(' GLint skip_images = 0;')
+ print(' GLint skip_rows = * (GLint *)(pc + 8);')
+ print(' GLint alignment = * (GLint *)(pc + 16);')
else:
fixup = ['row_length', 'image_height', 'skip_rows', 'skip_images', 'alignment']
- print ' GLint image_height = * (GLint *)(pc + 8);'
- print ' GLint skip_rows = * (GLint *)(pc + 16);'
- print ' GLint skip_images = * (GLint *)(pc + 20);'
- print ' GLint alignment = * (GLint *)(pc + 32);'
+ print(' GLint image_height = * (GLint *)(pc + 8);')
+ print(' GLint skip_rows = * (GLint *)(pc + 16);')
+ print(' GLint skip_images = * (GLint *)(pc + 20);')
+ print(' GLint alignment = * (GLint *)(pc + 32);')
img = f.images[0]
for p in f.parameterIterateGlxSend():
self.common_emit_one_arg(p, "pc", 0)
fixup.append( p.name )
- print ''
+ print('')
self.common_emit_fixups(fixup)
if img.img_null_flag:
- print ''
- print ' if (*(CARD32 *) (pc + %s))' % (img.offset - 4)
- print ' return 0;'
-
- print ''
- print ' return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (img.img_format, img.img_type, img.img_target, w, h, d )
- print ' image_height, row_length, skip_images,'
- print ' skip_rows, alignment);'
- print '}'
- print ''
+ print('')
+ print(' if (*(CARD32 *) (pc + %s))' % (img.offset - 4))
+ print(' return 0;')
+
+ print('')
+ print(' return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (img.img_format, img.img_type, img.img_target, w, h, d ))
+ print(' image_height, row_length, skip_images,')
+ print(' skip_rows, alignment);')
+ print('}')
+ print('')
return
self.common_emit_one_arg(p, "pc", 0)
- print ''
+ print('')
self.common_emit_fixups(fixup)
- print ''
+ print('')
- print ' return safe_pad(%s);' % (size)
- print '}'
- print ''
+ print(' return safe_pad(%s);' % (size))
+ print('}')
+ print('')
return alias
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import license
def printRealHeader(self):
- print '#ifdef __arch64__'
- print '#define GL_OFF(N)\t((N) * 8)'
- print '#define GL_LL\t\tldx'
- print '#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)'
- print '#define GL_STACK_SIZE\t128'
- print '#else'
- print '#define GL_OFF(N)\t((N) * 4)'
- print '#define GL_LL\t\tld'
- print '#define GL_TIE_LD(SYM)\t%tie_ld(SYM)'
- print '#define GL_STACK_SIZE\t64'
- print '#endif'
- print ''
- print '#define GLOBL_FN(x) .globl x ; .type x, @function'
- print '#define HIDDEN(x) .hidden x'
- print ''
- print '\t.register %g2, #scratch'
- print '\t.register %g3, #scratch'
- print ''
- print '\t.text'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_icache_flush)'
- print '\tHIDDEN(__glapi_sparc_icache_flush)'
- print '\t.type\t__glapi_sparc_icache_flush, @function'
- print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */'
- print '\tflush\t%o0'
- print '\tretl'
- print '\t nop'
- print ''
- print '\t.align\t32'
- print ''
- print '\t.type\t__glapi_sparc_get_pc, @function'
- print '__glapi_sparc_get_pc:'
- print '\tretl'
- print '\t add\t%o7, %g2, %g2'
- print '\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_get_dispatch)'
- print '\tHIDDEN(__glapi_sparc_get_dispatch)'
- print '__glapi_sparc_get_dispatch:'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
- print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
- print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
- print '\tretl'
- print '\t mov\t%g2, %o0'
- print ''
- print '\t.data'
- print '\t.align\t32'
- print ''
- print '\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */'
- print '\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */'
- print '\tGLOBL_FN(__glapi_sparc_tls_stub)'
- print '\tHIDDEN(__glapi_sparc_tls_stub)'
- print '__glapi_sparc_tls_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsrl\t%g3, 10, %g3'
- print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
- print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
- print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
- print '\tGL_LL\t[%g7+%g2], %g1'
- print '\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#elif defined(HAVE_PTHREAD)'
- print ''
- print '\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */'
- print '\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */'
- print '\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */'
- print '\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */'
- print '\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */'
- print '\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */'
- print ''
- print '\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */'
- print '\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */'
- print ''
- print '\t.data'
- print '\t.align\t32'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_pthread_stub)'
- print '\tHIDDEN(__glapi_sparc_pthread_stub)'
- print '__glapi_sparc_pthread_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsethi\t%hi(_glapi_Dispatch), %g1'
- print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
- print '\tsrl\t%g3, 10, %g3'
- print '\tGL_LL\t[%g2+%g1], %g2'
- print '\tGL_LL\t[%g2], %g1'
- print '\tcmp\t%g1, 0'
- print '\tbe\t2f'
- print '\t nop'
- print '1:\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '2:\tsave\t%sp, GL_STACK_SIZE, %sp'
- print '\tmov\t%g3, %l0'
- print '\tcall\t_glapi_get_dispatch'
- print '\t nop'
- print '\tmov\t%o0, %g1'
- print '\tmov\t%l0, %g3'
- print '\tba\t1b'
- print '\t restore %g0, %g0, %g0'
- print '\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_pthread_stub;\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#else /* Non-threaded version. */'
- print ''
- print '\t.type __glapi_sparc_nothread_stub, @function'
- print '__glapi_sparc_nothread_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsrl\t%g3, 10, %g3'
- print '\tsethi\t%hi(_glapi_Dispatch), %g1'
- print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
- print '\tGL_LL\t[%g2+%g1], %g2'
- print '\tGL_LL\t[%g2], %g1'
- print '\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_nothread_stub;\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#endif'
- print ''
- print '#define GL_STUB_ALIAS(fn, alias) \\'
- print ' .globl fn; \\'
- print ' .set fn, alias'
- print ''
- print '\t.text'
- print '\t.align\t32'
- print ''
- print '\t.globl\tgl_dispatch_functions_start'
- print '\tHIDDEN(gl_dispatch_functions_start)'
- print 'gl_dispatch_functions_start:'
- print ''
+ print('#ifdef __arch64__')
+ print('#define GL_OFF(N)\t((N) * 8)')
+ print('#define GL_LL\t\tldx')
+ print('#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)')
+ print('#define GL_STACK_SIZE\t128')
+ print('#else')
+ print('#define GL_OFF(N)\t((N) * 4)')
+ print('#define GL_LL\t\tld')
+ print('#define GL_TIE_LD(SYM)\t%tie_ld(SYM)')
+ print('#define GL_STACK_SIZE\t64')
+ print('#endif')
+ print('')
+ print('#define GLOBL_FN(x) .globl x ; .type x, @function')
+ print('#define HIDDEN(x) .hidden x')
+ print('')
+ print('\t.register %g2, #scratch')
+ print('\t.register %g3, #scratch')
+ print('')
+ print('\t.text')
+ print('')
+ print('\tGLOBL_FN(__glapi_sparc_icache_flush)')
+ print('\tHIDDEN(__glapi_sparc_icache_flush)')
+ print('\t.type\t__glapi_sparc_icache_flush, @function')
+ print('__glapi_sparc_icache_flush: /* %o0 = insn_addr */')
+ print('\tflush\t%o0')
+ print('\tretl')
+ print('\t nop')
+ print('')
+ print('\t.align\t32')
+ print('')
+ print('\t.type\t__glapi_sparc_get_pc, @function')
+ print('__glapi_sparc_get_pc:')
+ print('\tretl')
+ print('\t add\t%o7, %g2, %g2')
+ print('\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc')
+ print('')
+ print('#ifdef GLX_USE_TLS')
+ print('')
+ print('\tGLOBL_FN(__glapi_sparc_get_dispatch)')
+ print('\tHIDDEN(__glapi_sparc_get_dispatch)')
+ print('__glapi_sparc_get_dispatch:')
+ print('\tmov\t%o7, %g1')
+ print('\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2')
+ print('\tcall\t__glapi_sparc_get_pc')
+ print('\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2')
+ print('\tmov\t%g1, %o7')
+ print('\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1')
+ print('\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1')
+ print('\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)')
+ print('\tretl')
+ print('\t mov\t%g2, %o0')
+ print('')
+ print('\t.data')
+ print('\t.align\t32')
+ print('')
+ print('\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */')
+ print('\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */')
+ print('\tGLOBL_FN(__glapi_sparc_tls_stub)')
+ print('\tHIDDEN(__glapi_sparc_tls_stub)')
+ print('__glapi_sparc_tls_stub: /* Call offset in %g3 */')
+ print('\tmov\t%o7, %g1')
+ print('\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2')
+ print('\tcall\t__glapi_sparc_get_pc')
+ print('\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2')
+ print('\tmov\t%g1, %o7')
+ print('\tsrl\t%g3, 10, %g3')
+ print('\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1')
+ print('\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1')
+ print('\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)')
+ print('\tGL_LL\t[%g7+%g2], %g1')
+ print('\tGL_LL\t[%g1 + %g3], %g1')
+ print('\tjmp\t%g1')
+ print('\t nop')
+ print('\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub')
+ print('')
+ print('#define GL_STUB(fn, off)\t\t\t\t\\')
+ print('\tGLOBL_FN(fn);\t\t\t\t\t\\')
+ print('fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\')
+ print('\t sethi\tGL_OFF(off), %g3;\t\t\t\\')
+ print('\t.size\tfn,.-fn;')
+ print('')
+ print('#elif defined(HAVE_PTHREAD)')
+ print('')
+ print('\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */')
+ print('\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */')
+ print('\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */')
+ print('\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */')
+ print('\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */')
+ print('\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */')
+ print('')
+ print('\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */')
+ print('\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */')
+ print('')
+ print('\t.data')
+ print('\t.align\t32')
+ print('')
+ print('\tGLOBL_FN(__glapi_sparc_pthread_stub)')
+ print('\tHIDDEN(__glapi_sparc_pthread_stub)')
+ print('__glapi_sparc_pthread_stub: /* Call offset in %g3 */')
+ print('\tmov\t%o7, %g1')
+ print('\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2')
+ print('\tcall\t__glapi_sparc_get_pc')
+ print('\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2')
+ print('\tmov\t%g1, %o7')
+ print('\tsethi\t%hi(_glapi_Dispatch), %g1')
+ print('\tor\t%g1, %lo(_glapi_Dispatch), %g1')
+ print('\tsrl\t%g3, 10, %g3')
+ print('\tGL_LL\t[%g2+%g1], %g2')
+ print('\tGL_LL\t[%g2], %g1')
+ print('\tcmp\t%g1, 0')
+ print('\tbe\t2f')
+ print('\t nop')
+ print('1:\tGL_LL\t[%g1 + %g3], %g1')
+ print('\tjmp\t%g1')
+ print('\t nop')
+ print('2:\tsave\t%sp, GL_STACK_SIZE, %sp')
+ print('\tmov\t%g3, %l0')
+ print('\tcall\t_glapi_get_dispatch')
+ print('\t nop')
+ print('\tmov\t%o0, %g1')
+ print('\tmov\t%l0, %g3')
+ print('\tba\t1b')
+ print('\t restore %g0, %g0, %g0')
+ print('\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub')
+ print('')
+ print('#define GL_STUB(fn, off)\t\t\t\\')
+ print('\tGLOBL_FN(fn);\t\t\t\t\\')
+ print('fn:\tba\t__glapi_sparc_pthread_stub;\t\\')
+ print('\t sethi\tGL_OFF(off), %g3;\t\t\\')
+ print('\t.size\tfn,.-fn;')
+ print('')
+ print('#else /* Non-threaded version. */')
+ print('')
+ print('\t.type __glapi_sparc_nothread_stub, @function')
+ print('__glapi_sparc_nothread_stub: /* Call offset in %g3 */')
+ print('\tmov\t%o7, %g1')
+ print('\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2')
+ print('\tcall\t__glapi_sparc_get_pc')
+ print('\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2')
+ print('\tmov\t%g1, %o7')
+ print('\tsrl\t%g3, 10, %g3')
+ print('\tsethi\t%hi(_glapi_Dispatch), %g1')
+ print('\tor\t%g1, %lo(_glapi_Dispatch), %g1')
+ print('\tGL_LL\t[%g2+%g1], %g2')
+ print('\tGL_LL\t[%g2], %g1')
+ print('\tGL_LL\t[%g1 + %g3], %g1')
+ print('\tjmp\t%g1')
+ print('\t nop')
+ print('\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub')
+ print('')
+ print('#define GL_STUB(fn, off)\t\t\t\\')
+ print('\tGLOBL_FN(fn);\t\t\t\t\\')
+ print('fn:\tba\t__glapi_sparc_nothread_stub;\t\\')
+ print('\t sethi\tGL_OFF(off), %g3;\t\t\\')
+ print('\t.size\tfn,.-fn;')
+ print('')
+ print('#endif')
+ print('')
+ print('#define GL_STUB_ALIAS(fn, alias) \\')
+ print(' .globl fn; \\')
+ print(' .set fn, alias')
+ print('')
+ print('\t.text')
+ print('\t.align\t32')
+ print('')
+ print('\t.globl\tgl_dispatch_functions_start')
+ print('\tHIDDEN(gl_dispatch_functions_start)')
+ print('gl_dispatch_functions_start:')
+ print('')
return
def printRealFooter(self):
- print ''
- print '\t.globl\tgl_dispatch_functions_end'
- print '\tHIDDEN(gl_dispatch_functions_end)'
- print 'gl_dispatch_functions_end:'
+ print('')
+ print('\t.globl\tgl_dispatch_functions_end')
+ print('\tHIDDEN(gl_dispatch_functions_end)')
+ print('gl_dispatch_functions_end:')
return
def printBody(self, api):
for f in api.functionIterateByOffset():
name = f.dispatch_name()
- print '\tGL_STUB(gl%s, %d)' % (name, f.offset)
+ print('\tGL_STUB(gl%s, %d)' % (name, f.offset))
if not f.is_static_entry_point(f.name):
- print '\tHIDDEN(gl%s)' % (name)
+ print('\tHIDDEN(gl%s)' % (name))
for f in api.functionIterateByOffset():
name = f.dispatch_name()
text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
if f.has_different_protocol(n):
- print '#ifndef GLX_INDIRECT_RENDERING'
- print text
- print '#endif'
+ print('#ifndef GLX_INDIRECT_RENDERING')
+ print(text)
+ print('#endif')
else:
- print text
+ print(text)
return
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
from collections import OrderedDict
from decimal import Decimal
import xml.etree.ElementTree as ET
def printHeader(self):
"""Print the header associated with all files and call the printRealHeader method."""
- print '/* DO NOT EDIT - This file generated automatically by %s script */' \
- % (self.name)
- print ''
- print '/*'
- print (' * ' + self.license.replace('\n', '\n * ')).replace(' \n', '\n')
- print ' */'
- print ''
+ print('/* DO NOT EDIT - This file generated automatically by %s script */' \
+ % (self.name))
+ print('')
+ print('/*')
+ print((' * ' + self.license.replace('\n', '\n * ')).replace(' \n', '\n'))
+ print(' */')
+ print('')
if self.header_tag:
- print '#if !defined( %s )' % (self.header_tag)
- print '# define %s' % (self.header_tag)
- print ''
+ print('#if !defined( %s )' % (self.header_tag))
+ print('# define %s' % (self.header_tag))
+ print('')
self.printRealHeader();
return
self.printRealFooter()
if self.undef_list:
- print ''
+ print('')
for u in self.undef_list:
- print "# undef %s" % (u)
+ print("# undef %s" % (u))
if self.header_tag:
- print ''
- print '#endif /* !defined( %s ) */' % (self.header_tag)
+ print('')
+ print('#endif /* !defined( %s ) */' % (self.header_tag))
def printRealHeader(self):
The name is also added to the file's undef_list.
"""
self.undef_list.append("PURE")
- print """# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+ print("""# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
# define PURE __attribute__((pure))
# else
# define PURE
-# endif"""
+# endif""")
return
"""
self.undef_list.append("FASTCALL")
- print """# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+ print("""# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
# define FASTCALL __attribute__((fastcall))
# else
# define FASTCALL
-# endif"""
+# endif""")
return
"""
self.undef_list.append(S)
- print """# if defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+ print("""# if defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
# define %s __attribute__((visibility("%s")))
# else
# define %s
-# endif""" % (S, s, S)
+# endif""" % (S, s, S))
return
"""
self.undef_list.append("NOINLINE")
- print """# if defined(__GNUC__)
+ print("""# if defined(__GNUC__)
# define NOINLINE __attribute__((noinline))
# else
# define NOINLINE
-# endif"""
+# endif""")
return
if type_name in self.types_by_name:
return self.types_by_name[ type_name ].type_expr
else:
- print "Unable to find base type matching \"%s\"." % (type_name)
+ print("Unable to find base type matching \"%s\"." % (type_name))
return None
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import gl_XML, glX_XML
if (cat.startswith("es") or cat.startswith("GL_OES")):
need_proto = True
if need_proto:
- print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name))
- print ''
+ print('%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name)))
+ print('')
- print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
- print '{'
+ print('%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name)))
+ print('{')
if silence:
- print ' %s' % (silence)
+ print(' %s' % (silence))
if p_string == "":
- print ' %s(%s, (), (F, "gl%s();\\n"));' \
- % (dispatch, f.name, name)
+ print(' %s(%s, (), (F, "gl%s();\\n"));' \
+ % (dispatch, f.name, name))
else:
- print ' %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
- % (dispatch, f.name, p_string, name, t_string, o_string)
- print '}'
- print ''
+ print(' %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
+ % (dispatch, f.name, p_string, name, t_string, o_string))
+ print('}')
+ print('')
return
def printRealHeader(self):
- print ''
+ print('')
self.printVisibility( "HIDDEN", "hidden" )
- print """
+ print("""
/*
* This file is a template which generates the OpenGL API entry point
* functions. It should be included by a .c file which first defines
#error RETURN_DISPATCH must be defined
#endif
-"""
+""")
return
def printInitDispatch(self, api):
- print """
+ print("""
#endif /* defined( NAME ) */
/*
#error _GLAPI_SKIP_NORMAL_ENTRY_POINTS must not be defined
#endif
-_glapi_proc DISPATCH_TABLE_NAME[] = {"""
+_glapi_proc DISPATCH_TABLE_NAME[] = {""")
for f in api.functionIterateByOffset():
- print ' TABLE_ENTRY(%s),' % (f.dispatch_name())
+ print(' TABLE_ENTRY(%s),' % (f.dispatch_name()))
- print ' /* A whole bunch of no-op functions. These might be called'
- print ' * when someone tries to call a dynamically-registered'
- print ' * extension function without a current rendering context.'
- print ' */'
+ print(' /* A whole bunch of no-op functions. These might be called')
+ print(' * when someone tries to call a dynamically-registered')
+ print(' * extension function without a current rendering context.')
+ print(' */')
for i in range(1, 100):
- print ' TABLE_ENTRY(Unused),'
+ print(' TABLE_ENTRY(Unused),')
- print '};'
- print '#endif /* DISPATCH_TABLE_NAME */'
- print ''
+ print('};')
+ print('#endif /* DISPATCH_TABLE_NAME */')
+ print('')
return
def printAliasedTable(self, api):
- print """
+ print("""
/*
* This is just used to silence compiler warnings.
* We list the functions which are not otherwise used.
*/
#ifdef UNUSED_TABLE_NAME
-_glapi_proc UNUSED_TABLE_NAME[] = {"""
+_glapi_proc UNUSED_TABLE_NAME[] = {""")
normal_entries = []
proto_entries = []
normal_entries.extend(normal_ents)
proto_entries.extend(proto_ents)
- print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
+ print('#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS')
for ent in normal_entries:
- print ' TABLE_ENTRY(%s),' % (ent)
- print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
- print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
+ print(' TABLE_ENTRY(%s),' % (ent))
+ print('#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */')
+ print('#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS')
for ent in proto_entries:
- print ' TABLE_ENTRY(%s),' % (ent)
- print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
+ print(' TABLE_ENTRY(%s),' % (ent))
+ print('#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */')
- print '};'
- print '#endif /*UNUSED_TABLE_NAME*/'
- print ''
+ print('};')
+ print('#endif /*UNUSED_TABLE_NAME*/')
+ print('')
return
normal_entry_points.append((func, normal_ents))
proto_entry_points.append((func, proto_ents))
- print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
- print ''
+ print('#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS')
+ print('')
for func, ents in normal_entry_points:
for ent in ents:
self.printFunction(func, ent)
- print ''
- print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
- print ''
- print '/* these entry points might require different protocols */'
- print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
- print ''
+ print('')
+ print('#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */')
+ print('')
+ print('/* these entry points might require different protocols */')
+ print('#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS')
+ print('')
for func, ents in proto_entry_points:
for ent in ents:
self.printFunction(func, ent)
- print ''
- print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
- print ''
+ print('')
+ print('#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */')
+ print('')
self.printInitDispatch(api)
self.printAliasedTable(api)
# Authors:
# Zack Rusin <zack@kde.org>
+from __future__ import print_function
+
import argparse
import license
def printRealHeader(self):
- print '#include "main/glheader.h"'
- print '#include "main/enums.h"'
- print '#include "main/imports.h"'
- print '#include "main/mtypes.h"'
- print ''
- print 'typedef struct PACKED {'
- print ' uint32_t offset;'
- print ' int n;'
- print '} enum_elt;'
- print ''
+ print('#include "main/glheader.h"')
+ print('#include "main/enums.h"')
+ print('#include "main/imports.h"')
+ print('#include "main/mtypes.h"')
+ print('')
+ print('typedef struct PACKED {')
+ print(' uint32_t offset;')
+ print(' int n;')
+ print('} enum_elt;')
+ print('')
return
def print_code(self):
- print """
+ print("""
typedef int (*cfunc)(const void *, const void *);
/**
}
-"""
+""")
return
sorted_enum_values = sorted(self.enum_table.keys())
string_offsets = {}
i = 0;
- print '#if defined(__GNUC__)'
- print '# define LONGSTRING __extension__'
- print '#else'
- print '# define LONGSTRING'
- print '#endif'
- print ''
- print 'LONGSTRING static const char enum_string_table[] = {'
+ print('#if defined(__GNUC__)')
+ print('# define LONGSTRING __extension__')
+ print('#else')
+ print('# define LONGSTRING')
+ print('#endif')
+ print('')
+ print('LONGSTRING static const char enum_string_table[] = {')
# We express the very long concatenation of enum strings as an array
# of characters rather than as a string literal to work-around MSVC's
# 65535 character limit.
for enum in sorted_enum_values:
(name, pri) = self.enum_table[enum]
- print " ",
+ print(" ", end=' ')
for ch in name:
- print "'%c'," % ch,
- print "'\\0',"
+ print("'%c'," % ch, end=' ')
+ print("'\\0',")
string_offsets[ enum ] = i
i += len(name) + 1
- print '};'
- print ''
+ print('};')
+ print('')
- print 'static const enum_elt enum_string_table_offsets[%u] =' % (len(self.enum_table))
- print '{'
+ print('static const enum_elt enum_string_table_offsets[%u] =' % (len(self.enum_table)))
+ print('{')
for enum in sorted_enum_values:
(name, pri) = self.enum_table[enum]
- print ' { %5u, 0x%08X }, /* %s */' % (string_offsets[enum], enum, name)
- print '};'
- print ''
+ print(' { %5u, 0x%08X }, /* %s */' % (string_offsets[enum], enum, name))
+ print('};')
+ print('')
self.print_code()
return
# confuse us. GL_ACTIVE_PROGRAM_EXT is OK to lose because
# we choose GL_ACTIVE PROGRAM instead.
if name in self.string_to_int and name != "GL_ACTIVE_PROGRAM_EXT":
- print "#error Renumbering {0} from {1} to {2}".format(name, self.string_to_int[name], value)
+ print("#error Renumbering {0} from {1} to {2}".format(name, self.string_to_int[name], value))
self.string_to_int[name] = value
# _mesa_initialize_exec_table(). It is responsible for populating all
# entries in the "exec" dispatch table that aren't dynamic.
+from __future__ import print_function
+
import argparse
import collections
import license
'Intel Corporation')
def printRealHeader(self):
- print header
+ print(header)
def printRealFooter(self):
- print footer
+ print(footer)
def printBody(self, api):
# Collect SET_* calls by the condition under which they should
# Print out an if statement for each unique condition, with
# the SET_* calls nested inside it.
for condition in sorted(settings_by_condition.keys()):
- print ' if ({0}) {{'.format(condition)
+ print(' if ({0}) {{'.format(condition))
for setting in sorted(settings_by_condition[condition]):
- print ' {0}'.format(setting)
- print ' }'
+ print(' {0}'.format(setting))
+ print(' }')
def _parser():
# Based on code ogiginally by:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import license
def printRealHeader(self):
- print header
+ print(header)
return
def printRealFooter(self):
- print footer
+ print(footer)
return
if funcnames[i] is None:
raise Exception("Function table has no function at offset %d" % (i))
- print "#define GLAPI_TABLE_COUNT %d" % func_count
- print "static const char * const _glapi_table_func_names[GLAPI_TABLE_COUNT] = {"
+ print("#define GLAPI_TABLE_COUNT %d" % func_count)
+ print("static const char * const _glapi_table_func_names[GLAPI_TABLE_COUNT] = {")
for i in xrange(0, func_count):
- print " /* %5d */ \"%s\"," % (i, funcnames[i])
- print "};"
+ print(" /* %5d */ \"%s\"," % (i, funcnames[i]))
+ print("};")
return
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+from __future__ import print_function
+
import contextlib
import getopt
import gl_XML
def out(str):
if str:
- print ' '*current_indent + str
+ print(' '*current_indent + str)
else:
- print ''
+ print('')
@contextlib.contextmanager
'Copyright (C) 2012 Intel Corporation', 'INTEL CORPORATION')
def printRealHeader(self):
- print header
- print 'static inline int safe_mul(int a, int b)'
- print '{'
- print ' if (a < 0 || b < 0) return -1;'
- print ' if (a == 0 || b == 0) return 0;'
- print ' if (a > INT_MAX / b) return -1;'
- print ' return a * b;'
- print '}'
- print
+ print(header)
+ print('static inline int safe_mul(int a, int b)')
+ print('{')
+ print(' if (a < 0 || b < 0) return -1;')
+ print(' if (a == 0 || b == 0) return 0;')
+ print(' if (a > INT_MAX / b) return -1;')
+ print(' return a * b;')
+ print('}')
+ print()
def printRealFooter(self):
pass
def show_usage():
- print 'Usage: %s [-f input_file_name]' % sys.argv[0]
+ print('Usage: %s [-f input_file_name]' % sys.argv[0])
sys.exit(1)
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+from __future__ import print_function
+
import getopt
import gl_XML
import license
'Copyright (C) 2012 Intel Corporation', 'INTEL CORPORATION')
def printRealHeader(self):
- print header
+ print(header)
def printRealFooter(self):
- print footer
+ print(footer)
def printBody(self, api):
- print 'enum marshal_dispatch_cmd_id'
- print '{'
+ print('enum marshal_dispatch_cmd_id')
+ print('{')
for func in api.functionIterateAll():
flavor = func.marshal_flavor()
if flavor in ('skip', 'sync'):
continue
- print ' DISPATCH_CMD_{0},'.format(func.name)
- print '};'
+ print(' DISPATCH_CMD_{0},'.format(func.name))
+ print('};')
def show_usage():
- print 'Usage: %s [-f input_file_name]' % sys.argv[0]
+ print('Usage: %s [-f input_file_name]' % sys.argv[0])
sys.exit(1)
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import license
(C) Copyright IBM Corporation 2004, 2006""", "BRIAN PAUL, IBM")
def printRealHeader(self):
- print """
+ print("""
/* This file is only included by glapi.c and is used for
* the GetProcAddress() function
*/
# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
#endif
-"""
+""")
return
def printRealFooter(self):
- print ''
- print '#undef NAME_FUNC_OFFSET'
+ print('')
+ print('#undef NAME_FUNC_OFFSET')
return
def printFunctionString(self, name):
- print ' "gl%s\\0"' % (name)
+ print(' "gl%s\\0"' % (name))
def printBody(self, api):
- print ''
- print 'static const char gl_string_table[] ='
+ print('')
+ print('static const char gl_string_table[] =')
base_offset = 0
table = []
base_offset += len(n) + 3
- print ' ;'
- print ''
- print ''
- print "#ifdef USE_MGL_NAMESPACE"
+ print(' ;')
+ print('')
+ print('')
+ print("#ifdef USE_MGL_NAMESPACE")
for func in api.functionIterateByOffset():
for n in func.entry_points:
if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
- print '#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset)
+ print('#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset))
break
- print "#endif /* USE_MGL_NAMESPACE */"
- print ''
- print ''
- print '#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)'
+ print("#endif /* USE_MGL_NAMESPACE */")
+ print('')
+ print('')
+ print('#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)')
for func in api.functionIterateByOffset():
for n in func.entry_points:
if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
- print '%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string())
+ print('%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string()))
break
if self.es:
% (func.return_type, "gl" + n, func.get_parameter_string(n))
categories[cat].append(proto)
if categories:
- print ''
- print '/* OpenGL ES specific prototypes */'
- print ''
+ print('')
+ print('/* OpenGL ES specific prototypes */')
+ print('')
keys = categories.keys()
keys.sort()
for key in keys:
- print '/* category %s */' % key
- print "\n".join(categories[key])
- print ''
+ print('/* category %s */' % key)
+ print("\n".join(categories[key]))
+ print('')
- print '#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */'
+ print('#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */')
- print ''
- print 'static const glprocs_table_t static_functions[] = {'
+ print('')
+ print('static const glprocs_table_t static_functions[] = {')
for info in table:
- print ' NAME_FUNC_OFFSET(%5u, %s, %s, %s, %d),' % info
+ print(' NAME_FUNC_OFFSET(%5u, %s, %s, %s, %d),' % info)
- print ' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
- print '};'
+ print(' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)')
+ print('};')
return
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import gl_XML
def printBody(self, api):
for f in api.functionIterateByOffset():
arg_string = f.get_parameter_string()
- print ' %s (GLAPIENTRYP %s)(%s); /* %d */' % (
- f.return_type, f.name, arg_string, f.offset)
+ print(' %s (GLAPIENTRYP %s)(%s); /* %d */' % (
+ f.return_type, f.name, arg_string, f.offset))
def printRealHeader(self):
- print '#ifndef GLAPIENTRYP'
- print '# ifndef GLAPIENTRY'
- print '# define GLAPIENTRY'
- print '# endif'
- print ''
- print '# define GLAPIENTRYP GLAPIENTRY *'
- print '#endif'
- print ''
- print ''
- print '#ifdef __cplusplus'
- print 'extern "C" {'
- print '#endif'
- print ''
- print 'struct _glapi_table'
- print '{'
+ print('#ifndef GLAPIENTRYP')
+ print('# ifndef GLAPIENTRY')
+ print('# define GLAPIENTRY')
+ print('# endif')
+ print('')
+ print('# define GLAPIENTRYP GLAPIENTRY *')
+ print('#endif')
+ print('')
+ print('')
+ print('#ifdef __cplusplus')
+ print('extern "C" {')
+ print('#endif')
+ print('')
+ print('struct _glapi_table')
+ print('{')
return
def printRealFooter(self):
- print '};'
- print ''
- print '#ifdef __cplusplus'
- print '}'
- print '#endif'
+ print('};')
+ print('')
+ print('#ifdef __cplusplus')
+ print('}')
+ print('#endif')
return
def printRealHeader(self):
- print """
+ print("""
/**
* \\file main/dispatch.h
* Macros for handling GL dispatch tables.
* can SET_FuncName, are used to get and set the dispatch pointer for the
* named function in the specified dispatch table.
*/
-"""
+""")
return
def printBody(self, api):
- print '#define CALL_by_offset(disp, cast, offset, parameters) \\'
- print ' (*(cast (GET_by_offset(disp, offset)))) parameters'
- print '#define GET_by_offset(disp, offset) \\'
- print ' (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL'
- print '#define SET_by_offset(disp, offset, fn) \\'
- print ' do { \\'
- print ' if ( (offset) < 0 ) { \\'
- print ' /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\\n", */ \\'
- print ' /* __func__, __LINE__, disp, offset, # fn); */ \\'
- print ' /* abort(); */ \\'
- print ' } \\'
- print ' else { \\'
- print ' ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \\'
- print ' } \\'
- print ' } while(0)'
- print ''
+ print('#define CALL_by_offset(disp, cast, offset, parameters) \\')
+ print(' (*(cast (GET_by_offset(disp, offset)))) parameters')
+ print('#define GET_by_offset(disp, offset) \\')
+ print(' (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL')
+ print('#define SET_by_offset(disp, offset, fn) \\')
+ print(' do { \\')
+ print(' if ( (offset) < 0 ) { \\')
+ print(' /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\\n", */ \\')
+ print(' /* __func__, __LINE__, disp, offset, # fn); */ \\')
+ print(' /* abort(); */ \\')
+ print(' } \\')
+ print(' else { \\')
+ print(' ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \\')
+ print(' } \\')
+ print(' } while(0)')
+ print('')
functions = []
abi_functions = []
else:
abi_functions.append([f, -1])
- print '/* total number of offsets below */'
- print '#define _gloffset_COUNT %d' % (len(abi_functions + functions))
- print ''
+ print('/* total number of offsets below */')
+ print('#define _gloffset_COUNT %d' % (len(abi_functions + functions)))
+ print('')
for f, index in abi_functions:
- print '#define _gloffset_%s %d' % (f.name, f.offset)
+ print('#define _gloffset_%s %d' % (f.name, f.offset))
remap_table = "driDispatchRemapTable"
- print '#define %s_size %u' % (remap_table, count)
- print 'extern int %s[ %s_size ];' % (remap_table, remap_table)
- print ''
+ print('#define %s_size %u' % (remap_table, count))
+ print('extern int %s[ %s_size ];' % (remap_table, remap_table))
+ print('')
for f, index in functions:
- print '#define %s_remap_index %u' % (f.name, index)
+ print('#define %s_remap_index %u' % (f.name, index))
- print ''
+ print('')
for f, index in functions:
- print '#define _gloffset_%s %s[%s_remap_index]' % (f.name, remap_table, f.name)
+ print('#define _gloffset_%s %s[%s_remap_index]' % (f.name, remap_table, f.name))
- print ''
+ print('')
for f, index in abi_functions + functions:
arg_string = gl_XML.create_parameter_string(f.parameters, 0)
- print 'typedef %s (GLAPIENTRYP _glptr_%s)(%s);' % (f.return_type, f.name, arg_string)
- print '#define CALL_%s(disp, parameters) \\' % (f.name)
- print ' (* GET_%s(disp)) parameters' % (f.name)
- print 'static inline _glptr_%s GET_%s(struct _glapi_table *disp) {' % (f.name, f.name)
- print ' return (_glptr_%s) (GET_by_offset(disp, _gloffset_%s));' % (f.name, f.name)
- print '}'
- print
- print 'static inline void SET_%s(struct _glapi_table *disp, %s (GLAPIENTRYP fn)(%s)) {' % (f.name, f.return_type, arg_string)
- print ' SET_by_offset(disp, _gloffset_%s, fn);' % (f.name)
- print '}'
- print
+ print('typedef %s (GLAPIENTRYP _glptr_%s)(%s);' % (f.return_type, f.name, arg_string))
+ print('#define CALL_%s(disp, parameters) \\' % (f.name))
+ print(' (* GET_%s(disp)) parameters' % (f.name))
+ print('static inline _glptr_%s GET_%s(struct _glapi_table *disp) {' % (f.name, f.name))
+ print(' return (_glptr_%s) (GET_by_offset(disp, _gloffset_%s));' % (f.name, f.name))
+ print('}')
+ print()
+ print('static inline void SET_%s(struct _glapi_table *disp, %s (GLAPIENTRYP fn)(%s)) {' % (f.name, f.return_type, arg_string))
+ print(' SET_by_offset(disp, _gloffset_%s, fn);' % (f.name))
+ print('}')
+ print()
return
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import copy
adjust_stack = 0
if not should_use_push(registers):
adjust_stack = local_size(registers)
- print '\tsubq\t$%u, %%rsp' % (adjust_stack)
+ print('\tsubq\t$%u, %%rsp' % (adjust_stack))
for [reg, stack_offset] in registers:
save_reg( reg, stack_offset, adjust_stack )
restore_reg(reg, stack_offset, adjust_stack)
if adjust_stack:
- print '\taddq\t$%u, %%rsp' % (adjust_stack)
+ print('\taddq\t$%u, %%rsp' % (adjust_stack))
return
def save_reg(reg, offset, use_move):
if use_move:
if offset == 0:
- print '\tmovq\t%s, (%%rsp)' % (reg)
+ print('\tmovq\t%s, (%%rsp)' % (reg))
else:
- print '\tmovq\t%s, %u(%%rsp)' % (reg, offset)
+ print('\tmovq\t%s, %u(%%rsp)' % (reg, offset))
else:
- print '\tpushq\t%s' % (reg)
+ print('\tpushq\t%s' % (reg))
return
def restore_reg(reg, offset, use_move):
if use_move:
if offset == 0:
- print '\tmovq\t(%%rsp), %s' % (reg)
+ print('\tmovq\t(%%rsp), %s' % (reg))
else:
- print '\tmovq\t%u(%%rsp), %s' % (offset, reg)
+ print('\tmovq\t%u(%%rsp), %s' % (offset, reg))
else:
- print '\tpopq\t%s' % (reg)
+ print('\tpopq\t%s' % (reg))
return
def printRealHeader(self):
- print "/* If we build with gcc's -fvisibility=hidden flag, we'll need to change"
- print " * the symbol visibility mode to 'default'."
- print ' */'
- print ''
- print '#include "x86/assyntax.h"'
- print ''
- print '#ifdef __GNUC__'
- print '# pragma GCC visibility push(default)'
- print '# define HIDDEN(x) .hidden x'
- print '#else'
- print '# define HIDDEN(x)'
- print '#endif'
- print ''
- print '# if defined(USE_MGL_NAMESPACE)'
- print '# define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))'
- print '# define _glapi_Dispatch _mglapi_Dispatch'
- print '# else'
- print '# define GL_PREFIX(n) GLNAME(CONCAT(gl,n))'
- print '# endif'
- print ''
- print '\t.text'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '_x86_64_get_dispatch:'
- print '\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax'
- print '\tmovq\t%fs:(%rax), %rax'
- print '\tret'
- print '\t.size\t_x86_64_get_dispatch, .-_x86_64_get_dispatch'
- print ''
- print '#elif defined(HAVE_PTHREAD)'
- print ''
- print '\t.extern\t_glapi_Dispatch'
- print '\t.extern\t_gl_DispatchTSD'
- print '\t.extern\tpthread_getspecific'
- print ''
- print '\t.p2align\t4,,15'
- print '_x86_64_get_dispatch:'
- print '\tmovq\t_gl_DispatchTSD@GOTPCREL(%rip), %rax'
- print '\tmovl\t(%rax), %edi'
- print '\tjmp\tpthread_getspecific@PLT'
- print ''
- print '#else'
- print ''
- print '\t.extern\t_glapi_get_dispatch'
- print ''
- print '#endif'
- print ''
+ print("/* If we build with gcc's -fvisibility=hidden flag, we'll need to change")
+ print(" * the symbol visibility mode to 'default'.")
+ print(' */')
+ print('')
+ print('#include "x86/assyntax.h"')
+ print('')
+ print('#ifdef __GNUC__')
+ print('# pragma GCC visibility push(default)')
+ print('# define HIDDEN(x) .hidden x')
+ print('#else')
+ print('# define HIDDEN(x)')
+ print('#endif')
+ print('')
+ print('# if defined(USE_MGL_NAMESPACE)')
+ print('# define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))')
+ print('# define _glapi_Dispatch _mglapi_Dispatch')
+ print('# else')
+ print('# define GL_PREFIX(n) GLNAME(CONCAT(gl,n))')
+ print('# endif')
+ print('')
+ print('\t.text')
+ print('')
+ print('#ifdef GLX_USE_TLS')
+ print('')
+ print('_x86_64_get_dispatch:')
+ print('\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax')
+ print('\tmovq\t%fs:(%rax), %rax')
+ print('\tret')
+ print('\t.size\t_x86_64_get_dispatch, .-_x86_64_get_dispatch')
+ print('')
+ print('#elif defined(HAVE_PTHREAD)')
+ print('')
+ print('\t.extern\t_glapi_Dispatch')
+ print('\t.extern\t_gl_DispatchTSD')
+ print('\t.extern\tpthread_getspecific')
+ print('')
+ print('\t.p2align\t4,,15')
+ print('_x86_64_get_dispatch:')
+ print('\tmovq\t_gl_DispatchTSD@GOTPCREL(%rip), %rax')
+ print('\tmovl\t(%rax), %edi')
+ print('\tjmp\tpthread_getspecific@PLT')
+ print('')
+ print('#else')
+ print('')
+ print('\t.extern\t_glapi_get_dispatch')
+ print('')
+ print('#endif')
+ print('')
return
def printRealFooter(self):
- print ''
- print '#if defined (__ELF__) && defined (__linux__)'
- print ' .section .note.GNU-stack,"",%progbits'
- print '#endif'
+ print('')
+ print('#if defined (__ELF__) && defined (__linux__)')
+ print(' .section .note.GNU-stack,"",%progbits')
+ print('#endif')
return
name = f.dispatch_name()
- print '\t.p2align\t4,,15'
- print '\t.globl\tGL_PREFIX(%s)' % (name)
- print '\t.type\tGL_PREFIX(%s), @function' % (name)
+ print('\t.p2align\t4,,15')
+ print('\t.globl\tGL_PREFIX(%s)' % (name))
+ print('\t.type\tGL_PREFIX(%s), @function' % (name))
if not f.is_static_entry_point(f.name):
- print '\tHIDDEN(GL_PREFIX(%s))' % (name)
- print 'GL_PREFIX(%s):' % (name)
- print '#if defined(GLX_USE_TLS)'
- print '\tcall\t_x86_64_get_dispatch@PLT'
- print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
- print '\tjmp\t*%r11'
- print '#elif defined(HAVE_PTHREAD)'
+ print('\tHIDDEN(GL_PREFIX(%s))' % (name))
+ print('GL_PREFIX(%s):' % (name))
+ print('#if defined(GLX_USE_TLS)')
+ print('\tcall\t_x86_64_get_dispatch@PLT')
+ print('\tmovq\t%u(%%rax), %%r11' % (f.offset * 8))
+ print('\tjmp\t*%r11')
+ print('#elif defined(HAVE_PTHREAD)')
save_all_regs(registers)
- print '\tcall\t_x86_64_get_dispatch@PLT'
+ print('\tcall\t_x86_64_get_dispatch@PLT')
restore_all_regs(registers)
if f.offset == 0:
- print '\tmovq\t(%rax), %r11'
+ print('\tmovq\t(%rax), %r11')
else:
- print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+ print('\tmovq\t%u(%%rax), %%r11' % (f.offset * 8))
- print '\tjmp\t*%r11'
+ print('\tjmp\t*%r11')
- print '#else'
- print '\tmovq\t_glapi_Dispatch(%rip), %rax'
- print '\ttestq\t%rax, %rax'
- print '\tje\t1f'
- print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
- print '\tjmp\t*%r11'
- print '1:'
+ print('#else')
+ print('\tmovq\t_glapi_Dispatch(%rip), %rax')
+ print('\ttestq\t%rax, %rax')
+ print('\tje\t1f')
+ print('\tmovq\t%u(%%rax), %%r11' % (f.offset * 8))
+ print('\tjmp\t*%r11')
+ print('1:')
save_all_regs(registers)
- print '\tcall\t_glapi_get_dispatch'
+ print('\tcall\t_glapi_get_dispatch')
restore_all_regs(registers)
- print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
- print '\tjmp\t*%r11'
- print '#endif /* defined(GLX_USE_TLS) */'
+ print('\tmovq\t%u(%%rax), %%r11' % (f.offset * 8))
+ print('\tjmp\t*%r11')
+ print('#endif /* defined(GLX_USE_TLS) */')
- print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name)
- print ''
+ print('\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name))
+ print('')
return
text = '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, dispatch)
if f.has_different_protocol(n):
- print '#ifndef GLX_INDIRECT_RENDERING'
- print text
- print '#endif'
+ print('#ifndef GLX_INDIRECT_RENDERING')
+ print(text)
+ print('#endif')
else:
- print text
+ print(text)
return
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import argparse
import license
def printRealHeader(self):
- print '#include "x86/assyntax.h"'
- print ''
- print '#if defined(STDCALL_API)'
- print '# if defined(USE_MGL_NAMESPACE)'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))'
- print '# else'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))'
- print '# endif'
- print '#else'
- print '# if defined(USE_MGL_NAMESPACE)'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))'
- print '# define _glapi_Dispatch _mglapi_Dispatch'
- print '# else'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))'
- print '# endif'
- print '#endif'
- print ''
- print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
- print ''
- print '#if defined(GNU_ASSEMBLER) && !defined(__MINGW32__) && !defined(__APPLE__)'
- print '#define GLOBL_FN(x) GLOBL x ; .type x, @function'
- print '#else'
- print '#define GLOBL_FN(x) GLOBL x'
- print '#endif'
- print ''
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '#ifdef GLX_X86_READONLY_TEXT'
- print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
- print '#else'
- print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
- print '#endif'
- print ''
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
- print '\tCTX_INSNS ; \\'
- print '\tJMP(GL_OFFSET(off))'
- print ''
- print '#elif defined(HAVE_PTHREAD)'
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
- print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
- print '\tJE(1f) ;\t\t\t\t\t\\'
- print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
- print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
- print '\tJMP(GL_OFFSET(off))'
- print '#else'
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
- print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
- print '\tJE(1f) ;\t\t\t\t\t\\'
- print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
- print '1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\'
- print '\tJMP(GL_OFFSET(off))'
- print '#endif'
- print ''
- print '#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS'
- print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
- print '\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\'
- print '\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)'
- print '#else'
- print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
- print ' GL_STUB(fn, off, fn_alt)'
- print '#endif'
- print ''
- print 'SEG_TEXT'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '\tGLOBL\tGLNAME(_x86_get_dispatch)'
- print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
- print 'ALIGNTEXT16'
- print 'GLNAME(_x86_get_dispatch):'
- print '\tcall 1f'
- print '1:\tpopl %eax'
- print '\taddl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
- print '\tmovl _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
- print '\tret'
- print ''
- print '#elif defined(HAVE_PTHREAD)'
- print 'EXTERN GLNAME(_glapi_Dispatch)'
- print 'EXTERN GLNAME(_gl_DispatchTSD)'
- print 'EXTERN GLNAME(pthread_getspecific)'
- print ''
- print 'ALIGNTEXT16'
- print 'GLNAME(_x86_get_dispatch):'
- print '\tSUB_L(CONST(24), ESP)'
- print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
- print '\tCALL(GLNAME(pthread_getspecific))'
- print '\tADD_L(CONST(28), ESP)'
- print '\tRET'
- print '#else'
- print 'EXTERN GLNAME(_glapi_get_dispatch)'
- print '#endif'
- print ''
-
- print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
- print '\t\t.section\twtext, "awx", @progbits'
- print '#endif /* defined( GLX_USE_TLS ) */'
-
- print ''
- print '\t\tALIGNTEXT16'
- print '\t\tGLOBL GLNAME(gl_dispatch_functions_start)'
- print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))'
- print 'GLNAME(gl_dispatch_functions_start):'
- print ''
+ print('#include "x86/assyntax.h"')
+ print('')
+ print('#if defined(STDCALL_API)')
+ print('# if defined(USE_MGL_NAMESPACE)')
+ print('# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))')
+ print('# else')
+ print('# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))')
+ print('# endif')
+ print('#else')
+ print('# if defined(USE_MGL_NAMESPACE)')
+ print('# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))')
+ print('# define _glapi_Dispatch _mglapi_Dispatch')
+ print('# else')
+ print('# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))')
+ print('# endif')
+ print('#endif')
+ print('')
+ print('#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))')
+ print('')
+ print('#if defined(GNU_ASSEMBLER) && !defined(__MINGW32__) && !defined(__APPLE__)')
+ print('#define GLOBL_FN(x) GLOBL x ; .type x, @function')
+ print('#else')
+ print('#define GLOBL_FN(x) GLOBL x')
+ print('#endif')
+ print('')
+ print('')
+ print('#ifdef GLX_USE_TLS')
+ print('')
+ print('#ifdef GLX_X86_READONLY_TEXT')
+ print('# define CTX_INSNS MOV_L(GS:(EAX), EAX)')
+ print('#else')
+ print('# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */')
+ print('#endif')
+ print('')
+ print('# define GL_STUB(fn,off,fn_alt)\t\t\t\\')
+ print('ALIGNTEXT16;\t\t\t\t\t\t\\')
+ print('GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\')
+ print('GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\')
+ print('\tCALL(_x86_get_dispatch) ;\t\t\t\\')
+ print('\tCTX_INSNS ; \\')
+ print('\tJMP(GL_OFFSET(off))')
+ print('')
+ print('#elif defined(HAVE_PTHREAD)')
+ print('# define GL_STUB(fn,off,fn_alt)\t\t\t\\')
+ print('ALIGNTEXT16;\t\t\t\t\t\t\\')
+ print('GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\')
+ print('GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\')
+ print('\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\')
+ print('\tTEST_L(EAX, EAX) ;\t\t\t\t\\')
+ print('\tJE(1f) ;\t\t\t\t\t\\')
+ print('\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\')
+ print('1:\tCALL(_x86_get_dispatch) ;\t\t\t\\')
+ print('\tJMP(GL_OFFSET(off))')
+ print('#else')
+ print('# define GL_STUB(fn,off,fn_alt)\t\t\t\\')
+ print('ALIGNTEXT16;\t\t\t\t\t\t\\')
+ print('GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\')
+ print('GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\')
+ print('\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\')
+ print('\tTEST_L(EAX, EAX) ;\t\t\t\t\\')
+ print('\tJE(1f) ;\t\t\t\t\t\\')
+ print('\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\')
+ print('1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\')
+ print('\tJMP(GL_OFFSET(off))')
+ print('#endif')
+ print('')
+ print('#ifdef HAVE_FUNC_ATTRIBUTE_ALIAS')
+ print('# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\')
+ print('\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\')
+ print('\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)')
+ print('#else')
+ print('# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\')
+ print(' GL_STUB(fn, off, fn_alt)')
+ print('#endif')
+ print('')
+ print('SEG_TEXT')
+ print('')
+ print('#ifdef GLX_USE_TLS')
+ print('')
+ print('\tGLOBL\tGLNAME(_x86_get_dispatch)')
+ print('\tHIDDEN(GLNAME(_x86_get_dispatch))')
+ print('ALIGNTEXT16')
+ print('GLNAME(_x86_get_dispatch):')
+ print('\tcall 1f')
+ print('1:\tpopl %eax')
+ print('\taddl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax')
+ print('\tmovl _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax')
+ print('\tret')
+ print('')
+ print('#elif defined(HAVE_PTHREAD)')
+ print('EXTERN GLNAME(_glapi_Dispatch)')
+ print('EXTERN GLNAME(_gl_DispatchTSD)')
+ print('EXTERN GLNAME(pthread_getspecific)')
+ print('')
+ print('ALIGNTEXT16')
+ print('GLNAME(_x86_get_dispatch):')
+ print('\tSUB_L(CONST(24), ESP)')
+ print('\tPUSH_L(GLNAME(_gl_DispatchTSD))')
+ print('\tCALL(GLNAME(pthread_getspecific))')
+ print('\tADD_L(CONST(28), ESP)')
+ print('\tRET')
+ print('#else')
+ print('EXTERN GLNAME(_glapi_get_dispatch)')
+ print('#endif')
+ print('')
+
+ print('#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )')
+ print('\t\t.section\twtext, "awx", @progbits')
+ print('#endif /* defined( GLX_USE_TLS ) */')
+
+ print('')
+ print('\t\tALIGNTEXT16')
+ print('\t\tGLOBL GLNAME(gl_dispatch_functions_start)')
+ print('\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))')
+ print('GLNAME(gl_dispatch_functions_start):')
+ print('')
return
def printRealFooter(self):
- print ''
- print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
- print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))'
- print '\t\tALIGNTEXT16'
- print 'GLNAME(gl_dispatch_functions_end):'
- print ''
- print '#if defined (__ELF__) && defined (__linux__)'
- print ' .section .note.GNU-stack,"",%progbits'
- print '#endif'
+ print('')
+ print('\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)')
+ print('\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))')
+ print('\t\tALIGNTEXT16')
+ print('GLNAME(gl_dispatch_functions_end):')
+ print('')
+ print('#if defined (__ELF__) && defined (__linux__)')
+ print(' .section .note.GNU-stack,"",%progbits')
+ print('#endif')
return
stack = self.get_stack_size(f)
alt = "%s@%u" % (name, stack)
- print '\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt)
+ print('\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt))
if not f.is_static_entry_point(f.name):
- print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
+ print('\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt))
for f in api.functionIterateByOffset():
text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt)
if f.has_different_protocol(n):
- print '#ifndef GLX_INDIRECT_RENDERING'
- print text
- print '#endif'
+ print('#ifndef GLX_INDIRECT_RENDERING')
+ print(text)
+ print('#endif')
else:
- print text
+ print(text)
return
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+from __future__ import print_function
+
import argparse
import license
def printRealHeader(self):
- print '#include "main/dispatch.h"'
- print '#include "main/remap.h"'
- print ''
+ print('#include "main/dispatch.h"')
+ print('#include "main/remap.h"')
+ print('')
return
def printBody(self, api):
pool_indices = {}
- print '/* this is internal to remap.c */'
- print '#ifndef need_MESA_remap_table'
- print '#error Only remap.c should include this file!'
- print '#endif /* need_MESA_remap_table */'
- print ''
+ print('/* this is internal to remap.c */')
+ print('#ifndef need_MESA_remap_table')
+ print('#error Only remap.c should include this file!')
+ print('#endif /* need_MESA_remap_table */')
+ print('')
- print ''
- print 'static const char _mesa_function_pool[] ='
+ print('')
+ print('static const char _mesa_function_pool[] =')
# output string pool
index = 0;
else:
comments = "dynamic"
- print ' /* _mesa_function_pool[%d]: %s (%s) */' \
- % (index, f.name, comments)
+ print(' /* _mesa_function_pool[%d]: %s (%s) */' \
+ % (index, f.name, comments))
for line in spec:
- print ' "%s\\0"' % line
+ print(' "%s\\0"' % line)
index += len(line) + 1
- print ' ;'
- print ''
+ print(' ;')
+ print('')
- print '/* these functions need to be remapped */'
- print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {'
+ print('/* these functions need to be remapped */')
+ print('static const struct gl_function_pool_remap MESA_remap_table_functions[] = {')
# output all functions that need to be remapped
# iterate by offsets so that they are sorted by remap indices
for f in api.functionIterateByOffset():
if not f.assign_offset:
continue
- print ' { %5d, %s_remap_index },' \
- % (pool_indices[f], f.name)
- print ' { -1, -1 }'
- print '};'
- print ''
+ print(' { %5d, %s_remap_index },' \
+ % (pool_indices[f], f.name))
+ print(' { -1, -1 }')
+ print('};')
+ print('')
return
# Authors:
# Ian Romanick <idr@us.ibm.com>
+from __future__ import print_function
+
import string, copy
class type_node(object):
create_initial_types()
for t in types_to_try:
- print 'Trying "%s"...' % (t)
+ print('Trying "%s"...' % (t))
te = type_expression( t )
- print 'Got "%s" (%u, %u).' % (te.string(), te.get_stack_size(), te.get_element_size())
+ print('Got "%s" (%u, %u).' % (te.string(), te.get_stack_size(), te.get_element_size()))
# Authors:
# Chia-I Wu <olv@lunarg.com>
+from __future__ import print_function
+
import sys
# make it possible to import glapi
import os
return "\n".join(asm)
def output_for_lib(self):
- print self.c_notice()
+ print(self.c_notice())
if self.c_header:
- print
- print self.c_header
+ print()
+ print(self.c_header)
- print
- print '#ifdef MAPI_TMP_DEFINES'
- print self.c_public_includes()
- print
- print self.c_public_declarations(self.prefix_lib)
- print '#undef MAPI_TMP_DEFINES'
- print '#endif /* MAPI_TMP_DEFINES */'
+ print()
+ print('#ifdef MAPI_TMP_DEFINES')
+ print(self.c_public_includes())
+ print()
+ print(self.c_public_declarations(self.prefix_lib))
+ print('#undef MAPI_TMP_DEFINES')
+ print('#endif /* MAPI_TMP_DEFINES */')
if self.lib_need_table_size:
- print
- print '#ifdef MAPI_TMP_TABLE'
- print self.c_mapi_table()
- print '#undef MAPI_TMP_TABLE'
- print '#endif /* MAPI_TMP_TABLE */'
+ print()
+ print('#ifdef MAPI_TMP_TABLE')
+ print(self.c_mapi_table())
+ print('#undef MAPI_TMP_TABLE')
+ print('#endif /* MAPI_TMP_TABLE */')
if self.lib_need_noop_array:
- print
- print '#ifdef MAPI_TMP_NOOP_ARRAY'
- print '#ifdef DEBUG'
- print
- print self.c_noop_functions(self.prefix_noop, self.prefix_warn)
- print
- print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
- print self.c_noop_initializer(self.prefix_noop, False)
- print '};'
- print
- print '#else /* DEBUG */'
- print
- print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop)
- print self.c_noop_initializer(self.prefix_noop, True)
- print '};'
- print
- print '#endif /* DEBUG */'
- print '#undef MAPI_TMP_NOOP_ARRAY'
- print '#endif /* MAPI_TMP_NOOP_ARRAY */'
+ print()
+ print('#ifdef MAPI_TMP_NOOP_ARRAY')
+ print('#ifdef DEBUG')
+ print()
+ print(self.c_noop_functions(self.prefix_noop, self.prefix_warn))
+ print()
+ print('const mapi_func table_%s_array[] = {' % (self.prefix_noop))
+ print(self.c_noop_initializer(self.prefix_noop, False))
+ print('};')
+ print()
+ print('#else /* DEBUG */')
+ print()
+ print('const mapi_func table_%s_array[] = {' % (self.prefix_noop))
+ print(self.c_noop_initializer(self.prefix_noop, True))
+ print('};')
+ print()
+ print('#endif /* DEBUG */')
+ print('#undef MAPI_TMP_NOOP_ARRAY')
+ print('#endif /* MAPI_TMP_NOOP_ARRAY */')
if self.lib_need_stubs:
pool, pool_offsets = self.c_stub_string_pool()
- print
- print '#ifdef MAPI_TMP_PUBLIC_STUBS'
- print 'static const char public_string_pool[] ='
- print pool
- print
- print 'static const struct mapi_stub public_stubs[] = {'
- print self.c_stub_initializer(self.prefix_lib, pool_offsets)
- print '};'
- print '#undef MAPI_TMP_PUBLIC_STUBS'
- print '#endif /* MAPI_TMP_PUBLIC_STUBS */'
+ print()
+ print('#ifdef MAPI_TMP_PUBLIC_STUBS')
+ print('static const char public_string_pool[] =')
+ print(pool)
+ print()
+ print('static const struct mapi_stub public_stubs[] = {')
+ print(self.c_stub_initializer(self.prefix_lib, pool_offsets))
+ print('};')
+ print('#undef MAPI_TMP_PUBLIC_STUBS')
+ print('#endif /* MAPI_TMP_PUBLIC_STUBS */')
if self.lib_need_all_entries:
- print
- print '#ifdef MAPI_TMP_PUBLIC_ENTRIES'
- print self.c_public_dispatches(self.prefix_lib, False)
- print
- print 'static const mapi_func public_entries[] = {'
- print self.c_public_initializer(self.prefix_lib)
- print '};'
- print '#undef MAPI_TMP_PUBLIC_ENTRIES'
- print '#endif /* MAPI_TMP_PUBLIC_ENTRIES */'
-
- print
- print '#ifdef MAPI_TMP_STUB_ASM_GCC'
- print '__asm__('
- print self.c_asm_gcc(self.prefix_lib, False)
- print ');'
- print '#undef MAPI_TMP_STUB_ASM_GCC'
- print '#endif /* MAPI_TMP_STUB_ASM_GCC */'
+ print()
+ print('#ifdef MAPI_TMP_PUBLIC_ENTRIES')
+ print(self.c_public_dispatches(self.prefix_lib, False))
+ print()
+ print('static const mapi_func public_entries[] = {')
+ print(self.c_public_initializer(self.prefix_lib))
+ print('};')
+ print('#undef MAPI_TMP_PUBLIC_ENTRIES')
+ print('#endif /* MAPI_TMP_PUBLIC_ENTRIES */')
+
+ print()
+ print('#ifdef MAPI_TMP_STUB_ASM_GCC')
+ print('__asm__(')
+ print(self.c_asm_gcc(self.prefix_lib, False))
+ print(');')
+ print('#undef MAPI_TMP_STUB_ASM_GCC')
+ print('#endif /* MAPI_TMP_STUB_ASM_GCC */')
if self.lib_need_non_hidden_entries:
all_hidden = True
all_hidden = False
break
if not all_hidden:
- print
- print '#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN'
- print self.c_public_dispatches(self.prefix_lib, True)
- print
- print '/* does not need public_entries */'
- print '#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN'
- print '#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */'
-
- print
- print '#ifdef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN'
- print '__asm__('
- print self.c_asm_gcc(self.prefix_lib, True)
- print ');'
- print '#undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN'
- print '#endif /* MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN */'
+ print()
+ print('#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN')
+ print(self.c_public_dispatches(self.prefix_lib, True))
+ print()
+ print('/* does not need public_entries */')
+ print('#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN')
+ print('#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */')
+
+ print()
+ print('#ifdef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN')
+ print('__asm__(')
+ print(self.c_asm_gcc(self.prefix_lib, True))
+ print(');')
+ print('#undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN')
+ print('#endif /* MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN */')
class GLAPIPrinter(ABIPrinter):
"""OpenGL API Printer"""
# 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 print_function
+
import format_parser as parser
import sys
formats = parser.parse(sys.argv[1])
-print '''
+print('''
/*
* Mesa 3-D graphics library
*
static const struct gl_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]
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(' {')
+ 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([
+ print(' .ArrayFormat = MESA_ARRAY_FORMAT({0}),'.format(', '.join([
str(chan.size / 8),
str(int(chan.sign)),
str(int(chan.type == parser.FLOAT)),
str(fmat.swizzle[1]),
str(fmat.swizzle[2]),
str(fmat.swizzle[3]),
- ]))
+ ])))
else:
- print ' .ArrayFormat = 0,'
- print ' },'
+ print(' .ArrayFormat = 0,')
+ print(' },')
-print '};'
+print('};')
+from __future__ import print_function
from mako.template import Template
from sys import argv
template = Template(string);
-print template.render(argv = argv[0:])
+print(template.render(argv = argv[0:]))
+from __future__ import print_function
from mako.template import Template
from sys import argv
template = Template(string);
-print template.render(argv = argv[0:])
+print(template.render(argv = argv[0:]))
# Generate a C header file containing hash tables of glGet parameter
# names for each GL API. The generated file is to be included by glGet.c
+from __future__ import print_function
+
import os, sys, imp, getopt
from collections import defaultdict
import get_hash_params
gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3", "GLES31", "GLES32"])
def print_header():
- print "typedef const unsigned short table_t[%d];\n" % (hash_table_size)
- print "static const int prime_factor = %d, prime_step = %d;\n" % \
- (prime_factor, prime_step)
+ print("typedef const unsigned short table_t[%d];\n" % (hash_table_size))
+ print("static const int prime_factor = %d, prime_step = %d;\n" % \
+ (prime_factor, prime_step))
def print_params(params):
- print "static const struct value_desc values[] = {"
+ print("static const struct value_desc values[] = {")
for p in params:
- print " { %s, %s }," % (p[0], p[1])
+ print(" { %s, %s }," % (p[0], p[1]))
- print "};\n"
+ print("};\n")
def api_name(api):
return "API_OPEN%s" % api
return "table_" + api_name(api)
def print_table(api, table):
- print "static table_t %s = {" % (table_name(api))
+ print("static table_t %s = {" % (table_name(api)))
# convert sparse (index, value) table into a dense table
dense_table = [0] * hash_table_size
for i in range(0, hash_table_size, row_size):
row = dense_table[i : i + row_size]
idx_val = ["%4d" % v for v in row]
- print " " * 4 + ", ".join(idx_val) + ","
+ print(" " * 4 + ", ".join(idx_val) + ",")
- print "};\n"
+ print("};\n")
def print_tables(tables):
for table in tables:
i = api_index(api)
dense_tables[i] = "&%s" % (tname)
- print "static table_t *table_set[] = {"
+ print("static table_t *table_set[] = {")
for expr in dense_tables:
- print " %s," % expr
- print "};\n"
+ print(" %s," % expr)
+ print("};\n")
- print "#define table(api) (*table_set[api])"
+ print("#define table(api) (*table_set[api])")
# Merge tables with matching parameter lists (i.e. GL and GL_CORE)
def merge_tables(tables):
+from __future__ import print_function
CopyRight = '''
/**************************************************************************
def generate_srgb_tables():
- print 'const float'
- print 'util_format_srgb_8unorm_to_linear_float_table[256] = {'
+ print('const float')
+ print('util_format_srgb_8unorm_to_linear_float_table[256] = {')
for j in range(0, 256, 4):
- print ' ',
- for i in range(j, j + 4):
- print '%.7e,' % (srgb_to_linear(i / 255.0),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_srgb_to_linear_8unorm_table[256] = {'
+ print(' ', end=' ')
+ print(' '.join(['%.7e,' % srgb_to_linear(i / 255.0) for i in range(j, j + 4)]))
+ print('};')
+ print()
+ print('const uint8_t')
+ print('util_format_srgb_to_linear_8unorm_table[256] = {')
for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(srgb_to_linear(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_linear_to_srgb_8unorm_table[256] = {'
+ print(' ', end=' ')
+ print(' '.join(['%3u,' % int(srgb_to_linear(i / 255.0) * 255.0 + 0.5) for i in range(j, j + 16)]))
+ print('};')
+ print()
+ print('const uint8_t')
+ print('util_format_linear_to_srgb_8unorm_table[256] = {')
for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(linear_to_srgb(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
+ print(' ', end=' ')
+ print(' '.join(['%3u,' % int(linear_to_srgb(i / 255.0) * 255.0 + 0.5) for i in range(j, j + 16)]))
+ print('};')
+ print()
# calculate the table interpolation values used in float linear to unorm8 srgb
numexp = 13
valtable.append((int_a << 16) + int_b)
- print 'const unsigned'
- print 'util_format_linear_to_srgb_helper_table[104] = {'
+ print('const unsigned')
+ print('util_format_linear_to_srgb_helper_table[104] = {')
for j in range(0, nbuckets, 4):
- print ' ',
- for i in range(j, j + 4):
- print '0x%08x,' % (valtable[i],),
- print
- print '};'
- print
+ print(' ', end=' ')
+ print(' '.join(['0x%08x,' % valtable[i] for i in range(j, j + 4)]))
+ print('};')
+ print()
def main():
- print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */'
- print
+ print('/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */')
+ print()
# This will print the copyright message on the top of this file
- print CopyRight.strip()
- print
- print '#include "format_srgb.h"'
- print
+ print(CopyRight.strip())
+ print()
+ print('#include "format_srgb.h"')
+ print()
generate_srgb_tables()
# `{localedir}/{language}/LC_MESSAGES/options.mo`.
#
+from __future__ import print_function
+
import sys
import gettext
import re
# non-ascii unicode chars in the original English descriptions.
text = escapeCString (trans.ugettext (unicode (expandCString (
matches[0].expand (r'\5')), "utf-8"))).encode("utf-8")
- print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix
+ print(matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix)
# Expand any subsequent enum lines
for match in matches[1:]:
text = escapeCString (trans.ugettext (unicode (expandCString (
match.expand (r'\3')), "utf-8"))).encode("utf-8")
- print match.expand (r'\1"' + text + r'"\5')
+ print(match.expand (r'\1"' + text + r'"\5'))
# Expand description end
if end:
- print end,
+ print(end, end='')
# Compile a list of translation classes to all supported languages.
# The first translation is always a NullTranslations.
reDESC_END = re.compile (r'\s*DRI_CONF_DESC_END')
# Print a header
-print \
-"/***********************************************************************\n" \
+print("/***********************************************************************\n" \
" *** THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT! ***\n" \
-" ***********************************************************************/"
+" ***********************************************************************/")
# Process the options template and generate options.h with all
# translations.
continue
if reLibintl_h.search (line):
# Ignore (comment out) #include <libintl.h>
- print "/* %s * commented out by gen_xmlpool.py */" % line
+ print("/* %s * commented out by gen_xmlpool.py */" % line)
continue
matchDESC = reDESC .match (line)
matchDESC_BEGIN = reDESC_BEGIN.match (line)
assert len(descMatches) == 0
descMatches = [matchDESC_BEGIN]
else:
- print line,
+ print(line, end='')
if len(descMatches) > 0:
sys.stderr.write ("Warning: unterminated description at end of file.\n")