diff options
Diffstat (limited to 'gfx/angle/src/libANGLE/gen_format_map.py')
-rw-r--r-- | gfx/angle/src/libANGLE/gen_format_map.py | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/gfx/angle/src/libANGLE/gen_format_map.py b/gfx/angle/src/libANGLE/gen_format_map.py deleted file mode 100644 index b67f42784..000000000 --- a/gfx/angle/src/libANGLE/gen_format_map.py +++ /dev/null @@ -1,187 +0,0 @@ -#!/usr/bin/python -# Copyright 2016 The ANGLE Project Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -# -# gen_format_map.py: -# Code generation for GL format map. The format map matches between -# {format,type} and internal format. - -from datetime import date -import sys - -sys.path.append('renderer') -import angle_format - -template_cpp = """// GENERATED FILE - DO NOT EDIT. -// Generated by {script_name} using data from {data_source_name}. -// ES3 format info from {es3_data_source_name}. -// -// Copyright {copyright_year} The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// format_map: -// Determining the sized internal format from a (format,type) pair. -// Also check es3 format combinations for validity. - -#include "angle_gl.h" -#include "common/debug.h" - -namespace gl -{{ - -GLenum GetSizedFormatInternal(GLenum format, GLenum type) -{{ - switch (format) - {{ -{format_cases} case GL_NONE: - return GL_NONE; - - default: - break; - }} - - return GL_NONE; -}} - -bool ValidES3Format(GLenum format) -{{ - switch (format) - {{ -{es3_format_cases} return true; - - default: - return false; - }} -}} - -bool ValidES3Type(GLenum type) -{{ - switch (type) - {{ -{es3_type_cases} return true; - - default: - return false; - }} -}} - -bool ValidES3FormatCombination(GLenum format, GLenum type, GLenum internalFormat) -{{ - ASSERT(ValidES3Format(format) && ValidES3Type(type)); - - switch (format) - {{ -{es3_combo_cases} default: - UNREACHABLE(); - break; - }} - - return false; -}} - -}} // namespace gl -""" - -template_format_case = """ case {format}: - switch (type) - {{ -{type_cases} default: - break; - }} - break; - -""" - -template_simple_case = """ case {key}: - return {result}; -""" - -template_es3_combo_type_case = """ case {type}: - {{ - switch (internalFormat) - {{ -{internal_format_cases} return true; - default: - break; - }} - break; - }} -""" - -def parse_type_case(type, result): - return template_simple_case.format( - key = type, result = result) - -def parse_format_case(format, type_map): - type_cases = "" - for type, internal_format in sorted(type_map.iteritems()): - type_cases += parse_type_case(type, internal_format) - return template_format_case.format( - format = format, type_cases = type_cases) - -input_script = 'format_map_data.json' - -format_map = angle_format.load_json(input_script) - -format_cases = "" - -for format, type_map in sorted(format_map.iteritems()): - format_cases += parse_format_case(format, type_map) - -combo_data_file = 'es3_format_type_combinations.json' -es3_combo_data = angle_format.load_json(combo_data_file) -combo_data = [combo for sublist in es3_combo_data.values() for combo in sublist] - -types = set() -formats = set() -combos = {} - -for internal_format, format, type in combo_data: - types.update([type]) - formats.update([format]) - if format not in combos: - combos[format] = {} - if type not in combos[format]: - combos[format][type] = [internal_format] - else: - combos[format][type] += [internal_format] - -es3_format_cases = "" - -for format in sorted(formats): - es3_format_cases += " case " + format + ":\n" - -es3_type_cases = "" - -for type in sorted(types): - es3_type_cases += " case " + type + ":\n" - -es3_combo_cases = "" - -for format, type_combos in combos.iteritems(): - this_type_cases = "" - for type, combos in type_combos.iteritems(): - internal_format_cases = "" - for internal_format in combos: - internal_format_cases += " case " + internal_format + ":\n" - - this_type_cases += template_es3_combo_type_case.format( - type = type, internal_format_cases = internal_format_cases) - - es3_combo_cases += template_format_case.format( - format = format, type_cases = this_type_cases) - -with open('format_map_autogen.cpp', 'wt') as out_file: - output_cpp = template_cpp.format( - script_name = sys.argv[0], - data_source_name = input_script, - es3_data_source_name = combo_data_file, - copyright_year = date.today().year, - format_cases = format_cases, - es3_format_cases = es3_format_cases, - es3_type_cases = es3_type_cases, - es3_combo_cases = es3_combo_cases) - out_file.write(output_cpp) - out_file.close() |