/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "src/gpu/graphite/vk/VulkanFramebuffer.h" #include "src/gpu/graphite/vk/VulkanSharedContext.h" namespace skgpu::graphite { sk_sp VulkanFramebuffer::Make(const VulkanSharedContext* context, const VkFramebufferCreateInfo& framebufferInfo) { VkFramebuffer framebuffer; VkResult result; VULKAN_CALL_RESULT( context, result, CreateFramebuffer(context->device(), &framebufferInfo, nullptr, &framebuffer)); if (result != VK_SUCCESS) { return nullptr; } return sk_sp(new VulkanFramebuffer(context, framebuffer)); } VulkanFramebuffer::VulkanFramebuffer(const VulkanSharedContext* context, VkFramebuffer framebuffer) : Resource(context, Ownership::kOwned, skgpu::Budgeted::kYes, /*gpuMemorySize=*/0) , fSharedContext(context) , fFramebuffer(framebuffer) {} void VulkanFramebuffer::freeGpuData() { VULKAN_CALL(fSharedContext->interface(), DestroyFramebuffer(fSharedContext->device(), fFramebuffer, nullptr)); } } // namespace skgpu::graphite