| Index: src/gpu/vk/GrVkProgramDataManager.h
|
| diff --git a/src/gpu/vk/GrVkProgramDataManager.h b/src/gpu/vk/GrVkProgramDataManager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a0684df025f4a3273fb49cbf7d2b07a5411585e5
|
| --- /dev/null
|
| +++ b/src/gpu/vk/GrVkProgramDataManager.h
|
| @@ -0,0 +1,70 @@
|
| +/*
|
| +* Copyright 2016 Google Inc.
|
| +*
|
| +* Use of this source code is governed by a BSD-style license that can be
|
| +* found in the LICENSE file.
|
| +*/
|
| +
|
| +#ifndef GrVkProgramDataManager_DEFINED
|
| +#define GrVkProgramDataManager_DEFINED
|
| +
|
| +#include "glsl/GrGLSLProgramDataManager.h"
|
| +
|
| +#include "vk/GrVkUniformHandler.h"
|
| +
|
| +class GrVkGpu;
|
| +class GrVkUniformBuffer;
|
| +
|
| +class GrVkProgramDataManager : public GrGLSLProgramDataManager {
|
| +public:
|
| + typedef GrVkUniformHandler::UniformInfoArray UniformInfoArray;
|
| +
|
| + GrVkProgramDataManager(const UniformInfoArray&,
|
| + uint32_t vertexUniformSize,
|
| + uint32_t fragmentUniformSize);
|
| +
|
| + void set1f(UniformHandle, float v0) const override;
|
| + void set1fv(UniformHandle, int arrayCount, const float v[]) const override;
|
| + void set2f(UniformHandle, float, float) const override;
|
| + void set2fv(UniformHandle, int arrayCount, const float v[]) const override;
|
| + void set3f(UniformHandle, float, float, float) const override;
|
| + void set3fv(UniformHandle, int arrayCount, const float v[]) const override;
|
| + void set4f(UniformHandle, float, float, float, float) const override;
|
| + void set4fv(UniformHandle, int arrayCount, const float v[]) const override;
|
| + // matrices are column-major, the first two upload a single matrix, the latter two upload
|
| + // arrayCount matrices into a uniform array.
|
| + void setMatrix3f(UniformHandle, const float matrix[]) const override;
|
| + void setMatrix4f(UniformHandle, const float matrix[]) const override;
|
| + void setMatrix3fv(UniformHandle, int arrayCount, const float matrices[]) const override;
|
| + void setMatrix4fv(UniformHandle, int arrayCount, const float matrices[]) const override;
|
| +
|
| + // for nvpr only
|
| + void setPathFragmentInputTransform(VaryingHandle u, int components,
|
| + const SkMatrix& matrix) const override {
|
| + SkFAIL("Only supported in NVPR, which is not in vulkan");
|
| + }
|
| +
|
| + void uploadUniformBuffers(const GrVkGpu* gpu,
|
| + GrVkUniformBuffer* vertexBuffer,
|
| + GrVkUniformBuffer* fragmentBuffer) const;
|
| +private:
|
| + struct Uniform {
|
| + uint32_t fBinding;
|
| + uint32_t fOffset;
|
| + SkDEBUGCODE(
|
| + GrSLType fType;
|
| + int fArrayCount;
|
| + uint32_t fSetNumber;
|
| + );
|
| + };
|
| +
|
| + uint32_t fVertexUniformSize;
|
| + uint32_t fFragmentUniformSize;
|
| +
|
| + SkTArray<Uniform, true> fUniforms;
|
| +
|
| + mutable SkAutoMalloc fVertexUniformData;
|
| + mutable SkAutoMalloc fFragmentUniformData;
|
| +};
|
| +
|
| +#endif
|
|
|