OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2016 Google Inc. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license that can be | |
5 * found in the LICENSE file. | |
6 */ | |
7 | |
8 #ifndef GrVkProgramDataManager_DEFINED | |
9 #define GrVkProgramDataManager_DEFINED | |
10 | |
11 #include "glsl/GrGLSLProgramDataManager.h" | |
12 | |
13 #include "vk/GrVkUniformHandler.h" | |
14 | |
15 class GrVkGpu; | |
16 class GrVkUniformBuffer; | |
17 | |
18 class GrVkProgramDataManager : public GrGLSLProgramDataManager { | |
19 public: | |
20 typedef GrVkUniformHandler::UniformInfoArray UniformInfoArray; | |
21 | |
22 GrVkProgramDataManager(const UniformInfoArray&, | |
23 uint32_t vertexUniformSize, | |
24 uint32_t fragmentUniformSize); | |
25 | |
26 void set1f(UniformHandle, float v0) const override; | |
27 void set1fv(UniformHandle, int arrayCount, const float v[]) const override; | |
28 void set2f(UniformHandle, float, float) const override; | |
29 void set2fv(UniformHandle, int arrayCount, const float v[]) const override; | |
30 void set3f(UniformHandle, float, float, float) const override; | |
31 void set3fv(UniformHandle, int arrayCount, const float v[]) const override; | |
32 void set4f(UniformHandle, float, float, float, float) const override; | |
33 void set4fv(UniformHandle, int arrayCount, const float v[]) const override; | |
34 // matrices are column-major, the first two upload a single matrix, the latt
er two upload | |
35 // arrayCount matrices into a uniform array. | |
36 void setMatrix3f(UniformHandle, const float matrix[]) const override; | |
37 void setMatrix4f(UniformHandle, const float matrix[]) const override; | |
38 void setMatrix3fv(UniformHandle, int arrayCount, const float matrices[]) con
st override; | |
39 void setMatrix4fv(UniformHandle, int arrayCount, const float matrices[]) con
st override; | |
40 | |
41 // for nvpr only | |
42 void setPathFragmentInputTransform(VaryingHandle u, int components, | |
43 const SkMatrix& matrix) const override { | |
44 SkFAIL("Only supported in NVPR, which is not in vulkan"); | |
45 } | |
46 | |
47 void uploadUniformBuffers(const GrVkGpu* gpu, | |
48 GrVkUniformBuffer* vertexBuffer, | |
49 GrVkUniformBuffer* fragmentBuffer) const; | |
50 private: | |
51 struct Uniform { | |
52 uint32_t fBinding; | |
53 uint32_t fOffset; | |
54 SkDEBUGCODE( | |
55 GrSLType fType; | |
56 int fArrayCount; | |
57 uint32_t fSetNumber; | |
58 ); | |
59 }; | |
60 | |
61 uint32_t fVertexUniformSize; | |
62 uint32_t fFragmentUniformSize; | |
63 | |
64 SkTArray<Uniform, true> fUniforms; | |
65 | |
66 mutable SkAutoMalloc fVertexUniformData; | |
67 mutable SkAutoMalloc fFragmentUniformData; | |
68 }; | |
69 | |
70 #endif | |
OLD | NEW |