blob: 46f53a79741f08df19d67e3af3056f206acefee7 [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;
egdaniel470d77a2016-03-18 12:50:27 -070020class GrVkCommandBuffer;
Greg Daniel164a9f02016-02-22 09:56:40 -050021class GrVkGpu;
22class GrVkRenderPass;
23
24class GrVkPipeline : public GrVkResource {
25public:
26 static GrVkPipeline* Create(GrVkGpu* gpu,
27 const GrPipeline& pipeline,
28 const GrPrimitiveProcessor& primProc,
29 VkPipelineShaderStageCreateInfo* shaderStageInfo,
30 int shaderStageCount,
31 GrPrimitiveType primitiveType,
32 const GrVkRenderPass& renderPass,
jvanverth03509ea2016-03-02 13:19:47 -080033 VkPipelineLayout layout,
34 VkPipelineCache cache);
Greg Daniel164a9f02016-02-22 09:56:40 -050035
36 VkPipeline pipeline() const { return fPipeline; }
37
egdaniel470d77a2016-03-18 12:50:27 -070038 static void SetDynamicState(GrVkGpu*, GrVkCommandBuffer*, const GrPipeline&);
39
40
Greg Daniel164a9f02016-02-22 09:56:40 -050041private:
42 GrVkPipeline(VkPipeline pipeline) : INHERITED(), fPipeline(pipeline) {}
43
44 GrVkPipeline(const GrVkPipeline&);
45 GrVkPipeline& operator=(const GrVkPipeline&);
46
47 void freeGPUData(const GrVkGpu* gpu) const override;
48
49 VkPipeline fPipeline;
50
51 typedef GrVkResource INHERITED;
52};
53
54#endif