xref: /aosp_15_r20/external/skia/src/gpu/graphite/vk/VulkanFramebuffer.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2 * Copyright 2023 Google LLC
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 #include "src/gpu/graphite/vk/VulkanFramebuffer.h"
9 
10 #include "src/gpu/graphite/vk/VulkanSharedContext.h"
11 
12 namespace skgpu::graphite {
13 
Make(const VulkanSharedContext * context,const VkFramebufferCreateInfo & framebufferInfo)14 sk_sp<VulkanFramebuffer> VulkanFramebuffer::Make(const VulkanSharedContext* context,
15                                                  const VkFramebufferCreateInfo& framebufferInfo) {
16     VkFramebuffer framebuffer;
17     VkResult result;
18     VULKAN_CALL_RESULT(
19             context,
20             result,
21             CreateFramebuffer(context->device(), &framebufferInfo, nullptr, &framebuffer));
22     if (result != VK_SUCCESS) {
23         return nullptr;
24     }
25     return sk_sp<VulkanFramebuffer>(new VulkanFramebuffer(context, framebuffer));
26 }
27 
VulkanFramebuffer(const VulkanSharedContext * context,VkFramebuffer framebuffer)28 VulkanFramebuffer::VulkanFramebuffer(const VulkanSharedContext* context, VkFramebuffer framebuffer)
29         : Resource(context,
30                    Ownership::kOwned,
31                    skgpu::Budgeted::kYes,
32                    /*gpuMemorySize=*/0)
33         , fSharedContext(context)
34         , fFramebuffer(framebuffer) {}
35 
freeGpuData()36 void VulkanFramebuffer::freeGpuData() {
37     VULKAN_CALL(fSharedContext->interface(),
38                 DestroyFramebuffer(fSharedContext->device(), fFramebuffer, nullptr));
39 }
40 
41 } // namespace skgpu::graphite
42