diff options
author | 2016-02-22 09:11:32 -0500 | |
---|---|---|
committer | 2016-02-22 09:11:32 -0500 | |
commit | 48cf268defad66f58f1aa03b4835e5583be96b2f (patch) | |
tree | d6ce2161cae1b69ca7a595110185652297464696 /src/gpu/vk/GrVkProgramBuilder.h | |
parent | 1d524699274bc1d4c43af0c3d0ae269b8c37a3bb (diff) |
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
Diffstat (limited to 'src/gpu/vk/GrVkProgramBuilder.h')
-rw-r--r-- | src/gpu/vk/GrVkProgramBuilder.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/gpu/vk/GrVkProgramBuilder.h b/src/gpu/vk/GrVkProgramBuilder.h new file mode 100644 index 0000000000..1d7bac62b9 --- /dev/null +++ b/src/gpu/vk/GrVkProgramBuilder.h @@ -0,0 +1,74 @@ +/* +* 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 GrVkProgramBuilder_DEFINED +#define GrVkProgramBuilder_DEFINED + +#include "glsl/GrGLSLProgramBuilder.h" + +#include "GrPipeline.h" +#include "vk/GrVkUniformHandler.h" +#include "vk/GrVkVaryingHandler.h" + +#include "shaderc/shaderc.h" +#include "vulkan/vulkan.h" + +class GrVkGpu; +class GrVkRenderPass; +class GrVkProgram; + +class GrVkProgramBuilder : public GrGLSLProgramBuilder { +public: + /** Generates a shader program. + * + * The program implements what is specified in the stages given as input. + * After successful generation, the builder result objects are available + * to be used. + * @return true if generation was successful. + */ + static GrVkProgram* CreateProgram(GrVkGpu*, + const DrawArgs&, + GrPrimitiveType, + const GrVkRenderPass& renderPass); + + const GrCaps* caps() const override; + const GrGLSLCaps* glslCaps() const override; + + GrVkGpu* gpu() const { return fGpu; } + + void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override; + +private: + GrVkProgramBuilder(GrVkGpu*, const DrawArgs&); + + void emitSamplers(const GrProcessor&, + GrGLSLTextureSampler::TextureSamplerArray* outSamplers) override; + + GrVkProgram* finalize(const DrawArgs& args, + GrPrimitiveType primitiveType, + const GrVkRenderPass& renderPass); + + static bool CreateVkShaderModule(const GrVkGpu* gpu, + VkShaderStageFlagBits stage, + const GrGLSLShaderBuilder& builder, + VkShaderModule* shaderModule, + VkPipelineShaderStageCreateInfo* stageInfo); + + GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; } + const GrGLSLUniformHandler* uniformHandler() const override { return &fUniformHandler; } + GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } + + GrVkGpu* fGpu; + GrVkVaryingHandler fVaryingHandler; + GrVkUniformHandler fUniformHandler; + + SkTArray<UniformHandle> fSamplerUniforms; + + typedef GrGLSLProgramBuilder INHERITED; +}; + +#endif
\ No newline at end of file |