| OLD | NEW |
| 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 #include "vk/GrVkPipelineStateBuilder.h" | 8 #include "vk/GrVkPipelineStateBuilder.h" |
| 9 | 9 |
| 10 #include "vk/GrVkDescriptorSetManager.h" | 10 #include "vk/GrVkDescriptorSetManager.h" |
| 11 #include "vk/GrVkGpu.h" | 11 #include "vk/GrVkGpu.h" |
| 12 #include "vk/GrVkRenderPass.h" | 12 #include "vk/GrVkRenderPass.h" |
| 13 | 13 |
| 14 GrVkPipelineState* GrVkPipelineStateBuilder::CreatePipelineState( | 14 GrVkPipelineState* GrVkPipelineStateBuilder::CreatePipelineState( |
| 15 GrVkGpu* gpu, | 15 GrVkGpu* gpu, |
| 16 const GrPipeline&
pipeline, | 16 const GrPipeline&
pipeline, |
| 17 const GrStencilSe
ttings& stencil, |
| 17 const GrPrimitive
Processor& primProc, | 18 const GrPrimitive
Processor& primProc, |
| 18 GrPrimitiveType p
rimitiveType, | 19 GrPrimitiveType p
rimitiveType, |
| 19 const GrVkPipelin
eState::Desc& desc, | 20 const GrVkPipelin
eState::Desc& desc, |
| 20 const GrVkRenderP
ass& renderPass) { | 21 const GrVkRenderP
ass& renderPass) { |
| 21 // create a builder. This will be handed off to effects so they can use it
to add | 22 // create a builder. This will be handed off to effects so they can use it
to add |
| 22 // uniforms, varyings, textures, etc | 23 // uniforms, varyings, textures, etc |
| 23 GrVkPipelineStateBuilder builder(gpu, pipeline, primProc, desc); | 24 GrVkPipelineStateBuilder builder(gpu, pipeline, primProc, desc); |
| 24 | 25 |
| 25 GrGLSLExpr4 inputColor; | 26 GrGLSLExpr4 inputColor; |
| 26 GrGLSLExpr4 inputCoverage; | 27 GrGLSLExpr4 inputCoverage; |
| 27 | 28 |
| 28 if (!builder.emitAndInstallProcs(&inputColor, &inputCoverage)) { | 29 if (!builder.emitAndInstallProcs(&inputColor, &inputCoverage)) { |
| 29 builder.cleanupFragmentProcessors(); | 30 builder.cleanupFragmentProcessors(); |
| 30 return nullptr; | 31 return nullptr; |
| 31 } | 32 } |
| 32 | 33 |
| 33 return builder.finalize(primitiveType, renderPass, desc); | 34 return builder.finalize(stencil, primitiveType, renderPass, desc); |
| 34 } | 35 } |
| 35 | 36 |
| 36 GrVkPipelineStateBuilder::GrVkPipelineStateBuilder(GrVkGpu* gpu, | 37 GrVkPipelineStateBuilder::GrVkPipelineStateBuilder(GrVkGpu* gpu, |
| 37 const GrPipeline& pipeline, | 38 const GrPipeline& pipeline, |
| 38 const GrPrimitiveProcessor& p
rimProc, | 39 const GrPrimitiveProcessor& p
rimProc, |
| 39 const GrProgramDesc& desc) | 40 const GrProgramDesc& desc) |
| 40 : INHERITED(pipeline, primProc, desc) | 41 : INHERITED(pipeline, primProc, desc) |
| 41 , fGpu(gpu) | 42 , fGpu(gpu) |
| 42 , fVaryingHandler(this) | 43 , fVaryingHandler(this) |
| 43 , fUniformHandler(this) { | 44 , fUniformHandler(this) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 66 SkString shaderString; | 67 SkString shaderString; |
| 67 for (int i = 0; i < builder.fCompilerStrings.count(); ++i) { | 68 for (int i = 0; i < builder.fCompilerStrings.count(); ++i) { |
| 68 if (builder.fCompilerStrings[i]) { | 69 if (builder.fCompilerStrings[i]) { |
| 69 shaderString.append(builder.fCompilerStrings[i]); | 70 shaderString.append(builder.fCompilerStrings[i]); |
| 70 shaderString.append("\n"); | 71 shaderString.append("\n"); |
| 71 } | 72 } |
| 72 } | 73 } |
| 73 return GrCompileVkShaderModule(gpu, shaderString.c_str(), stage, shaderModul
e, stageInfo); | 74 return GrCompileVkShaderModule(gpu, shaderString.c_str(), stage, shaderModul
e, stageInfo); |
| 74 } | 75 } |
| 75 | 76 |
| 76 GrVkPipelineState* GrVkPipelineStateBuilder::finalize(GrPrimitiveType primitiveT
ype, | 77 GrVkPipelineState* GrVkPipelineStateBuilder::finalize(const GrStencilSettings& s
tencil, |
| 78 GrPrimitiveType primitiveT
ype, |
| 77 const GrVkRenderPass& rend
erPass, | 79 const GrVkRenderPass& rend
erPass, |
| 78 const GrVkPipelineState::D
esc& desc) { | 80 const GrVkPipelineState::D
esc& desc) { |
| 79 VkDescriptorSetLayout dsLayout[2]; | 81 VkDescriptorSetLayout dsLayout[2]; |
| 80 VkPipelineLayout pipelineLayout; | 82 VkPipelineLayout pipelineLayout; |
| 81 VkShaderModule vertShaderModule; | 83 VkShaderModule vertShaderModule; |
| 82 VkShaderModule fragShaderModule; | 84 VkShaderModule fragShaderModule; |
| 83 | 85 |
| 84 GrVkResourceProvider& resourceProvider = fGpu->resourceProvider(); | 86 GrVkResourceProvider& resourceProvider = fGpu->resourceProvider(); |
| 85 // This layout is not owned by the PipelineStateBuilder and thus should no b
e destroyed | 87 // This layout is not owned by the PipelineStateBuilder and thus should no b
e destroyed |
| 86 dsLayout[GrVkUniformHandler::kUniformBufferDescSet] = resourceProvider.getUn
iformDSLayout(); | 88 dsLayout[GrVkUniformHandler::kUniformBufferDescSet] = resourceProvider.getUn
iformDSLayout(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 &vertShaderModule, | 124 &vertShaderModule, |
| 123 &shaderStageInfo[0])); | 125 &shaderStageInfo[0])); |
| 124 | 126 |
| 125 SkAssertResult(CreateVkShaderModule(fGpu, | 127 SkAssertResult(CreateVkShaderModule(fGpu, |
| 126 VK_SHADER_STAGE_FRAGMENT_BIT, | 128 VK_SHADER_STAGE_FRAGMENT_BIT, |
| 127 fFS, | 129 fFS, |
| 128 &fragShaderModule, | 130 &fragShaderModule, |
| 129 &shaderStageInfo[1])); | 131 &shaderStageInfo[1])); |
| 130 | 132 |
| 131 GrVkPipeline* pipeline = resourceProvider.createPipeline(fPipeline, | 133 GrVkPipeline* pipeline = resourceProvider.createPipeline(fPipeline, |
| 134 stencil, |
| 132 fPrimProc, | 135 fPrimProc, |
| 133 shaderStageInfo, | 136 shaderStageInfo, |
| 134 2, | 137 2, |
| 135 primitiveType, | 138 primitiveType, |
| 136 renderPass, | 139 renderPass, |
| 137 pipelineLayout); | 140 pipelineLayout); |
| 138 GR_VK_CALL(fGpu->vkInterface(), DestroyShaderModule(fGpu->device(), vertShad
erModule, | 141 GR_VK_CALL(fGpu->vkInterface(), DestroyShaderModule(fGpu->device(), vertShad
erModule, |
| 139 nullptr)); | 142 nullptr)); |
| 140 GR_VK_CALL(fGpu->vkInterface(), DestroyShaderModule(fGpu->device(), fragShad
erModule, | 143 GR_VK_CALL(fGpu->vkInterface(), DestroyShaderModule(fGpu->device(), fragShad
erModule, |
| 141 nullptr)); | 144 nullptr)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 160 fUniformHandles, | 163 fUniformHandles, |
| 161 fUniformHandler.fUniforms, | 164 fUniformHandler.fUniforms, |
| 162 fUniformHandler.fCurrentVertexUBOOffset, | 165 fUniformHandler.fCurrentVertexUBOOffset, |
| 163 fUniformHandler.fCurrentFragmentUBOOffset, | 166 fUniformHandler.fCurrentFragmentUBOOffset, |
| 164 (uint32_t)fUniformHandler.numSamplers(), | 167 (uint32_t)fUniformHandler.numSamplers(), |
| 165 fGeometryProcessor, | 168 fGeometryProcessor, |
| 166 fXferProcessor, | 169 fXferProcessor, |
| 167 fFragmentProcessors); | 170 fFragmentProcessors); |
| 168 } | 171 } |
| 169 | 172 |
| OLD | NEW |