1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef GrVkPipeline_DEFINED 9 #define GrVkPipeline_DEFINED 10 11 #include "GrTypes.h" 12 13 #include "GrVkResource.h" 14 15 #include "vulkan/vulkan.h" 16 17 class GrNonInstancedVertices; 18 class GrPipeline; 19 class GrPrimitiveProcessor; 20 class GrVkGpu; 21 class GrVkRenderPass; 22 23 class GrVkPipeline : public GrVkResource { 24 public: 25 static GrVkPipeline* Create(GrVkGpu* gpu, 26 const GrPipeline& pipeline, 27 const GrPrimitiveProcessor& primProc, 28 VkPipelineShaderStageCreateInfo* shaderStageInfo, 29 int shaderStageCount, 30 GrPrimitiveType primitiveType, 31 const GrVkRenderPass& renderPass, 32 VkPipelineLayout layout); 33 pipeline()34 VkPipeline pipeline() const { return fPipeline; } 35 36 private: GrVkPipeline(VkPipeline pipeline)37 GrVkPipeline(VkPipeline pipeline) : INHERITED(), fPipeline(pipeline) {} 38 39 GrVkPipeline(const GrVkPipeline&); 40 GrVkPipeline& operator=(const GrVkPipeline&); 41 42 void freeGPUData(const GrVkGpu* gpu) const override; 43 44 VkPipeline fPipeline; 45 46 typedef GrVkResource INHERITED; 47 }; 48 49 #endif 50