Edit

kc3-lang/angle/src/libANGLE/renderer/vulkan/formatutilsvk.h

Branch :

  • Show log

    Commit

  • Author : Frank Henigman
    Date : 2017-05-03 23:32:29
    Hash : aa7203ef
    Message : Inherit privately from angle::NonCopyable. Make all inheritance from angle::NonCopyable private so the compiler complains about this (admittedly unlikely) code: class Foo: angle::NonCopyable { virtual ~Foo() { ... } }; angle::NonCopyable *p = new Foo; delete p; In the above code ~Foo() is not called, only ~NonCopyable(), because the latter is not virtual. Making it virtual would add overhead to all derived classes which don't already have a virtual method. Also tighten access in NonCopyable, because we can. BUG=angleproject:2026 Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0 Reviewed-on: https://chromium-review.googlesource.com/495352 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>

  • src/libANGLE/renderer/vulkan/formatutilsvk.h
  • //
    // 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.
    //
    // Vk::Format:
    //   Vulkan implementation of a storage format.
    
    #ifndef LIBANGLE_RENDERER_VULKAN_FORMAT_H_
    #define LIBANGLE_RENDERER_VULKAN_FORMAT_H_
    
    #include <vulkan/vulkan.h>
    
    #include "libANGLE/renderer/Format.h"
    #include "libANGLE/renderer/renderer_utils.h"
    
    namespace rx
    {
    
    namespace vk
    {
    
    struct Format final : private angle::NonCopyable
    {
        constexpr Format(GLenum internalFormat,
                         angle::Format::ID formatID,
                         VkFormat native,
                         InitializeTextureDataFunction initFunction);
    
        static const Format &Get(GLenum internalFormat);
    
        const angle::Format &format() const;
        LoadFunctionMap getLoadFunctions() const;
    
        GLenum internalFormat;
        angle::Format::ID formatID;
        VkFormat native;
        InitializeTextureDataFunction dataInitializerFunction;
    };
    
    constexpr Format::Format(GLenum internalFormat,
                             angle::Format::ID formatID,
                             VkFormat native,
                             InitializeTextureDataFunction initFunction)
        : internalFormat(internalFormat),
          formatID(formatID),
          native(native),
          dataInitializerFunction(initFunction)
    {
    }
    
    // TODO(jmadill): This is temporary. Figure out how to handle format conversions.
    VkFormat GetNativeVertexFormat(gl::VertexFormatType vertexFormat);
    
    }  // namespace vk
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_VULKAN_FORMAT_H_