Edit

kc3-lang/angle/src/libANGLE/renderer/copyvertex.h

Branch :

  • Show log

    Commit

  • Author : Shahbaz Youssefi
    Date : 2021-04-06 16:23:39
    Hash : 0273ea3f
    Message : Vulkan: Use RGBA16_FLOAT for buffer format fallback ... instead of RGBA32_FLOAT. VK_FORMAT_R16G16B16A16_SFLOAT has mandatory support for vertex buffers. Bug: b/184163871 Change-Id: I7ef2933cd15e46bb984e6fd1b020d2ec15b9c60e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2807780 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/copyvertex.h
  • //
    // Copyright 2013 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.
    //
    
    // copyvertex.h: Defines vertex buffer copying and conversion functions
    
    #ifndef LIBANGLE_RENDERER_COPYVERTEX_H_
    #define LIBANGLE_RENDERER_COPYVERTEX_H_
    
    #include "common/mathutil.h"
    
    namespace rx
    {
    
    using VertexCopyFunction = void (*)(const uint8_t *input,
                                        size_t stride,
                                        size_t count,
                                        uint8_t *output);
    
    // 'alphaDefaultValueBits' gives the default value for the alpha channel (4th component)
    template <typename T,
              size_t inputComponentCount,
              size_t outputComponentCount,
              uint32_t alphaDefaultValueBits>
    void CopyNativeVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    template <size_t inputComponentCount, size_t outputComponentCount>
    void Copy8SintTo16SintVertexData(const uint8_t *input,
                                     size_t stride,
                                     size_t count,
                                     uint8_t *output);
    
    template <size_t componentCount>
    void Copy8SnormTo16SnormVertexData(const uint8_t *input,
                                       size_t stride,
                                       size_t count,
                                       uint8_t *output);
    
    template <size_t inputComponentCount, size_t outputComponentCount>
    void Copy32FixedTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    template <typename T,
              size_t inputComponentCount,
              size_t outputComponentCount,
              bool normalized,
              bool toHalf>
    void CopyToFloatVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    template <size_t inputComponentCount, size_t outputComponentCount>
    void Copy32FTo16FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    void CopyXYZ32FToXYZ9E5(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    void CopyXYZ32FToX11Y11B10F(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
    
    template <bool isSigned, bool normalized, bool toFloat, bool toHalf>
    void CopyXYZ10W2ToXYZWFloatVertexData(const uint8_t *input,
                                          size_t stride,
                                          size_t count,
                                          uint8_t *output);
    
    template <bool isSigned, bool normalized, bool toHalf>
    void CopyXYZ10ToXYZWFloatVertexData(const uint8_t *input,
                                        size_t stride,
                                        size_t count,
                                        uint8_t *output);
    
    template <bool isSigned, bool normalized, bool toHalf>
    void CopyW2XYZ10ToXYZWFloatVertexData(const uint8_t *input,
                                          size_t stride,
                                          size_t count,
                                          uint8_t *output);
    
    }  // namespace rx
    
    #include "copyvertex.inc.h"
    
    #endif  // LIBANGLE_RENDERER_COPYVERTEX_H_