• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2013 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // copyvertex.h: Defines vertex buffer copying and conversion functions
8 
9 #ifndef LIBANGLE_RENDERER_COPYVERTEX_H_
10 #define LIBANGLE_RENDERER_COPYVERTEX_H_
11 
12 #include "common/mathutil.h"
13 
14 namespace rx
15 {
16 
17 using VertexCopyFunction = void (*)(const uint8_t *input,
18                                     size_t stride,
19                                     size_t count,
20                                     uint8_t *output);
21 
22 // 'alphaDefaultValueBits' gives the default value for the alpha channel (4th component)
23 template <typename T,
24           size_t inputComponentCount,
25           size_t outputComponentCount,
26           uint32_t alphaDefaultValueBits>
27 void CopyNativeVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
28 
29 template <size_t inputComponentCount, size_t outputComponentCount>
30 void Copy8SintTo16SintVertexData(const uint8_t *input,
31                                  size_t stride,
32                                  size_t count,
33                                  uint8_t *output);
34 
35 template <size_t componentCount>
36 void Copy8SnormTo16SnormVertexData(const uint8_t *input,
37                                    size_t stride,
38                                    size_t count,
39                                    uint8_t *output);
40 
41 template <size_t inputComponentCount, size_t outputComponentCount>
42 void Copy32FixedTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
43 
44 template <typename T, size_t inputComponentCount, size_t outputComponentCount, bool normalized>
45 void CopyTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
46 
47 template <bool isSigned, bool normalized, bool toFloat>
48 void CopyXYZ10W2ToXYZW32FVertexData(const uint8_t *input,
49                                     size_t stride,
50                                     size_t count,
51                                     uint8_t *output);
52 
53 template <bool isSigned, bool normalized>
54 void CopyXYZ10ToXYZW32FVertexData(const uint8_t *input,
55                                   size_t stride,
56                                   size_t count,
57                                   uint8_t *output);
58 
59 template <bool isSigned, bool normalized>
60 void CopyW2XYZ10ToXYZW32FVertexData(const uint8_t *input,
61                                     size_t stride,
62                                     size_t count,
63                                     uint8_t *output);
64 
65 }  // namespace rx
66 
67 #include "copyvertex.inc.h"
68 
69 #endif  // LIBANGLE_RENDERER_COPYVERTEX_H_
70