From 48cf268defad66f58f1aa03b4835e5583be96b2f Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Mon, 22 Feb 2016 09:11:32 -0500 Subject: Add vulkan files into skia repo. This is an incomplete backend with only partial functionality at this time. R=robertphillips@google.com TBR=bsalomon@google.com BUG=skia:4955 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1718693002 Review URL: https://codereview.chromium.org/1718693002 --- src/gpu/vk/GrVkProgramDataManager.h | 70 +++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/gpu/vk/GrVkProgramDataManager.h (limited to 'src/gpu/vk/GrVkProgramDataManager.h') diff --git a/src/gpu/vk/GrVkProgramDataManager.h b/src/gpu/vk/GrVkProgramDataManager.h new file mode 100644 index 0000000000..a0684df025 --- /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 fUniforms; + + mutable SkAutoMalloc fVertexUniformData; + mutable SkAutoMalloc fFragmentUniformData; +}; + +#endif \ No newline at end of file -- cgit v1.2.3