MythTV master
mythuniformbuffervulkan.cpp
Go to the documentation of this file.
1// MythTV
3
5{
6 auto* result = new MythUniformBufferVulkan(Vulkan, Size);
7 if (result && !result->IsValidVulkan())
8 {
9 delete result;
10 result = nullptr;
11 }
12 return result;
13}
14
16 : MythVulkanObject(Vulkan),
17 m_bufferSize(Size)
18{
19 if (m_vulkanValid && m_vulkanRender->CreateBuffer(Size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
20 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
22 {
23 m_vulkanValid = m_vulkanFuncs->vkMapMemory(m_vulkanDevice, m_bufferMemory, 0, Size, 0, &m_mappedMemory) == VK_SUCCESS;
24 }
25}
26
28{
29 if (m_vulkanValid)
30 {
31 m_vulkanFuncs->vkDestroyBuffer(m_vulkanDevice, m_buffer, nullptr);
32 m_vulkanFuncs->vkFreeMemory(m_vulkanDevice, m_bufferMemory, nullptr);
33 }
34}
35
36VkDeviceSize MythUniformBufferVulkan::Size(void) const
37{
38 return m_bufferSize;
39}
40
41VkDescriptorBufferInfo MythUniformBufferVulkan::GetBufferInfo(void) const
42{
43 return { m_buffer, 0, VK_WHOLE_SIZE };
44}
45
47{
48 if (Source)
50}
bool CreateBuffer(VkDeviceSize Size, VkBufferUsageFlags Usage, VkMemoryPropertyFlags Properties, VkBuffer &Buffer, VkDeviceMemory &Memory)
static MythUniformBufferVulkan * Create(MythVulkanObject *Vulkan, VkDeviceSize Size)
VkDeviceSize Size(void) const
MythUniformBufferVulkan(MythVulkanObject *Vulkan, VkDeviceSize Size)
VkDescriptorBufferInfo GetBufferInfo(void) const
QVulkanDeviceFunctions * m_vulkanFuncs
MythRenderVulkan * m_vulkanRender