1 // 2 // Copyright 2017 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 // ProgramPipelineVk.h: 7 // Defines the class interface for ProgramPipelineVk, implementing ProgramPipelineImpl. 8 // 9 10 #ifndef LIBANGLE_RENDERER_VULKAN_PROGRAMPIPELINEVK_H_ 11 #define LIBANGLE_RENDERER_VULKAN_PROGRAMPIPELINEVK_H_ 12 13 #include "libANGLE/renderer/ProgramPipelineImpl.h" 14 15 #include "libANGLE/renderer/vulkan/ContextVk.h" 16 #include "libANGLE/renderer/vulkan/ProgramExecutableVk.h" 17 #include "libANGLE/renderer/vulkan/ProgramVk.h" 18 19 namespace rx 20 { 21 22 class ProgramPipelineVk : public ProgramPipelineImpl 23 { 24 public: 25 ProgramPipelineVk(const gl::ProgramPipelineState &state); 26 ~ProgramPipelineVk() override; 27 28 void destroy(const gl::Context *context) override; 29 void reset(ContextVk *contextVk); 30 getExecutable()31 const ProgramExecutableVk *getExecutable() const 32 { 33 return vk::GetImpl(&mState.getExecutable()); 34 } getExecutable()35 ProgramExecutableVk *getExecutable() { return vk::GetImpl(&mState.getExecutable()); } 36 37 angle::Result link(const gl::Context *glContext, 38 const gl::ProgramMergedVaryings &mergedVaryings, 39 const gl::ProgramVaryingPacking &varyingPacking) override; 40 }; 41 42 } // namespace rx 43 44 #endif // LIBANGLE_RENDERER_VULKAN_PROGRAMPIPELINEVK_H_ 45