blob: e1c946a7e73aa2f06f28175554994668662d55c5 [file] [log] [blame]
Greg Daniel164a9f02016-02-22 09:56:40 -05001/*
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
17class GrNonInstancedVertices;
18class GrPipeline;
19class GrPrimitiveProcessor;
20class GrVkGpu;
21class GrVkRenderPass;
22
23class GrVkPipeline : public GrVkResource {
24public:
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,
jvanverth03509ea2016-03-02 13:19:47 -080032 VkPipelineLayout layout,
33 VkPipelineCache cache);
Greg Daniel164a9f02016-02-22 09:56:40 -050034
35 VkPipeline pipeline() const { return fPipeline; }
36
37private:
38 GrVkPipeline(VkPipeline pipeline) : INHERITED(), fPipeline(pipeline) {}
39
40 GrVkPipeline(const GrVkPipeline&);
41 GrVkPipeline& operator=(const GrVkPipeline&);
42
43 void freeGPUData(const GrVkGpu* gpu) const override;
44
45 VkPipeline fPipeline;
46
47 typedef GrVkResource INHERITED;
48};
49
50#endif