aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/vk/GrVkPipelineState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/vk/GrVkPipelineState.cpp')
-rw-r--r--src/gpu/vk/GrVkPipelineState.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp
index 993f57d9e4..84aa68248c 100644
--- a/src/gpu/vk/GrVkPipelineState.cpp
+++ b/src/gpu/vk/GrVkPipelineState.cpp
@@ -19,6 +19,7 @@
#include "GrVkImageView.h"
#include "GrVkMemory.h"
#include "GrVkPipeline.h"
+#include "GrVkPipelineLayout.h"
#include "GrVkSampler.h"
#include "GrVkTexelBuffer.h"
#include "GrVkTexture.h"
@@ -45,7 +46,7 @@ GrVkPipelineState::GrVkPipelineState(
std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fragmentProcessors,
int fragmentProcessorCnt)
: fPipeline(pipeline)
- , fPipelineLayout(layout)
+ , fPipelineLayout(new GrVkPipelineLayout(layout))
, fUniformDescriptorSet(nullptr)
, fSamplerDescriptorSet(nullptr)
, fTexelBufferDescriptorSet(nullptr)
@@ -119,10 +120,8 @@ void GrVkPipelineState::freeGPUResources(const GrVkGpu* gpu) {
}
if (fPipelineLayout) {
- GR_VK_CALL(gpu->vkInterface(), DestroyPipelineLayout(gpu->device(),
- fPipelineLayout,
- nullptr));
- fPipelineLayout = VK_NULL_HANDLE;
+ fPipelineLayout->unref(gpu);
+ fPipelineLayout = nullptr;
}
if (fGeometryUniformBuffer) {
@@ -153,10 +152,15 @@ void GrVkPipelineState::freeGPUResources(const GrVkGpu* gpu) {
}
void GrVkPipelineState::abandonGPUResources() {
- fPipeline->unrefAndAbandon();
- fPipeline = nullptr;
+ if (fPipeline) {
+ fPipeline->unrefAndAbandon();
+ fPipeline = nullptr;
+ }
- fPipelineLayout = VK_NULL_HANDLE;
+ if (fPipelineLayout) {
+ fPipelineLayout->unrefAndAbandon();
+ fPipelineLayout = nullptr;
+ }
fGeometryUniformBuffer->abandon();
fFragmentUniformBuffer->abandon();