Edit

kc3-lang/angle/src/common/aligned_memory_unittest.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-01-09 17:21:54
    Hash : 2cc2a727
    Message : common: Add aligned memory allocator. This will be useful for the Vulkan pipeline state cache. This cache wants to pack the pipeline description very carefully into a specific number of bits, using the "alignas" keyword. Using this keyword requires an aligned allocator, which we can lift from Chromium's base/memory submodule. Also includes a unittest copied from Chrome. Bug: angleproject:2163 Change-Id: I25976be4610636db3f43552bba23d823f5a49a24 Reviewed-on: https://chromium-review.googlesource.com/837944 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/common/aligned_memory_unittest.cpp
  • //
    // Copyright 2017 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.
    //
    // aligned_memory_unittests: Tests for the aligned memory allocator.
    //   Tests copied from Chrome: src/base/memory/aligned_memory_unittests.cc.
    //
    
    #include "common/aligned_memory.h"
    
    #include <memory>
    
    #include "testing/gtest/include/gtest/gtest.h"
    
    #define EXPECT_ALIGNED(ptr, align) EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(ptr) & (align - 1))
    
    namespace angle
    {
    
    // Test that dynamic allocation works as expected.
    TEST(AlignedMemoryTest, DynamicAllocation)
    {
        void *p = AlignedAlloc(8, 8);
        EXPECT_TRUE(p);
        EXPECT_ALIGNED(p, 8);
        AlignedFree(p);
    
        p = AlignedAlloc(8, 16);
        EXPECT_TRUE(p);
        EXPECT_ALIGNED(p, 16);
        AlignedFree(p);
    
        p = AlignedAlloc(8, 256);
        EXPECT_TRUE(p);
        EXPECT_ALIGNED(p, 256);
        AlignedFree(p);
    
        p = AlignedAlloc(8, 4096);
        EXPECT_TRUE(p);
        EXPECT_ALIGNED(p, 4096);
        AlignedFree(p);
    }
    
    }  // namespace base