| /* |
| * 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> VulkanFramebuffer::Make(const VulkanSharedContext* context, |
| const VkFramebufferCreateInfo& framebufferInfo) { |
| VkFramebuffer framebuffer; |
| VkResult result; |
| VULKAN_CALL_RESULT(context->interface(), result, |
| CreateFramebuffer(context->device(), |
| &framebufferInfo, |
| nullptr, |
| &framebuffer)); |
| if (result != VK_SUCCESS) { |
| return nullptr; |
| } |
| return sk_sp<VulkanFramebuffer>(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 |