Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / src / gpu / ganesh / vk / GrVkPipelineStateDataManager.h
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 GrVkPipelineStateDataManager_DEFINED
9 #define GrVkPipelineStateDataManager_DEFINED
10
11 #include "src/gpu/ganesh/GrUniformDataManager.h"
12
13 #include "include/gpu/vk/GrVkTypes.h"
14 #include "src/gpu/ganesh/vk/GrVkUniformHandler.h"
15
16 class GrGpuBuffer;
17 class GrVkCommandBuffer;
18 class GrVkGpu;
19
20 class GrVkPipelineStateDataManager : public GrUniformDataManager {
21 public:
22     typedef GrVkUniformHandler::UniformInfoArray UniformInfoArray;
23
24     GrVkPipelineStateDataManager(const UniformInfoArray&, uint32_t uniformSize,
25                                  bool usePushConstants);
26
27     // Returns the uniform buffer that holds all the uniform data. If there are no uniforms it
28     // returns nullptr. If there was an error in creating or uploading the uniforms the value of the
29     // returned bool will be false and the buffer will be nullptr. Otherwise the bool will be true.
30     std::pair<sk_sp<GrGpuBuffer>, bool> uploadUniforms(GrVkGpu* gpu, VkPipelineLayout,
31                                                        GrVkCommandBuffer* commandBuffer);
32
33     void releaseData();
34
35     // TODO: we might need more of these once std430 size/alignment issues are worked out
36     void set1iv(UniformHandle, int arrayCount, const int32_t v[]) const override;
37     void set1fv(UniformHandle, int arrayCount, const float v[]) const override;
38     void set2iv(UniformHandle, int arrayCount, const int32_t v[]) const override;
39     void set2fv(UniformHandle, int arrayCount, const float v[]) const override;
40     void setMatrix2fv(UniformHandle, int arrayCount, const float matrices[]) const override;
41
42 private:
43     sk_sp<GrGpuBuffer> fUniformBuffer;
44     bool fUsePushConstants;
45
46     using INHERITED = GrUniformDataManager;
47 };
48
49 #endif