• commit-bot@chromium.org's avatar
    Speed up GrResourceCache lookup by inlining GrBinHashKey comparisons · 742058f0
    commit-bot@chromium.org authored
    The GCC compilers for Android and Ubuntu do not seem to be able to
    inline the memcmp operations on GrBinHashKey data. Write the comparisons
    manually. Also shortcut GrBinHashKey::EQ to skip comparison when hashes
    do not match.
    
    Speeds up grresourcecache_find test on ARM and x86_64. Speeds up
    grresourcecache_add on x86_64.
    
    In order to test the change, moves ad hoc Gr unit tests from
    src/gr_unittest.cpp to tests/GrUnitTests to be consistent with other
    tests and enables GrUnitTests.
    
    Fixes a regression from r2863 with where re-setting GrBinHashKey data
    would not set the hash correctly. This should also improve the hash
    function itself. The regression caused many of the hash operations be
    no-ops. This is caught by the unit test.
    
    Renames the comparison functions that GrHashTable needs from EQ, LT to
    Equals, LessThan.
    
    Renames GrTBinHashKey to GrBinHashKey. The GrTBinHashKey used to
    forward comparison functions to an ENTRY template class, which would
    extract the key and call back to the GrTBinHashKey. This would save
    the user from writing one comparison function when comparison was done
    with int ENTRY::compare(). There's no real benefit in this now. Also
    this was used only for one class (GrTextureStripAtlas). The other use
    in GrResourceKey was not actually using the provided "shortcut". The
    new GrBinHashKey is not templated with the entry, rather just provides
    == and < functions. The users of GrTHashTable provide the needed
    functions now.
    
    Adds explicit documentation of functions that are actually needed
    GrTHashTable for the Key template. Adds SK_DEBUG guards according to
    the contract.
    
    R=bsalomon@google.com, mtklein@google.com
    
    Author: kkinnunen@nvidia.com
    
    Review URL: https://codereview.chromium.org/88113002
    
    git-svn-id: http://skia.googlecode.com/svn/trunk@12426 2bbb7eff-a529-9590-31e7-b0007b416f81
    742058f0
tests.gyp 6.03 KB