| 64 | #endif |
| 65 | |
| 66 | Buffer::Buffer(DeviceState& dev_data, VkBuffer handle, const VkBufferCreateInfo* pCreateInfo) |
| 67 | : Bindable(handle, kVulkanObjectTypeBuffer, (pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) != 0, |
| 68 | (pCreateInfo->flags & VK_BUFFER_CREATE_PROTECTED_BIT) == 0, GetExternalHandleTypes(pCreateInfo)), |
| 69 | safe_create_info(pCreateInfo), |
| 70 | create_info(*safe_create_info.ptr()), |
| 71 | requirements(GetMemoryRequirements(dev_data, handle)), |
| 72 | usage(GetBufferUsageFlags(create_info)), |
| 73 | supported_video_profiles(dev_data.video_profile_cache_.Get( |
| 74 | dev_data.physical_device, vku::FindStructInPNextChain<VkVideoProfileListInfoKHR>(pCreateInfo->pNext))) { |
| 75 | if (pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) { |
| 76 | tracker_.emplace<BindableSparseMemoryTracker>(&requirements, |
| 77 | (pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) != 0); |
| 78 | SetMemoryTracker(&std::get<BindableSparseMemoryTracker>(tracker_)); |
| 79 | } else { |
| 80 | tracker_.emplace<BindableLinearMemoryTracker>(&requirements); |
| 81 | SetMemoryTracker(&std::get<BindableLinearMemoryTracker>(tracker_)); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | void Buffer::Destroy() { |
| 86 | if (!Destroyed()) { |
no test coverage detected