1# Copyright (c) 2019 Collabora Ltd 2# Copyright © 2019-2020 Valve Corporation. 3# 4# Permission is hereby granted, free of charge, to any person obtaining a 5# copy of this software and associated documentation files (the "Software"), 6# to deal in the Software without restriction, including without limitation 7# the rights to use, copy, modify, merge, publish, distribute, sublicense, 8# and/or sell copies of the Software, and to permit persons to whom the 9# Software is furnished to do so, subject to the following conditions: 10# 11# The above copyright notice and this permission notice shall be included 12# in all copies or substantial portions of the Software. 13# 14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 18# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20# OTHER DEALINGS IN THE SOFTWARE. 21# 22# SPDX-License-Identifier: MIT 23 24import os 25from pathlib import Path 26from enum import Enum, auto 27 28class TraceType(Enum): 29 UNKNOWN = auto() 30 APITRACE = auto() 31 APITRACE_DXGI = auto() 32 RENDERDOC = auto() 33 GFXRECONSTRUCT = auto() 34 TESTTRACE = auto() 35 36_trace_type_info_map = { 37 TraceType.APITRACE : ("apitrace", ".trace"), 38 TraceType.APITRACE_DXGI : ("apitrace-dxgi", ".trace-dxgi"), 39 TraceType.RENDERDOC : ("renderdoc", ".rdc"), 40 TraceType.GFXRECONSTRUCT : ("gfxreconstruct", ".gfxr"), 41 TraceType.TESTTRACE : ("testtrace", ".testtrace") 42} 43 44def all_trace_type_names(): 45 s = [] 46 for t,(name, ext) in _trace_type_info_map.items(): 47 if t != TraceType.UNKNOWN: 48 s.append(name) 49 return s 50 51def trace_type_from_name(tt_name): 52 for t,(name, ext) in _trace_type_info_map.items(): 53 if tt_name == name: 54 return t 55 56 return TraceType.UNKNOWN 57 58def trace_type_from_filename(trace_file): 59 for t,(name, ext) in _trace_type_info_map.items(): 60 if trace_file.endswith(ext): 61 return t 62 63 return TraceType.UNKNOWN 64