Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: src/gpu/vk/GrVkProgramBuilder.h

Issue 1816153002: Set up cache in vulkan to reuse GrVkPrograms (aka VkPipelines) (Closed) Base URL: https://skia.googlesource.com/skia.git@progSamplers
Patch Set: cleanup Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrVkProgramBuilder_DEFINED 8 #ifndef GrVkProgramBuilder_DEFINED
9 #define GrVkProgramBuilder_DEFINED 9 #define GrVkProgramBuilder_DEFINED
10 10
11 #include "glsl/GrGLSLProgramBuilder.h" 11 #include "glsl/GrGLSLProgramBuilder.h"
12 12
13 #include "GrPipeline.h" 13 #include "GrPipeline.h"
14 #include "vk/GrVkUniformHandler.h" 14 #include "GrVkProgram.h"
15 #include "vk/GrVkVaryingHandler.h" 15 #include "GrVkUniformHandler.h"
16 #include "GrVkVaryingHandler.h"
16 17
17 #include "shaderc/shaderc.h" 18 #include "shaderc/shaderc.h"
18 #include "vulkan/vulkan.h" 19 #include "vulkan/vulkan.h"
19 20
20 class GrVkGpu; 21 class GrVkGpu;
21 class GrVkRenderPass; 22 class GrVkRenderPass;
22 class GrVkProgram;
23 class GrVkProgramDesc; 23 class GrVkProgramDesc;
24 24
25 class GrVkProgramBuilder : public GrGLSLProgramBuilder { 25 class GrVkProgramBuilder : public GrGLSLProgramBuilder {
26 public: 26 public:
27 /** Generates a shader program. 27 /** Generates a shader program.
28 * 28 *
29 * The program implements what is specified in the stages given as input. 29 * The program implements what is specified in the stages given as input.
30 * After successful generation, the builder result objects are available 30 * After successful generation, the builder result objects are available
31 * to be used. 31 * to be used.
32 * @return true if generation was successful. 32 * @return true if generation was successful.
33 */ 33 */
34 static GrVkProgram* CreateProgram(GrVkGpu*, 34 static GrVkProgram* CreateProgram(GrVkGpu*,
35 const GrPipeline&, 35 const GrPipeline&,
36 const GrPrimitiveProcessor&, 36 const GrPrimitiveProcessor&,
37 GrPrimitiveType, 37 GrPrimitiveType,
38 const GrVkProgramDesc&, 38 const GrVkProgram::PipelineDesc&,
39 const GrVkRenderPass& renderPass); 39 const GrVkRenderPass& renderPass);
40 40
41 const GrCaps* caps() const override; 41 const GrCaps* caps() const override;
42 const GrGLSLCaps* glslCaps() const override; 42 const GrGLSLCaps* glslCaps() const override;
43 43
44 GrVkGpu* gpu() const { return fGpu; } 44 GrVkGpu* gpu() const { return fGpu; }
45 45
46 void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override; 46 void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override;
47 47
48 private: 48 private:
49 GrVkProgramBuilder(GrVkGpu*, 49 GrVkProgramBuilder(GrVkGpu*,
50 const GrPipeline&, 50 const GrPipeline&,
51 const GrPrimitiveProcessor&, 51 const GrPrimitiveProcessor&,
52 const GrVkProgramDesc&); 52 const GrVkProgramDesc&);
53 53
54 GrVkProgram* finalize(GrPrimitiveType primitiveType, const GrVkRenderPass& r enderPass); 54 GrVkProgram* finalize(GrPrimitiveType primitiveType,
55 const GrVkRenderPass& renderPass,
56 const GrVkProgram::PipelineDesc&);
55 57
56 static bool CreateVkShaderModule(const GrVkGpu* gpu, 58 static bool CreateVkShaderModule(const GrVkGpu* gpu,
57 VkShaderStageFlagBits stage, 59 VkShaderStageFlagBits stage,
58 const GrGLSLShaderBuilder& builder, 60 const GrGLSLShaderBuilder& builder,
59 VkShaderModule* shaderModule, 61 VkShaderModule* shaderModule,
60 VkPipelineShaderStageCreateInfo* stageInfo) ; 62 VkPipelineShaderStageCreateInfo* stageInfo) ;
61 63
62 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; } 64 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; }
63 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; } 65 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; }
64 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } 66 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; }
65 67
66 GrVkGpu* fGpu; 68 GrVkGpu* fGpu;
67 GrVkVaryingHandler fVaryingHandler; 69 GrVkVaryingHandler fVaryingHandler;
68 GrVkUniformHandler fUniformHandler; 70 GrVkUniformHandler fUniformHandler;
69 71
70 typedef GrGLSLProgramBuilder INHERITED; 72 typedef GrGLSLProgramBuilder INHERITED;
71 }; 73 };
72 74
73 #endif 75 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698