diff options
Diffstat (limited to 'scripts/gpu_table_tester')
| -rwxr-xr-x | scripts/gpu_table_tester | 293 | 
1 files changed, 0 insertions, 293 deletions
| diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester deleted file mode 100755 index af0678000d..0000000000 --- a/scripts/gpu_table_tester +++ /dev/null @@ -1,293 +0,0 @@ -#!/usr/bin/perl -## Checks entries in the indra/newview/gpu_table.txt file against sample data -## -## Copyright (c) 2011, Linden Research, Inc. -## -## Permission is hereby granted, free of charge, to any person obtaining a copy -## of this software and associated documentation files (the "Software"), to deal -## in the Software without restriction, including without limitation the rights -## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -## copies of the Software, and to permit persons to whom the Software is -## furnished to do so, subject to the following conditions: -## -## The above copyright notice and this permission notice shall be included in -## all copies or substantial portions of the Software. -## -## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -## THE SOFTWARE. - -use English; -use Getopt::Long; - -( $MyName = $0 ) =~ s|.*/||; -my $mini_HELP = " -  $MyName {--gpu-table|-g} <gpu_table.txt> {--table-only|-t} -   -    Checks for duplicates and invalid lines in the gpu_table.txt file. - -  $MyName {--gpu-table|-g} <gpu_table.txt> [ <gpu-strings-file> ... ] -          [{--unmatched|-u}] - -    Tests the recognition of values in the gpu-strings-files (or  -    standard input if no files are given).   The results of attempting to match  -    each input line are displayed in report form, showing: -     - NO MATCH, unsupported, or supported -     - the class of the GPU -     - the label for the recognizer line from the gpu_table that it matched - -    If the --unmatched option is specified, then no output is produced for -    values that are matched. - -  $MyName {--gpu-table|-g} <gpu_table.txt> {--diff|-d} <old_results> [ <gpu-strings-file> ...] - -    With the --diff option, the report compares the current results to <old-results>, -    which should be the output from a previous run without --diff.  The report shows each -    input value with the old result and the new result if it is different. -"; - -&GetOptions("help"               => \$Help -            ,"unmatched"         => \$UnMatchedOnly -            ,"table-only"        => \$TableOnly -            ,"gpu-table=s"       => \$GpuTable -            ,"diff=s"            => \$Diff -    ) -    || die "$mini_HELP"; - -if ($Help) -{ -    print $mini_HELP; -    exit 0; -} - -$ErrorsSeen = 0; -$NoMatch = 'NO MATCH'; # constant - -die "Must specify a --gpu-table <gpu_table.txt> value" -    unless $GpuTable; - -open(GPUS, "<$GpuTable") -    || die "Failed to open gpu table '$GpuTable':\n\t$!\n"; - -my $FirstLine = <GPUS>; -die "First line of gpu table does not begin with '//GPU_TABLE'" -    unless $FirstLine =~ m|^//GPU_TABLE|; - -# Parse the GPU table into these tables, indexed by the name -my %NameLine;       # name -> line number on which a given name was found (catches duplicate names) -my %RecognizerLine; # name -> line number on which a given name was found (catches duplicate names) -my %Name;           # recognizer -> name -my %Recognizer;     # name -> recognizer -my %Class;          # recognizer -> class -my %Supported;      # recognizer -> supported -my @InOrder;        # lowercased recognizers in file order - these are the ones really used to match -my %StatsBased; -my %ExpectedOpenGL; - -$Name{$NoMatch}      = $NoMatch; -$NameLine{$NoMatch}  = '(hard-coded)'; # use this for error messages in table parsing -$Class{$NoMatch}     = ''; -$Supported{$NoMatch} = ''; -$StatsBased{$NoMatch} = ''; -$ExpectedOpenGL{$NoMatch} = ''; - -while (<GPUS>) -{ -    next if m|^//|;    # skip comments -    next if m|^\s*$|;  # skip blank lines - -    chomp; -    my ($name, $regex, $class, $supported, $stats_based, $expected_opengl, $extra) = split('\t+'); -    my $errsOnLine = $ErrorsSeen; -    if (!$name) -    { -        print STDERR "No name found on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    elsif ( defined $NameLine{$name} ) -    { -        print STDERR "Duplicate name '$name' on $GpuTable lines $NameLine{$name} and $INPUT_LINE_NUMBER:\n"; -        print STDERR "     $NameLine{$name}: /$Recognizer{$name}/  $Supported{$Recognizer{$name}}  class $Class{$Recognizer{$name}}\n"; -        print STDERR "     $INPUT_LINE_NUMBER: /$regex/  " . ($supported ? "supported" : "unsupported") .  " class $class - ignored\n"; -        $ErrorsSeen++; -    } -    if (!$regex) -    { -        print STDERR "No recognizer found on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    elsif ( defined $RecognizerLine{$regex} ) -    { -        print STDERR "Duplicate recognizer /$regex/ found on $GpuTable lines $RecognizerLine{$regex} and $INPUT_LINE_NUMBER (ignored)\n"; -        print STDERR "     $RecognizerLine{$regex}: name '$Name{$regex}'  $Supported{$regex}  class $Class{$regex}\n"; -        print STDERR "     $INPUT_LINE_NUMBER: name '$name'  " . ($supported ? "supported" : "unsupported") .  "  class $class - ignored\n"; -        $ErrorsSeen++; -    } -    if ($class !~ m/[012345]/) -    { -        print STDERR "Invalid class value '$class' on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    if ($supported !~ m/[0123]/) -    { -        print STDERR "Invalid supported value '$supported' on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    if ($stats_based !~ m/[01]/) -    { -        print STDERR "Invalid stats_based value '$stats_based' on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    if ($expected_opengl !~ m/\d+(\.\d+)?/) -    { -        print STDERR "Invalid expected_opengl value '$expected_opengl' on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -    if ($extra) -    { -        print STDERR "Extra data '$extra' on $GpuTable line $INPUT_LINE_NUMBER\n"; -        $ErrorsSeen++; -    } -     -    if ($errsOnLine == $ErrorsSeen) # no errors found on this line -    { -        push @InOrder,$regex; -        $NameLine{$name} = $INPUT_LINE_NUMBER; -        $RecognizerLine{$regex} = $INPUT_LINE_NUMBER; -        $Name{$regex} = $name; -        $Recognizer{$name} = $regex; -        $Class{$regex} = $class; -        $Supported{$regex} = $supported ? "supported" : "unsupported"; -        $StatsBased{$regex} = $stats_based; -        $ExpectedOpenGL{$regex} = $expected_opengl; -    } -} - -close GPUS; - -print STDERR "\n" if $ErrorsSeen; - -exit $ErrorsSeen if $TableOnly; - - -# Loop over input lines, find the results for each  -my %RecognizedBy; -while (<>)  -{ -    chomp; -    $_ = substr($_,0,100); -    my $lcInput = lc $_;  # the real gpu table parser lowercases the input string -    my $recognizer; -    $RecognizedBy{$_} = $NoMatch; -    foreach $recognizer ( @InOrder ) # note early exit if recognized -    { -        my $lcRecognizer = lc $recognizer; # the real gpu table parser lowercases the recognizer -        if ( $lcInput =~ m/$lcRecognizer/ ) -        { -            $RecognizedBy{$_} = $recognizer; -            last; # exit recognizer loop -        } -    } -} - -format STDOUT_TOP = -GPU String                                                                                               Supported?  Class  Stats  OpenGL  Recognizer -------------------------------------------------------------------------------------------------------   ----------- -----  -----  ------  ------------------------------------ -. -format STDOUT = -@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   @<<<<<<<<<<   @>    @>     @<<<<  @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... -$_, $Supported{$RecognizedBy{$_}},$Class{$RecognizedBy{$_}},$StatsBased{$RecognizedBy{$_}},$ExpectedOpenGL{$RecognizedBy{$_}},$Name{$RecognizedBy{$_}} -. - -my $ReportLineTemplate = "A102xxxA12xxxA2xxxxA2xxxxA5A*"; # Used to read a previous report - MUST match the format STDOUT above - -my ( $oldSupported, $oldClass, $newSupported, $newClass ); - -format DIFF_TOP = -                                                                                                         ------------- OLD -------------  ----------- NEW -------------------- -GPU String                                                                                               Supported?  Class Stats OpenGL   Supported?  Class Stats OpenGL  Line -------------------------------------------------------------------------------------------------------   ----------- ----- ----- ------   ----------- ----- ----- ------ ----- -.                                                                                                                                              -format DIFF =                                                                                                                                  -@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   @<<<<<<<<<<   @>    @>  @<<<<    @<<<<<<<<<<    @>   @>  @<<<<  @>>>> -$_, $oldSupported, $oldClass, $oldStatsBased, $oldExpectedOpenGL, $newSupported, $newClass, $newStatsBased, $newExpectedOpenGL, $newRecognizedLine -. - -if ( ! $Diff ) -{ -    ## Print results of testing each input line and how it was recognized.  -    foreach ( sort keys %RecognizedBy ) -    { -        write if ! $UnMatchedOnly || $Name{$RecognizedBy{$_}} eq $NoMatch; -        $-++; # suppresses pagination -    } -} -else -{ -    ## Print a comparison of how the recognition this time compared to the results from the $Diff file -    open OLD, "<$Diff" -        || die "Failed to open --diff file '$Diff'\n\t$!\n"; -    my $discard = 2; -    while ( <OLD> ) -    { -        if ( $discard <= 0 ) -        { -            my ( $gpu, $supported, $class, $stats, $opengl ) = unpack $ReportLineTemplate; -            $gpu =~ s/\s*$//; -            ( $OldSupported{$gpu} = $supported ) =~ s/\s*$//; -            ( $OldClass{$gpu} = $class ) =~ s/\s*$//; -            ( $OldStatsBased{$gpu} = $stats ) =~ s/\s*$//; -            ( $OldExpectedOpenGL{$gpu} = $opengl ) =~ s/\s*$//; -        } -        else -        { -            $discard--; -        } -    } -    close OLD; - -    $FORMAT_TOP_NAME = 'DIFF_TOP'; -    $FORMAT_NAME = 'DIFF'; -    foreach ( sort keys %RecognizedBy ) -    { -        $newSupported = $Supported{$RecognizedBy{$_}} || $NoMatch; -        $newClass     = $Class{$RecognizedBy{$_}}; -        $newStatsBased     = $StatsBased{$RecognizedBy{$_}}; -        $newExpectedOpenGL = $ExpectedOpenGL{$RecognizedBy{$_}}; -        $newRecognizedLine = $RecognizerLine{$RecognizedBy{$_}}; - -        if ( ! defined $OldSupported{$_} ) -        { -            $oldSupported = 'NEW'; -            $oldClass = '-'; -            $oldStatsBased = '-'; -            $oldExpectedOpenGL = '-'; -            write; -            $-++; # suppresses pagination -        } -        else -        { -            $oldSupported = $OldSupported{$_} || $NoMatch; -            $oldClass     = $OldClass{$_}; -            $oldStatsBased     = $OldStatsBased{$_}; -            $oldExpectedOpenGL = $OldExpectedOpenGL{$_}; - -            if (   ( $oldSupported ne $newSupported ) -                || ( $oldClass  ne $newClass ) -                || ( $oldStatsBased ne $newStatsBased ) -                || ( $oldExpectedOpenGL ne $newExpectedOpenGL ) -                ) -            { -                write; -                $-++; # suppresses pagination -            } -        } - -    } -} - -exit $ErrorsSeen; | 
