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

Side by Side Diff: src/gpu/vk/GrVkPipelineStateBuilder.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: rebase 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
« no previous file with comments | « src/gpu/vk/GrVkPipelineState.cpp ('k') | src/gpu/vk/GrVkPipelineStateBuilder.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 GrVkPipelineStateBuilder_DEFINED
9 #define GrVkProgramBuilder_DEFINED 9 #define GrVkPipelineStateBuilder_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 "GrVkPipelineState.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 GrVkPipelineStateBuilder : public GrGLSLProgramBuilder {
26 public: 26 public:
27 /** Generates a shader program. 27 /** Generates a pipeline state.
28 * 28 *
29 * The program implements what is specified in the stages given as input. 29 * The GrVkPipelineState implements what is specified in the GrPipeline and G rPrimitiveProcessor
30 * After successful generation, the builder result objects are available 30 * as input. After successful generation, the builder result objects are avai lable to be used.
31 * to be used.
32 * @return true if generation was successful. 31 * @return true if generation was successful.
33 */ 32 */
34 static GrVkProgram* CreateProgram(GrVkGpu*, 33 static GrVkPipelineState* CreatePipelineState(GrVkGpu*,
35 const GrPipeline&, 34 const GrPipeline&,
36 const GrPrimitiveProcessor&, 35 const GrPrimitiveProcessor&,
37 GrPrimitiveType, 36 GrPrimitiveType,
38 const GrVkProgramDesc&, 37 const GrVkPipelineState::Desc& ,
39 const GrVkRenderPass& renderPass); 38 const GrVkRenderPass& renderPa ss);
40 39
41 const GrCaps* caps() const override; 40 const GrCaps* caps() const override;
42 const GrGLSLCaps* glslCaps() const override; 41 const GrGLSLCaps* glslCaps() const override;
43 42
44 GrVkGpu* gpu() const { return fGpu; } 43 GrVkGpu* gpu() const { return fGpu; }
45 44
46 void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override; 45 void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override;
47 46
48 private: 47 private:
49 GrVkProgramBuilder(GrVkGpu*, 48 GrVkPipelineStateBuilder(GrVkGpu*,
50 const GrPipeline&, 49 const GrPipeline&,
51 const GrPrimitiveProcessor&, 50 const GrPrimitiveProcessor&,
52 const GrVkProgramDesc&); 51 const GrVkProgramDesc&);
53 52
54 GrVkProgram* finalize(GrPrimitiveType primitiveType, const GrVkRenderPass& r enderPass); 53 GrVkPipelineState* finalize(GrPrimitiveType primitiveType,
54 const GrVkRenderPass& renderPass,
55 const GrVkPipelineState::Desc&);
55 56
56 static bool CreateVkShaderModule(const GrVkGpu* gpu, 57 static bool CreateVkShaderModule(const GrVkGpu* gpu,
57 VkShaderStageFlagBits stage, 58 VkShaderStageFlagBits stage,
58 const GrGLSLShaderBuilder& builder, 59 const GrGLSLShaderBuilder& builder,
59 VkShaderModule* shaderModule, 60 VkShaderModule* shaderModule,
60 VkPipelineShaderStageCreateInfo* stageInfo) ; 61 VkPipelineShaderStageCreateInfo* stageInfo) ;
61 62
62 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; } 63 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; }
63 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; } 64 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; }
64 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } 65 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; }
65 66
66 GrVkGpu* fGpu; 67 GrVkGpu* fGpu;
67 GrVkVaryingHandler fVaryingHandler; 68 GrVkVaryingHandler fVaryingHandler;
68 GrVkUniformHandler fUniformHandler; 69 GrVkUniformHandler fUniformHandler;
69 70
70 typedef GrGLSLProgramBuilder INHERITED; 71 typedef GrGLSLProgramBuilder INHERITED;
71 }; 72 };
72 73
73 #endif 74 #endif
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkPipelineState.cpp ('k') | src/gpu/vk/GrVkPipelineStateBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698