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